繁体   English   中英

是否可以每次为struts 1.x动作类创建一个新实例?

[英]Can we create a new instance for struts 1.x action classes each time?

struts 1.x的操作类本质上不是线程安全的,因为struts缓存了操作类并将其用于其他请求。

有没有什么方法可以配置struts 1.x动作类,每次都创建一个动作类的新实例?

如果可能的话,这样做有没有不利之处?

最终,当然答案是肯定的:你可以获得Struts 1的完整源代码并将其转换为不打算成为的东西。

应该 几乎肯定不是。 如果您决定采用此方法,请从RequestProcessor.processActionCreate开始。

我和布拉德在一起,但会更强一些:你要做的是一个坏主意。 使用会话上下文,应用程序上下文,线程本地,同步等,因为该框架是要使用的。

通过超出框架的意图,您可以承担一定的技术风险,这些风险应该与您有关。 Struts 1中的任何内容都没有使用每个请求的操作进行测试,因为这不是框架的构建方式。 它可能会奏效。 它可能会失败。 它可能看起来像是在工作。 一阵子。 直到它没有,你被搞砸了。

IMO会更好地使用设计的框架。 你想解决什么问题? 可能有一个更好的解决方案,至少不需要完整的发布周期来审查修改后的框架的功能。

不要这样做。 正如你所说,它们不是线程安全的。

如果需要为用户保持状态,请将数据存储在数据库中,并将查找键值存储在用户的HTTP_SESSION中。 如果(并且仅当)您需要更好的性能,您可以引入缓存策略。

如果您只想为每个请求存储一些数据,并且不想或不能使用HTTP_SESSION,则可以考虑使用ThreadLocal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM