问题 org.jboss.weld.exceptions.IllegalStateException:代码中的每次更改后都为WELD-000227


我正在使用NetBeans和Glassfish 4.1.1开发一个webapp。我正在使用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在每次保存后都会自动重新部署。所以我仍然需要点击清洁和构建,然后重新部署自己总是在任何小改变后,它让我疯了!

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

它并不总是这样,最近我更新了玻璃鱼,它可能只是在那之后出现,我不记得了。

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

解决了

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

org.jboss.weld.serialization.beanIdentifierIndexOptimization =

避免出现如WELD参考文献中所述的不一致性:

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


9746
2018-03-19 17:29


起源

有关: stackoverflow.com/q/28713747 - BalusC
谢谢你的链接,你是对的,它同样的问题.. - BenSkeleton
你是怎么设置这个属性的?我正在努力解决同样的问题。 - Rose Nettoyeur
在glassfish的管理控制台中(本地主机:4848)转到“服务器(管理服务器)” - >“属性” - >“系统属性”并添加一个值为“false”的新属性“org.jboss.weld.serialization.beanIdentifierIndexOptimization” - BenSkeleton


答案:


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

  1. 访问管理控制台 HTTP://本地主机:4848 (要么 https://127.0.0.1:4848/)。
  2. 点击 配置
  3. 点击 服务器配置
  4. 点击 系统属性
  5. 点击 添加属性
  6. 实例变量名称 至: org.jboss.weld.serialization.beanIdentifierIndexOptimization
  7. 默认值 至: false
  8. 点击 保存

这应该有助于钝化并解决以下问题 WELD错误

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


13
2018-05-26 08:19



你是救世主 - loopidio