Al ejecutar la aplicación web muestra el siguiente error: Caused by: javax.naming.NamingException: WELD-001300: Unable to locate BeanManager at org.jboss.weld.resources.ManagerObjectFactory.getObjectInstance(ManagerObjectFactory.java:52) at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143) SEVERE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.jboss.weld.environment.servlet.Listener org.jboss.weld.exceptions.DeploymentException: WELD-000072: Bean declaring a passivating scope must be passivation capable. Bean: Managed Bean [class com.sysol.ventas.util.jpa.EntityManagerProducer] with qualifiers [@Any @Default] at org.jboss.weld.bean.ManagedBean.checkType(ManagedBean.java:203)
Tengo la siguiente definición de los archivos: Context.xml <?xml version="1.0" encoding="UTF-8"?> <Context > <Manager pathname=""/> <Resource name="BeanManager" auth="Container" type="javax.enterprise.inject.spi.BeanManager" factory="org.jboss.weld.resources.ManagerObjectFactory"/>
@Produces @RequestScoped public EntityManager createEntityManager() { return factory.createEntityManager(); }
public void closeEntityManager(@Disposes EntityManager manager) { manager.close(); } }
El error me produce cuando cambio el ámbito de esta última clase EntityManagerProducer de @ApplicationScoped a @SessionScoped ya que requiero que se invoque cada vez que inicia la sesión del usuario. Con el context @ApplicationScoped funciona correctamente pero si invoca una sola vez.
Algún sugerencia o comentario sobre el error al hacer uso de @SessionScoped, gracias.
Buenos días:
Al ejecutar la aplicación web muestra el siguiente error:
Caused by: javax.naming.NamingException: WELD-001300: Unable to locate BeanManager
at org.jboss.weld.resources.ManagerObjectFactory.getObjectInstance(ManagerObjectFactory.java:52)
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143)
SEVERE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.jboss.weld.environment.servlet.Listener
org.jboss.weld.exceptions.DeploymentException: WELD-000072: Bean declaring a passivating scope must be passivation capable. Bean: Managed Bean [class com.sysol.ventas.util.jpa.EntityManagerProducer] with qualifiers [@Any @Default]
at org.jboss.weld.bean.ManagedBean.checkType(ManagedBean.java:203)
Tengo la siguiente definición de los archivos:
Context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context >
<Manager pathname=""/>
<Resource name="BeanManager" auth="Container"
type="javax.enterprise.inject.spi.BeanManager"
factory="org.jboss.weld.resources.ManagerObjectFactory"/>
Web.xml
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
<resource-env-ref>
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
</resource-env-ref>
Tengo la siguiente clase EntityManagerProducer :
@SessionScoped
public class EntityManagerProducer {
private EntityManagerFactory factory;
public EntityManagerProducer() {
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();
String idBD = (String) sessionMap.get("session_idBD");
factory = Persistence.createEntityManagerFactory(idBD);
}
@Produces @RequestScoped
public EntityManager createEntityManager() {
return factory.createEntityManager();
}
public void closeEntityManager(@Disposes EntityManager manager) {
manager.close();
}
}
El error me produce cuando cambio el ámbito de esta última clase EntityManagerProducer de @ApplicationScoped a @SessionScoped ya que requiero que se invoque cada vez que inicia la sesión del usuario. Con el context @ApplicationScoped funciona correctamente pero si invoca una sola vez.
Algún sugerencia o comentario sobre el error al hacer uso de @SessionScoped, gracias.