如何在无状态会话 bean 中创建多线程?
Posted
技术标签:
【中文标题】如何在无状态会话 bean 中创建多线程?【英文标题】:How to create multithreading in a stateless session bean? 【发布时间】:2012-11-08 11:21:57 【问题描述】:我已经使用 JAXWS 创建了 Web 服务,并将它作为无状态会话 bean 托管在 jboss6 中。 以下是网络服务代码:
@Stateless
@WebService(serviceName = "CommonSmsServices", name = "CommonSmsServices", wsdlLocation = "META-INF/wsdl/CommonSmsServices.wsdl", endpointInterface = "com.sms.webservice.common.CommonServices")
public class CommonServicesImpl implements CommonServicesLocal,CommonServicesRemote
//.....
// methods
//.....
这适用于单个 Http 会话。现在我在运行多个会话时遇到问题,响应时间变得非常慢。 我为内存和线程采样做了YourKit porfiling。内存利用率看起来不错。但在线程部分它显示一个 htpp 线程正在等待其他线程完成。
我还阅读了 Java EE 会话 bean 文档。它说会话 bean 是单线程的。同时处理多个 Http 会话的会话 bean 是否存在性能问题?
在 JBoss AS 6 中有没有办法或配置来提高我的 Web 服务性能?
【问题讨论】:
“无状态会话 bean”中的“会话”与您在“多个会话”中似乎引用的用户会话无关。另一方面,SSB 支持多线程,您无需付出任何努力。 我更新了我的应用问题。请调查一下。 【参考方案1】:在 EJB(包括无状态的)中,容器支持多线程。如果您希望将数据存储在不同的调用之间,您可能应该使用 Statefull bean;这也支持多线程。
【讨论】:
以上是关于如何在无状态会话 bean 中创建多线程?的主要内容,如果未能解决你的问题,请参考以下文章