如何使Web服务线程安全?

时间:2012-04-13 05:33:43

标签: java-ee

Web服务是Servlet的内部实现。并且web / app服务器将通过新线程为每个新请求提供服务。

这意味着内部Web服务'每个请求都将在新线程中提供。现在考虑这个服务有多个消费者。所有消费者都有可能同时向提供商发送请求。这意味着这个Web服务实现需要线程安全来应对这种情况。

已经知道,没有成员变量使Web服务线程安全。但是,我需要使用成员变量,这些变量是通过spring bean注入的。

有关如何使其线程安全的任何建议吗?

编辑:

根据定义,如果class1,一个线程安全类正在使用另一个不是线程安全的类对象,则class1将更加线程安全。

我的观点是使用spring beans已经完成了我的服务,现在,想让它们线程安全。对此有任何建议。

无法想到请求范围,因为在内部它使用jms消息而不是http请求和响应。关于这个的任何想法?

1 个答案:

答案 0 :(得分:2)

由于你的调用是通过spring bean发生的,你需要创建一个spring bean来请求scoped bean。这就是你如何从spring API创建这样的bean。http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes-request.The请求bean的实现是线程安全的,它使用ThreadLocal对象内部实现它。

此处还有一个有趣的主题可以解决这个问题。

Should I put my ThreadLocals in a spring-injected singleton?

希望这对你有所帮助。