0

我有 JBoss 5,其中ejb3部署了 bean。

如果 bean 方法执行需要很长时间(我检查了 2 小时),那么当 EJB 方法执行完成时客户端不会收到答案(无论是否有异常)。

客户端被阻塞等待来自套接字的响应。

为什么会这样?

4

1 回答 1

2

这很可能是由(有状态的)路由器、数据包过滤器、负载平衡器、SSL 盒引起的:它们只是在一段时间不活动后终止连接,并且不会通知真正的端点。经验表明,在每个设备中设置适当的超时通常是您无法控制的。

无论如何,在您的情况下,而不是治愈症状:正在运行的请求需要打开的 TCP 连接,并且可能会阻塞线程。因此,请考虑将系统设计从同步更改为异步

  • 在这里使用轮询,每分钟应该足够了。所以你有一个提交任务的函数,另一个返回“尚未准备好”或“这是结果”的函数。
  • 在客户端中使用JMS 队列来提交任务和接收结果
于 2013-09-09T08:12:14.237 回答