当前位置: 首页 > 知识库问答 >
问题:

JSF/CDI会话作用域bean损坏

包永新
2023-03-14

恐怕这个问题会有点模糊,但这是...

我们注意到我们的JEE7 web应用程序中存在一些非常奇怪的、偶然的行为。有时,用户页面会突然开始显示来自完全不同用户会话的数据!到目前为止,我还没有能够复制这种现象,也没有在日志中找到任何问题的迹象,但是似乎一个用户的页面开始显示存储在@SessionScoped CDIBean中的数据,该CDIBean应该属于另一个用户的会话。

这种行为对任何人都有影响吗?关于从哪里开始寻找、记录或研究有什么想法吗?

我们的应用程序使用Glassfish 4的SSO系统。我们正在使用JSF facelets、CDI支持bean和JPA实体。所有参考实现。都非常接近最新版本。

我们最近还介绍了几个简单的基于SOAP的Web服务。与我们遇到麻烦的领域没有密切联系,但也许值得一提。

非常感谢任何指点或想法。

共有1个答案

松和安
2023-03-14

我恐怕不能回答你的问题,但我不能对你的问题发表评论。

我们正在体验您在Glassfish 4上的JEE7 web应用程序中描述的确切行为。在我的SO帖子中,我描述了我们是如何追踪这个问题并找到绕过它的方法的。你有没有找到线索,或者甚至是解决这个问题的办法?

 类似资料:
  • MyCart.java 这个MyCart Bean是每个HTTP会话实例化的名为CDI的Bean。 抽象类 问题描述 仅用于理解会话范围的CDI。我有两个JSP文件,如下所示 SetCDIBeanValue.jsp其中,我将获得命名会话CDI Bean(MyCart)的实例将It String属性的值设置为String值FROM_FIRST_JSP 因为这个会话的作用域是有限的,所以我想应该只有一

  • 我有一个CDI bean,定义如下: 现在,我想以编程方式将其从会话范围中删除: 但是变量始终为空。如何检索实例并销毁它?

  • 我正在尝试在我的应用程序中实现注销,因此我做了以下操作: 但是当我检查用户是否登录时,它说是: 我错过什么了吗?在使会话无效后,我是否应该获得一个新的AuthorizedUser实例(sessionScoped)? 编辑:如果有人需要,添加getHandler;)

  • 我有一个关于会话范围的CDIBeans的生命周期的问题 据我所知,会话范围的CDIBean在会话启动时由容器构造,在会话结束时由容器销毁。在销毁bean之前,将调用@PreDestroy方法,如下所述https://docs.oracle.com/javaee/6/tutorial/doc/gmgkd.html.它还说用这种方法释放资源 在JSF应用程序中,我构建时遇到内存泄漏,因为bean似乎没

  • 我正在学习j2ee,如果问题看起来很基本请原谅。 在httpsession中,会话ID存储在客户端,与之相关的数据存储在服务器端。 现在,当我在POJO上使用CDI@SessionScoped时,这是否意味着EJB容器(?)在会话中存储pojo。(Session.SetAttribute(POJO)) CDI可以区分SFB、SLB和POJO吗?

  • 我在JBoss EAP 6上使用Java EE 6,我的JSF bean注释如下:(都来自包) 但是,它们也是CDI bean(默认构造函数,使用、等)。我一直读到不能混合这些注释(JSF和CDI),但它显然工作得很好:注入工作正常,视图更改时调用preDestroy等)。 我是不是漏掉了什么?问题出在哪里?为什么不用呢?