我们有一种情况,大约有 450 个远程 EJB 客户端需要连接到 Java EE 服务器(OpenEJB 3.1.4 容器)。不存在 HTTP 服务器。
我们注意到,在一些客户端上线后,服务器开始抛出 javax.ejb.ConcurrentAccessTimeoutException。
文档说这是由于尝试在方法中同时访问有状态会话 bean 或单例 bean 时超时引起的。我们实际上都使用了两者,但很难弄清楚超时的好值可能是多少。
如果该值很高,我们会得到更少的 ConcurrentAccessTimeoutExceptions,但很多客户端只是开始永远挂在那里。如果该值较低,则会引发大量 ConcurrentAccessTimeoutExceptions。
所有 450 个客户端在启动时建立与服务器的连接(因为连接时间太长而无法按需建立)并永远保持它。
现在,除此之外,还有另一个问题。每个客户端以 2 秒的间隔不断地轮询服务器。我们可以改变这种行为,但我们必须调整架构。
是否有研究或任何有许多客户端连接到 Java EE 服务器的经验的人?
我们可以设计任何需要的东西,但我们希望有一个更具体的目标。