我在eclipse IDE中重启服务器后使用tomd 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)
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 14
org.jboss.weld.exceptions.IllegalStateException:WELD-000227:检测到Bean标识符索引不一致 - 分布式容器可能无法使用相同的应用程序
当反序列化后可序列化类的Weld/CDI代理实例不兼容地更改时(例如,在Tomcat重新启动之后),将抛出此异常.很可能你在开发编辑可序列化的会话或查看作用域的托管bean时没有触及serialVersionUID.或者,您已添加/更新/删除了与CDI相关的库.如果您在Eclipse中使用Tomcat,请在Eclipse的Servers视图中右键单击Tomcat服务器条目,然后选择Clean Tomcat Work Directory.这将消灭序列化会话,从而也解决了这个异常.
每当您在可序列化类中进行不兼容的更改(例如添加新实例字段)时,您需要重新生成该serialVersionUID值(如果您是IDE生成该值),或者将其值增加为1(以防万一)你正在使用默认值1L).
因此,这不一定是Weld中的错误,但在我看来,它应该放弃不兼容的代理实例,创建一个新的并打印一条警告消息,而不是完全阻止该请求与此异常.
如果您实际上每次都忙于开发并面临此异常,请考虑关闭服务器中的会话持久性.如何执行此操作取决于使用的服务器.在Tomcat 7的情况下,请参阅Manager组件文档中的 " 禁用会话持久性 " 部分.
当您在具有会话共享的集群环境中运行Web应用程序(例如云)时,特定消息"分布式容器可能无法与相同的应用程序一起工作",这显然至少有一台服务器有一个不同版本的Web应用程序.生产中的这种情况会导致这种例外.
| 归档时间: |
|
| 查看次数: |
15455 次 |
| 最近记录: |