我在ejb容器中有一个无状态会话bean。如果我从jsf2表单调用它,它工作正常,但如果我再次回忆它,它会显示我之前插入的相同数据。即使我关闭并重新打开浏览器也会发生这种情况。我必须等几分钟,直到表单显示空字段。 不会为每个请求重新创建无状态会话Bean。它表现得像一个有状态的。怎么了?
应用程序服务器:Glassfish 3.0.1
答案 0 :(得分:2)
我最初的问题是:EJB3 + Struts2。 Struts为每个请求创建新的会话bean,即使它是有状态的。
Struts本身并没有做任何事情,它只做你告诉他做的事情。我怀疑你只是在滥用东西。显示一些代码来说明问题可能有所帮助。
现在我发现JSF2为每个请求重用相同的会话bean,即使它是无状态的。
通常情况下,您可以获取无状态会话Bean(SLSB)的任何实例。即使由于某些原因你在你的特定情况下得到相同的实例(可能是因为bean池配置),这在使用SLSB时根本不应该是一个问题,你应该不关心你获得了什么样的实例,当然不依赖于实例的状态(因为它们是无状态的)。
回到你的问题,我怀疑你是在滥用SLSB并期待那些不正确的事情:
答案 1 :(得分:0)
无状态会话bean不是 为每个请求重新创建。
这不是一个正确的术语。没有保证为每个请求创建无状态bean的新实例。
容器将出于性能原因汇集一些无状态bean的实例。
池化实例的数量取决于容器配置。