He Eclipse Indigo que yo uso para desarrollar una JSF 2 proyecto con Glassfish 3 código Abierto, esta en mi computadora, en mi instancia de EC2, Amazon AWS, por tanto Glassfish es que he creado una Conexión JDBC de la Piscina para el uso con mi JPA Gerente de la Entidad.

Localmente mi proyecto funciona bastante bien, pero cuando me implementar el proyecto y tratar de ejecutar la misma forma, que se presenta algunos valores de la base de datos que se ejecuta en la misma instancia de EC2 que se está ejecutando el servidor GlassFIsh difíciles.

Me aparece este mensaje:

java.lang.IllegalStateException: si se Intenta ejecutar una operación en un cerrado EntityManagerFactory

serverError: clase javax.las caras.el.EvaluationException

Estoy buscando, pero no me han encontrado nada hasta el momento.

Hay alguna configuración que yo debería hacer para que funciona ?

EDICIÓN:

Aquí está el stacktrace:

javax.faces.FacesException: #{reportc.generateReport}: javax.ejb.EJBException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:636)
Caused by: javax.faces.el.EvaluationException: javax.ejb.EJBException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 32 more
Caused by: javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5193)
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5091)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4879)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2039)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1990)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
at $Proxy225.listLastMinutes(Unknown Source)
at com.brainset.eao.__EJB31_Generated__LogEAO__Intf____Bean__.listLastMinutes(Unknown Source)
at com.brainset.controller.ReportControl.getLog(ReportControl.java:234)
at com.brainset.controller.ReportControl.generateReport(ReportControl.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
... 33 more
Caused by: java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManagerFactory.
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.verifyOpen(EntityManagerFactoryDelegate.java:305)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:276)

EDIT 2:
Esta es la forma en que estoy usando el EntityManager:

@Stateless(mappedName = "logEAO")
@LocalBean
public class LogEAO {
@PersistenceContext
private EntityManager em;
public LogEAO() {}
public Log find(int id) {
return em.find(Log.class, id);
}
//.. 
Esta alerta es típico de la Mojarra (con proyecto de puesta en escena para Development) cuando se envía una petición ajax se tradujo en una excepción durante invocar la acción. Usted puede encontrar el stacktrace en el registro del servidor. O, deshabilitar (temporalmente) <f:ajax> para que usted obtenga el error HTTP 500 página en su totalidad. Para un mejor manejo de excepciones de peticiones ajax, consulte este. Una vez que usted tiene todo el stacktrace, incluya en su pregunta. Entonces podemos explicar la causa y propse la solución basada en el stacktrace.
Tienes razón mi etapa del proyecto se establece para el desarrollo, debe quitar ? Tengo el registro de glassfish como usted me dijo, aquí está, en mi post de la actualización.
No se si eliminarlo, usted no obtendrá este alerta nunca más, así que usted no conseguirá cualquier de notificación más que algo falló durante la petición ajax. Esto no resuelve el problema subyacente.
¿Qué ocurre si usted iniciar y detener la glassfish. Después del intento de inicio de su sitio de nuevo, he pasado mucho tiempo con problemas como este. Hay un error en glassfish 3.1 en la re-implementación.

OriginalEl autor Valter Silva | 2012-03-30

3 Comentarios

  1. 7

    De su stacktrace:

    Causada por: java.lang.IllegalStateException: si se Intenta ejecutar una operación en un cerrado EntityManagerFactory.

    Su EJB código se ve bien. Esto es más probable que un Glassfish bug o error de configuración:


    Esto sólo puede significar que usted está a administrar manualmente la EntityManagerFactory (y EntityManager) en lugar de dejar que el contenedor de hacer el trabajo por sólo @PersistenceContext.

    La EntityManagerFactory está pensado para ser creado sólo una vez en la webapp de inicio, reutilizados a lo largo de toda la webapp de la vida y cerrado en la webapp del apagado. No debe ser cerrado en algún lugar a mitad de camino o ser serializado y reutilizados para un próximo reinicio del ciclo.

    Ya que estás al parecer, la orientación de Glassfish, recomiendo a no administrar a ti mismo, pero dejando de Glassfish hacer el trabajo. Terminarás con mucho más simple EJB código sin todos los problemas para gestionar las transacciones manualmente.

    Véase también:

    Vi tu enlace y la única diferencia en comparación con el ejemplo que usted indica es que no tiene @LocalBean, debe quitar ?
    Esperar, como por el EJB fragmento de código en su pregunta actualización no manualmente llegar el EntityManager, pero sólo el uso de @PersistenceContext para permitir que el contenedor de inyectar. Así que usted está haciendo de la manera correcta. Este es tal vez un bug o error de configuración de Glassfish. ¿Tienes completo control de administración sobre él? ¿Estás seguro de que la JTA origen de datos de configuración en persistence.xml y la consola de administración de Glassfish es 100% correcto?
    Tengo pleno control de administración de glassfish, estoy pensando en borrarla y empezar todo de nuevo. La JTA origen de datos es del todo correcto porque hice el ping y me muestra que todo estaba bien. Lo mismo para el persistence.xml.
    Acaba de reiniciar glassfish manualmente hizo. Gracias por los consejos. Parece que mi versión tenido este error.

    OriginalEl autor BalusC

  2. 17

    Si está utilizando el servidor Glassfish, reiniciar el servidor, lo hizo por mí.

    funcionó para mí – darle una oportunidad, especialmente después de una masiva refactorizar

    OriginalEl autor Eduardo Dennis

  3. 3

    He tenido este problema y encontrar una solución.

    El problema es que eclipse (con el servidor glassfish plugin) inicia/detiene sólo el dominio y no la base de datos.

    Pasos:

    1. De inicio de la base de datos desde la línea de comandos/fuera de eclipse
    2. De inicio del servidor (dominio) en eclipse
    3. Implementar la aplicación con @PersistenceContext inyección –> obras

    Detalles:

    Me sale eclipse – esta parado el servidor glassfish. Luego de apagado de la máquina – se detuvo la base de datos. En el reinicio, abierto eclipse, comenzó servidor y trató de desplegar la misma aplicación. Con el error:

    Deployment Error for module xxx
    Error occurred during deployment: Exception while preparing the app :
    Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): 
    org.eclipse.persistence.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: Error in allocating a connection.
    Cause: Connection could not be allocated because: java.net.ConnectException :
    Error connecting to server localhost on port 1527 with message Connection refused

    La razón de ser de la base de datos no estaba iniciado. Así que comencé a base de datos desde la línea de comandos. Tengo el error

    java.lang.IllegalStateException: Attempting to execute an operation on a closed EntityManagerFactory

    Seguido los pasos de arriba y funcionó.


    EDITAR
    Los pasos anteriores soluciona el problema, a veces, pero también me parece un conocido issuein GF 3.0/3.1: http://java.net/jira/browse/GLASSFISH-17295

    Otra opción es volver a implementar la aplicación desde la consola de administración como se menciona aquí: http://richardchesterwood.blogspot.in/2011/09/javaee-course-ships-with-copy-of-javaee.html

    OriginalEl autor gammay

Dejar respuesta

Please enter your comment!
Please enter your name here