gpt4 book ai didi

jakarta-ee - 为什么 GlassFish 4.1 中的 Weld 在调用 invalidateSession 后对已经销毁的 ViewScoped bean 调用 @PreDestroy 方法?

转载 作者:行者123 更新时间:2023-12-03 17:48:11 26 4
gpt4 key购买 nike

今天早上我注意到,当我的用户注销 Web 应用程序时,我在 GlassFish 4.1 上运行的 JSF 应用程序抛出以下错误:

  • WELD-000019:使用限定符 [@Default @Named @Any] 销毁托管 Bean [...MyAuthenticator] 的实例 null 时出错

  • MyAuthenticator 是一个带有 @PreDestroy 注释方法的 javax.faces.view.ViewScoped CDI bean。

    作为测试,我删除了@PreDestroy 注释并验证错误消失了。

    然后,我将 @PreDestroy 注释与许多调试消息一起添加回 MyAuthenticator 并执行以下测试:

    测试 1
  • 已登录应用程序。
  • 退出应用程序。

  • 测试 2
  • 已登录应用程序。
  • 允许 session 过期。

  • 调试消息在两个测试中都显示以下行为:
  • MyAuthenticator 已创建并显示登录表单。
  • MyAuthenticator 在用户登录表单提交并登录后立即销毁。
  • 当 session 失效或过期时,Weld 会抛出报告的错误。

  • 我相信这个错误是 Weld 在我已经销毁的 MyAuthenticator 上调用 @PreDestroy 方法的结果。

    问题
  • 这是 Weld 中的错误吗?
  • 我可以安全地忽略吗?
  • 最佳答案

    此问题已在 GlassFish 4.1.2 中解决。

    关于jakarta-ee - 为什么 GlassFish 4.1 中的 Weld 在调用 invalidateSession 后对已经销毁的 ViewScoped bean 调用 @PreDestroy 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28796048/

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