【问题标题】:org.jboss.weld.exceptions.IllegalStateException: WELD-000227 after every change in codeorg.jboss.weld.exceptions.IllegalStateException:每次更改代码后的 WELD-000227
【发布时间】:2016-03-19 17:29:49
【问题描述】:

我正在使用 NetBeans 和 Glassfish 4.1.1 开发一个 web 应用程序。我正在使用 JSF 和 CDI 来管理 facelets 的支持 bean。因为在更改代码中的任何内容后不久,在通过浏览器“成功”部署和运行应用程序后,我总是会收到带有此 IllegalStateException 的内部服务器错误:

org.jboss.weld.exceptions.IllegalStateException: WELD-000227: Bean 

identifier index inconsistency detected - the distributed container 

probably does not work with identical applications

我可以通过清理构建和重新部署来摆脱它。但无论如何,NetBeans 在每次保存后都会自动重新部署。所以我仍然必须点击 clean and build 然后重新部署自己

那么我可以在 glassfish 服务器上更改任何设置来避免这种情况,或者我可以告诉 NetBeans 在自动部署之前清理和构建吗?

不是一直这样,最近更新 glassfish 可能是在那之后才出现的,具体记不太清了。

提前致谢!这花了我很多时间..

已解决

我又用谷歌搜索了几个小时,找到了解决方案:我在 glassfish 中设置了一个新的系统属性

org.jboss.weld.serialization.beanIdentifierIndexOptimization = false

为了避免出现不一致,如此处 WELD 参考中所述:

https://docs.jboss.org/weld/reference/latest/en-US/html/configure.html#_bean_identifier_index_optimization

【问题讨论】:

  • 你是如何设置这个属性的?我正在努力解决同样的问题。
  • 在 glassfish (localhost:4848) 的管理控制台中转到“服务器(管理服务器)”-->“属性”-->“系统属性”并添加一个新属性“org.jboss” .weld.serialization.beanIdentifierIndexOptimization”,值为“false”
  • 它也适用于 Websphere 应用程序服务器 9。谢谢。

标签: jakarta-ee cdi weld


【解决方案1】:

在 GlassFish 中禁用 beanIdentifierIndexOptimization,如下所示:

  1. 通过http://localhost:4848(或https://127.0.0.1:4848/)访问管理控制台。
  2. 点击配置
  3. 点击服务器配置
  4. 点击系统属性
  5. 点击添加属性
  6. 实例变量名称设置为:org.jboss.weld.serialization.beanIdentifierIndexOptimization
  7. 默认值设置为:false
  8. 点击保存

这应该有助于钝化并解决以下WELD bug

WELD-000227:检测到 Bean 标识符索引不一致。

【讨论】:

  • 拉取双重投票请求:)
猜你喜欢
  • 1970-01-01
  • 2022-12-14
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 2023-04-04
  • 2019-05-06
  • 2019-01-04
相关资源
最近更新 更多