spring - JSF 应用程序跨用户 session 数据

标签 spring jsf richfaces session-scope

我有一个棘手的 JSF 问题要解决。请注意,我是 JSF 和 Java 的新手....我有一个简单的应用程序,用户可以在其中登录,选择一些复选框,单击提交,在另一个页面上添加更多信息,保存到数据库并注销。

在我的生产环境中,我看到用户 session 数据被交叉或缓存并被后续用户 session 获取的实例。例如,用户 A 输入数据,然后用户 B 输入数据,在查看他的数据时,他看到了用户 A 输入的内容。当然,我无法在测试中重新创建它。

我正在使用 jsf 1.2._12、richfaces 3.3.2 和 spring 2.5.6。应用服务器是 JBoss 5。

我所有的 JSF 托管 bean 都是 session 范围的。这个特定的托管 bean 调用一个 spring bean 作为我的业务对象,它是 session 范围的,最终调用一个单例的 DAO。

这里是相关的faces-config信息

<managed-bean>
    <description>ContactBean</description>
    <managed-bean-name>ContactBean</managed-bean-name>
    <managed-bean-class>com.package.ContactBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>

    <managed-property>
        <property-name>dataElementBO</property-name>
        <value>#{dataElementBO}</value>
    </managed-property>

    <managed-property>
        <property-name>attributeBO</property-name>
        <value>#{attributeBO}</value>
    </managed-property>

    <managed-property>
        <property-name>dataElement2BO</property-name>
        <value>#{dataElement2BO}</value>
    </managed-property>

    <managed-property>
        <property-name>submissionBO</property-name>
        <value>#{submissionBO}</value>
    </managed-property>

    <managed-property>
        <property-name>selectedList</property-name>
        <property-class>java.util.ArrayList</property-class>
        <list-entries />
    </managed-property>

    <managed-property>
        <property-name>enteredContact</property-name>
        <property-class>java.util.ArrayList</property-class>
        <list-entries />
    </managed-property>
</managed-bean>

我的 spring bean 的 app-Context 被调用

<bean id="submissionBO" class="com.package.submissionBOImpl" scope="session">
    <property name="submissionDAO">
        <ref bean="submissionDAO" />
    </property>
</bean>

在查看我的网络服务器日志时,这个问题发生在用户 A 和 B 甚至没有同时登录的情况下。用户 A 注销,然后用户 B 在将近 20 分钟后登录。

我不明白 session 作用域 bean 的使用如何可能交叉到其他用户数据中……有什么我不明白这些作用域是如何作用的吗?如果需要,我可以附上一些模拟代码。提前致谢!

最佳答案

提交和审核页面是否使用相同的托管 bean?如果不是,您如何将数据传递到其他页面?

关于spring - JSF 应用程序跨用户 session 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950202/

相关文章:

java - 如何在模态面板中添加滚动?

Spring Integration DSL : How to add the HTTP. outboundGateway header ?

java - meme缓存和Ehcache到底是如何在服务器中存储数据的?

javascript - <富 :calendar> client side disable weekends

java - 是否可以在 JSF 中创建静态枚举对象?

java - 如何填充 richfaces 选择列表的右侧?

java - 在阅读主题后异步提交消息

java - @Secured 和@PreAuthorize 注解在哪些方法中起作用?

css - 在 richfaces 的 inplaceinput 组件中为 defaultLabel 属性设置文本颜色

com.sun.faces.renderkit.RenderKitUtils.getCommandLinkOnClickScript 处的 java.lang.NullPointerException