我很困惑我应该如何在独立的Java应用程序中处理http会话。以下是详细信息:
java客户端连接到3个tomcat 7 servlet。 当客户端启动时,它每隔3分钟启动2个预定的线程/下载器和上传器/轮询2个servlet。它们都将jsessionid cookie检索并存储在各自类的私有字段中。 这导致tomcat中的2个会话在webapp的生命周期中重用。到目前为止一切都很好。
有第三个服务/连接到第三个servlet /使用线程“WebDispather”类的多个实例,它类似于上面提到的线程检索和存储会话,但这次 - 在私有静态字段中。 调度程序使用频繁,可能会有多达150个实例并发运行,具体取决于负载。调度程序线程大约一秒钟到达servlet。
使调度程序sessionid字段非静态会为每个实例创建一个会话 - 不好。
将所有调度程序线程绑定到同一个tomcat http会话有什么含义?
谢谢
编辑: 虽然调度线程绑定到同一会话,但会话本身不包含任何信息。 Servlet只处理请求参数。 即调度员1:
本地主机/ messagecontrol ID = 123&安培;状态
调度程序主题2: ?本地主机/ messagecontrol ID = 123&安培;状态=成品
// Servlet处理并忘记id和状态
答案 0 :(得分:0)
据我所知,所有客户端线程都会共享相同的会话信息,如果任何不想共享的信息,这将是您代码中的错误
如果您担心代码中创建的线程数(性能方面),consider implementing a thread pool。