gpt4 book ai didi

tomcat - WELD-000227 : Bean identifier index inconsistency detected - the distributed container probably doesn't work with identical applications

转载 作者:行者123 更新时间:2023-11-28 21:46:50 30 4
gpt4 key购买 nike

在 eclipse IDE 中重新启动服务器并重新加载页面后,我将 tomcat v7 与 Weld v2.2.9.Final 和 myFaces v2.2.7 一起使用,我收到此错误。我不知道为什么这个错误出现在我身上。它必须与http请求相关联。如果我打开关闭浏览器,它就会开始工作。

SEVERE: Exception sending request initialized lifecycle event to listener instance of class org.jboss.weld.environment.servlet.Listener
org.jboss.weld.exceptions.IllegalStateException: WELD-000227: Bean identifier index inconsistency detected - the distributed container probably doesn't work with identical applications
at org.jboss.weld.context.http.HttpSessionContextImpl.checkBeanIdentifierIndexConsistency(HttpSessionContextImpl.java:88)
at org.jboss.weld.context.http.HttpSessionContextImpl.associate(HttpSessionContextImpl.java:42)
at org.jboss.weld.context.http.HttpSessionContextImpl.associate(HttpSessionContextImpl.java:19)
at org.jboss.weld.servlet.HttpContextLifecycle.requestInitialized(HttpContextLifecycle.java:217)
at org.jboss.weld.servlet.WeldInitialListener.requestInitialized(WeldInitialListener.java:160)
at org.jboss.weld.servlet.api.helpers.ForwardingServletListener.requestInitialized(ForwardingServletListener.java:42)
at org.apache.catalina.core.StandardContext.fireRequestInitEvent(StandardContext.java:6189)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

最佳答案

org.jboss.weld.exceptions.IllegalStateException: WELD-000227: Bean identifier index inconsistency detected - the distributed container probably doesn't work with identical applications

当可序列化类的 Weld/CDI 代理实例在反序列化后发生不兼容的更改时(例如,在 Tomcat 重启后),将抛出此异常。您很可能在开发过程中编辑了一个可序列化 session 或查看范围内的托管 bean,但没有触及 serialVersionUID。或者,您添加/更新/删除了与 CDI 相关的库。如果您在 Eclipse 中使用 Tomcat,请右键单击 Eclipse 的Servers View 中的 Tomcat 服务器条目,然后选择Clean Tomcat Work Directory。这将消除序列化 session ,从而也解决此异常。

每次当您在可序列化类中进行不兼容的更改时,例如添加新的实例字段,那么您需要重新生成 serialVersionUID 值(以防您在 IDE 中生成该值) ,或者将其值增加 1(如果您使用的是默认 1L)。

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

如果您真的忙于开发并且每次都面临这个异常,请考虑关闭服务器中的 session 持久性。如何执行此操作取决于所使用的服务器。对于 Tomcat 7,请参阅 Disable Session Persistence 文档中的“The Manager Component ”部分.

特定消息 “分布式容器可能不适用于相同的应用程序” 是指您在具有 session 共享的集群环境中运行 Web 应用程序时的可能情况(例如云)显然至少有一台服务器具有不同版本的 Web 应用程序。这种情况在生产中会导致这个异常。

另见:

关于tomcat - WELD-000227 : Bean identifier index inconsistency detected - the distributed container probably doesn't work with identical applications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28713747/

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