如何在无状态会话 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 中创建多线程?的主要内容,如果未能解决你的问题,请参考以下文章

转:MFC中创建多线程

VB中的多线程

何时在无状态会话 bean 上使用有状态会话 bean?

在条件下在无状态会话 Bean 中注入特定的 EntityManager

C# 中如何做多线程的串口通讯?

C#中构建多线程应用程序