您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

WELD-000227:检测到Bean标识符索引不一致-分布式容器可能不适用于相同的应用程序

WELD-000227:检测到Bean标识符索引不一致-分布式容器可能不适用于相同的应用程序

org.jboss.weld.exceptions.IllegalStateException:WELD-000227:检测到Bean标识符索引不一致- 分布式容器可能不适用于相同的应用程序

当可序列化的类的Weld / CDI代理实例反序列化后(例如,在Tomcat重新启动后)发生不兼容的更改时,将引发此异常。在开发过程中,您很可能在未触及的情况下就编辑了可序列化会话或查看范围托管的beanserialVersionUID。或者,您已经添加/更新/删除了与CDI相关的库。如果您在Eclipse中使用Tomcat,请在Eclipse的@H_301_7@Servers 视图中右键单击Tomcat服务器条目,然后选择 @H_301_7@Clean Tomcat Work Directory 。这将清除序列化的会话,从而解决此异常。

每当您在可序列化的类中进行不兼容的更改(例如添加新的实例字段)时,都需要重新生成serialVersionUID值(以防您正在IDE生成该值),或将其值加1(以防万一)您使用的是认设置1L)。

因此,这不一定是Weld中的错误,但在我看来,它应该已经丢弃了不兼容的代理实例,创建了一个新的实例并打印了警告消息,而不是将此异常完全阻止了该请求。

如果您实际上正忙于开发并且每次都遇到此异常,请考虑关闭服务器中的会话持久性。如何执行此操作取决于所使用的服务器。对于Tomcat 7,请参阅The Manager Component文档中Disable Session Persistence部分

特定消息 @H_301_7@“分布式容器可能无法与相同的应用程序一起使用” 顺便说一句,指的是当您在具有会话共享(例如云)的群集环境中运行Web应用程序时的可能情况,其中至少有一个服务器具有不同版本的Web应用程序。这种情况将在生产中导致此异常。

其他 2022/1/1 18:16:59 有528人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶