![](/img/trans.png)
[英]RxJava: How can I wrap a multi-step operation, returning the step complete to observers?
[英]Can Servlets have multi-step interactions?
有什么方法可以开始执行Java Servlet代码(特别是在Websphere Application Server中)(一个会话,该Servlet上有一个线程),然后暂停以从各个点从调用客户端获取更多信息? 我要求当前会话和进行中的Servlet线程在指定之前都不会消失,而应一直等待(打开)来自客户端的信息。
这种正在进行的对话可能吗? 还是只能启动对“ doPost”的Servlet调用-然后Servlet忽略客户端,直到它完成?
如建议的那样,我将使用存储在会话中的对象来维护所需的状态。 如果您需要采取某些措施来将会话超时时间延长到Webapp默认值之外,还可以使用HttpSession
API中的以下方法来逐个Servlet修改会话:
public void setMaxInactiveInterval(int interval)
指定客户端请求之间servlet容器使该会话无效之前的时间(以秒为单位)。 时间为负数表示会话永不超时。
您只需要为会话中的对象设置/检索建立逻辑。 通常是这样的:
HttpSession session = req.getSession();
MyBeanClass bean;
Object temp = null;
temp = session.getAttribute("myBean");
if(temp !=null) {
bean = (MyBeanClass) temp;
} else {
bean = new MyBeanClass();
}
// Logic
session.setAttribute("myBean", bean);
我没有直接这样做,但底层支持具有一定的相关码头的延续模型和Servlet的3.0挂起/恢复支持 。
像帖子描述一样工作的Web框架(实际上,它们是通过不同的连接恢复的)有时也称为基于Continuation-Based的框架 。 我不确定Java中是否有这样的框架(因为Java语言不利于此类模型),但是有两个众所周知的通用原理示例:
希望这是有用的。
您可以保存/更新请求之间的会话状态,当下一个请求到来时,您可以还原并继续执行您的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.