Struts 2的动作是否安全?

时间:2014-05-02 05:27:55

标签: java http web-applications struts2 thread-safety

它说自从Struts 2动作bean被初始化后,每个请求都是线程安全的。但是如果几个线程在同一个HTTP请求中使用这个bean呢?所以除非我们以线程安全的方式编写bean,否则它不是真正的线程安全吗?

下面是struts 2 docs在比较Struts 1和Struts 2时的说法,

Struts 2 Action objects are instantiated for each request, so there are no thread-safety issues

struts 2 documentation

我的dought甚至Struts 2 Action对象是为每个请求实例化的还是它的线程安全吗?

3 个答案:

答案 0 :(得分:2)

在我看来,使用servlet技术设计了一个Web应用程序。 Struts2支持servlet规范至少2.4。 Web服务器使用HTTP协议与客户端通信,并管理线程。而且您知道容器每个请求创建的线程不超过一个。该框架不会创建除BackgroundProcess之外的任何线程,并且它看起来像是以线程安全的方式执行它。您不负责管理操作bean,框架正在为您执行此操作。因此,如果它声称它的线程安全,你可以相信它,或者如果你有相反的证据就会妥协。根据此信息,您可以得出结论,您可以使用线程安全的托管bean。

答案 1 :(得分:0)

对于每个请求,都会创建Action类的新实例。所以struts 2 action class没有线程安全问题。

答案 2 :(得分:0)

是的,它是线程安全的。

  

Struts1操作类是Singleton且不是线程安全的,因此在开发人员方面要格外小心,以避免由于多线程而产生任何副作用。每个请求都会实例化Struts2动作类,因此没有多线程,并且使它们成为线程安全的。

     

Blockquote