0

我对如何在独立的 java 应用程序中处理 http 会话感到困惑。以下是详细信息:

java 客户端连接到 3 个 tomcat 7 servlet。当客户端启动时,它会启动 2 个预定线程 /downloader 和 uploader/每 3 分钟轮询 2 个 servlet。他们都在各自类的私有字段中检索和存储 jsessionid cookie。这导致在 webapp 的整个生命周期中重复使用 2 个 Tomcat 会话。到目前为止,一切都很好。

有第 3 个服务/连接到第 3 个 servlet/ 使用线程“WebDispather”类的多个实例,该类与上述线程类似地检索和存储会话,但这次 - 在私有静态字段中。调度程序被大量使用,可能有多达 150 个实例同时运行,具体取决于负载。Dispatcher 线程每隔一秒左右就会碰到 servlet。

使调度程序 sessionid 字段非静态会为每个实例创建一个会话 - 不好。

将所有调度程序线程绑定到同一个 tomcat http 会话有什么含义?

谢谢


编辑:虽然dispather线程绑定到同一个会话,但会话本身不包含任何信息。Servlet 只处理请求参数。即调度员1:

localhost/messagecontrol?id=123&state

调度程序线程 2:localhost/messagecontrol?id=123&state=finished

//Servlet 处理并忘记 id 和 state

4

1 回答 1

0

据我所知,这意味着所有客户端线程都将共享相同的会话信息,如果有任何不打算共享的信息,这将是您代码上的错误

如果您担心创建的线程数量(性能方面),请考虑在代码中实现线程池

于 2012-12-14T00:17:22.630 回答