0 Replies Latest reply on Feb 15, 2017 8:07 PM by Marco Pizarro

    WELD-001300: Unable to locate BeanManager

    Marco Pizarro Newbie

      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.