tomcat cdi weld

tomcat - WELD-000227: Incoherencia del índice identificador de frijol detectada: el contenedor distribuido probablemente no funciona con aplicaciones idénticas



cdi (3)

Estoy usando tomcat v7 con Weld v2.2.9.Final y myFaces v2.2.7 después de reiniciar el servidor en eclipse IDE y volver a cargar la página I recibiendo este error. No tengo idea de por qué me aparece este error. Tiene que estar conectado con una solicitud HTTP más o menos. Si abro el navegador cercano, empiezo a trabajar.

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)


Pueden pasar más de dos años desde la última respuesta publicada, pero esto también puede ocurrir si olvida implementar Serializable en una clase Entity.

(Java 8, Glassfish 4)

@Entity @Table(name="questions") public class Question { ...... }

Error org.jboss.weld.exceptions.IllegalStateException: WELD-000227: Incoherencia del índice identificador de frijol detectada: el contenedor distribuido probablemente no funcione con aplicaciones idénticas

@Entity @Table(name="questions") public class Question implements Serializable { ...... }



org.jboss.weld.exceptions.IllegalStateException: WELD-000227: Incoherencia del índice identificador de frijol detectada: el contenedor distribuido probablemente no funcione con aplicaciones idénticas

Esta excepción se producirá cuando una instancia de proxy Weld / CDI de una clase serializable haya cambiado de manera incompatible después de la deserialización (por ejemplo, después del reinicio de Tomcat). Lo más probable es que durante el desarrollo haya editado una sesión serializable o vea un bean administrado con ámbito sin haber tocado el serialVersionUID . O bien, ha agregado / actualizado / eliminado una biblioteca asociada a CDI. En caso de que esté usando Tomcat en Eclipse, haga clic con el botón derecho en la entrada del servidor Tomcat en la vista Servidores de Eclipse y elija Limpiar directorio de trabajo Tomcat . Esto eliminará las sesiones serializadas y, por lo tanto, también resolverá esta excepción.

Cada vez que realiza cambios incompatibles en una clase serializable, como agregar nuevos campos de instancia, entonces necesita volver a generar el valor serialVersionUID (en caso de que esté generando IDE el valor), o incrementar su valor con 1 (en caso de que estés usando un 1L predeterminado).

Esto no es necesariamente un error en Weld, pero en mi opinión debería haber descartado la instancia de proxy incompatible, creado una nueva e impreso un mensaje de advertencia en lugar de bloquear la solicitud con esta excepción.

Si en realidad está ocupado desarrollando y enfrentando esta excepción cada vez, considere desactivar la persistencia de la sesión en el servidor. Cómo hacer esto depende del servidor utilizado. En su caso de Tomcat 7, consulte la sección " Desactivar persistencia de sesión " en la documentación de The Manager Component .

El mensaje específico "el contenedor distribuido probablemente no funciona con aplicaciones idénticas" se refiere, por cierto, al posible caso cuando se ejecuta la aplicación web en un entorno agrupado con sesión compartida (por ejemplo, nube) por lo que aparentemente al menos un servidor tiene una versión diferente de la aplicación web. Tal situación causará en la producción esta excepción.

Ver también: