gpt4 book ai didi

spring - Struts 2 tomcat 请求/ session 污染

转载 作者:行者123 更新时间:2023-11-28 22:56:20 25 4
gpt4 key购买 nike

我正在使用 Struts 2 v 2.3.16.3 和 tomcat 6。

用户将单击一个通过 id 查找对象的操作,页面将显示它。我遇到了一个零星的错误,用户会突然从另一台机器上的另一个用户那里得到另一个查找的 ID。如此有效,他们都调用了相同的操作,但将不同的 ID 传递给请求,但最终都查看了相同的 ID。

这显然是灾难性的,数据完全损坏,因为两个用户都认为他们正在编辑不同的记录。任何想法如何确保 session /请求事件对每个 session 都是安全的?

我也在使用 spring 并在我的服务层中使用 @Transactional 注释,它从 DAO 返回对象。我需要对这个注释做些什么来确保它对每个 session 都是安全的吗?

我正在使用 org.springframework.orm.hibernate3.HibernateTransactionManager

最佳答案

经典的线程不安全问题。

由于您指定了 Spring,我的第一个猜测是您没有在 Spring xml 配置中为您的操作 bean 指定正确的范围。

请确保您使用的是 scope="prototype",否则 Spring 的默认范围是 Singleton,并且您不想要单个(吨)实例一个 Action,它将不再是 ThreadLocal(因此不再是 ThreadSafe)。

如果不是那个,它可能是something on an Interceptor (与 Action 不同,它不是线程安全的),或者您正在使用不应该是 static 的东西(在您的 Business/DAO 层中,或在 Action 本身中)。

关于spring - Struts 2 tomcat 请求/ session 污染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26342374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com