while resource org method jpadeployer invoking invalid connectors connectorruntimeexception caused appserv java jpa deployment glassfish

resource - Java, JPA, Glassfish, recurso no válido: jdbc/__ default__pm



class java lang runtimeexception glassfish (7)

Uso Glassfish 3.1.2.2 (compilación 5), JPA, EclipseLink, MySQL

Creé el grupo de MySQL a través del panel de administración de Glassfish. Ping a MySQL desde el panel de administración de GF está bien.

Creé la aplicación con persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <persistence-unit name="myUnit"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myDBName"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="myPass"/> <property name="javax.persistence.ddl-generation" value="drop-and-create-tables"/> </properties> </persistence-unit>

Intenté implementarlo y obtuve el error:

Invalid resource : jdbc/__default__pm [#|2012-11-16T02:20:59.480+0400|SEVERE|glassfish3.1.2|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=43;_ThreadName=Thread-2;|Invalid resource : jdbc/__default__pm java.lang.RuntimeException: Invalid resource : jdbc/__default__pm

Stacktrace en el registro de GF es enorme. Comenzado por

at com.sun.enterprise.connectors.ConnectorRuntime.lookupDataSourceInDAS(ConnectorRuntime.java:540) at com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:469) at org.glassfish.persistence.common.PersistenceHelper.lookupPMResource(PersistenceHelper.java:63) at org.glassfish.persistence.jpa.ProviderContainerContractInfoBase.lookupDataSource(ProviderContainerContractInfoBase.java:71) ....

¿Alguien tiene ideas de lo que sucedió y qué hacer?


(El mismo mensaje mío pero con la cuenta correcta ahora):

Al configurar la persistencia con su configuración, solo establece el nombre JNDI para el conjunto JDBC en persistence.xml. Opcional, puede establecer el nombre de la base de datos de destino.

<persistence-unit name="foo" transaction-type="JTA"> <jta-data-source>jdbc/mysql</jta-data-source> <!--optional--> <property name="eclipselink.target-database" value="MySQL4"/> </persistence-unit>

También animo a cambiar el ''drop-and-create-table'' a ''create-tables'', para que no pierda datos, y esto debería ser proporcionar las propiedades de EclipseLink de la siguiente manera:

<property name="eclipselink.ddl-generation" value="create-tables"/>

y también a mano

<property name="eclipselink.ddl-generation.output-mode" value="both"/>

que creará esquemas y scripts sql.

Para obtener más información, visite: http://wiki.eclipse.org/EclipseLink/Examples/JPA/DDL o http://docs.oracle.com/cd/E19798-01/821-1752/gbwmj/index.html


Si solo ha creado un grupo de conexiones MySQL, también debe crear un recurso JDBC. Esto se puede crear desde el menú de contexto sobre el que usó para crear el grupo de conexiones.

En mi Glassfish, mi recurso JDBC, jdbc / __ predeterminado usa el grupo de conexiones mysql_lemon.


Tuve el mismo problema cuando ejecuté / implementé una aplicación en un servidor creado por el asistente de instalación de netbeans.

Para resolver, descargué la última versión de Glassfish del sitio oficial y fui a: Netbeans> "Ficha del servicio"> "Servidores"> "Agregar servidor ...".

Recuerde cambiar las configuraciones de su proyecto para usar la nueva instancia del servidor glassfish.


Tuve el mismo problema y creo firmemente que es causado por un poco de caché.

Justo después de que he terminado

asadmin remove-domain domain1 asadmin create-domain domain1 firefox http://localhost:4848

Ahora __pm ya no se agrega a los recursos de JDBC.

si esto no ayuda, entonces supongo que estás usando

@PersistenceContext EntityManager em;

esto debería ser reemplazado con, por ejemplo,

em=Persistence.createEntityManagerFactory("DefaultPU(PUT_PERSISTANCE_UNIT_NAME_HERE").createEntityManager(); String ret="Hello " + txt + ", "+ em.createNamedQuery("Usertable.findAll").getResultList().get(0).toString() +" !" ; em.close();


Tuve este problema. Establecí el conjunto de conexiones jdbc y el recurso jdbc en la consola de administración. Pero no configuré el origen de datos en persistence.xml.

<persistence-unit name="OnlinePrintService-warPU" transaction-type="JTA"> <jta-data-source>jdbc/your-name</jta-data-source> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.schema-generation.database.action" value="create"/> </properties> </persistence-unit>


Yo tuve el mismo problema.

La solución (para cualquiera que todavía tenga este problema):

  1. si está utilizando NetBeans IDE 8.1 con Glassfish 4.1.1, le aconsejo que lo cambie a Glassfish 4.1
  2. Ve al panel izquierdo en NetBeans. Haga clic en services > server > glassfish luego haga clic con el botón derecho (en el servidor de Glassfish) y elija ver la consola de administración del dominio. Debería aparecer una página web. Vaya a la izquierda y elija resources > JDBC grupo de conexiones resources > JDBC y JDBC. Agregue un nuevo grupo de conexiones haciendo clic en new , escriba el nombre de su grupo. A continuación, elija javax.sql.ConnectionPoolDataSource y el datadriver (en mi caso es MySQL) y haga clic en siguiente. Después de eso, debe ingresar toda la información necesaria para su base de datos.
  3. Vuelve a Resources > JDBC . Esta vez, los recursos de JDBC crean un nuevo recurso JDBC (para mí, lo llamé jdbc/test ). No olvide vincularlo con el grupo de conexiones que ya creó.
  4. En NetBeans vaya a su proyecto ejb y modifique el archivo persistence.xml . Cambie el datasource de datos al recurso de la base de datos (en mi caso jdbc/test ) y guárdelo todo.

Eso debería funcionar (y).


el __nontx y __pm son extensiones del grupo. documentación: https://docs.oracle.com/cd/E19798-01/821-1752/beamr/index.html (en otro lugar http://docs.oracle.com/cd/E26576_01/doc.312/e24930/jdbc.htm#GSDVG00185 y http://docs.oracle.com/cd/E26576_01/doc.312/e24930/transaction-service.htm#GSDVG00512 )

primeros __pm

de https://docs.oracle.com/cd/E19798-01/821-1752/gavro/index.html

Permitir llamadas no componentes

Puede permitir que componentes que no sean Java-EE, como filtros de servlet, módulos de ciclo de vida y administradores de persistencia de terceros, usen este conjunto de conexiones JDBC. La conexión devuelta se alista automáticamente con el contexto de transacción obtenido del administrador de transacciones. Los componentes estándar de Java EE también pueden usar dichos grupos. Las conexiones obtenidas por las personas que llaman sin componentes no se cierran automáticamente al final de una transacción por parte del contenedor. Deben ser explícitamente cerrados por la persona que llama.

Puede habilitar las llamadas que no son componentes de las siguientes maneras:

Marque la casilla Permitir interlocutores no componentes en la página Editar atributos avanzados del grupo de conexiones en la consola de administración. El valor predeterminado es falso. Para obtener más información, haga clic en el botón Ayuda en la Consola de administración.

Especifique la opción ---- allownoncomponentcallers en el comando asadmin create-jdbc-connection-pool. Para obtener más información, consulte el Manual de referencia de Oracle GlassFish Server 3.0.1.

Especifique la opción allow-non-component-call en el comando asadmin set. Por ejemplo:

asadmin set domain1.resources.jdbc-connection-pool.DerbyPool.allow-non-component-callers = true

Para obtener más información, consulte el Manual de referencia de Oracle GlassFish Server 3.0.1.

Cree un recurso JDBC con un sufijo __pm.

y __nontx

de https://docs.oracle.com/cd/E19798-01/821-1752/beamu/index.html

Usar conexiones no transaccionales

Puede especificar una conexión de base de datos no transaccional de cualquiera de estas maneras:

Marque la casilla Conexiones no transaccionales en el nuevo grupo de conexiones JDBC o en la página Editar grupo de conexiones en la consola de administración. El valor predeterminado está desmarcado. Para obtener más información, haga clic en el botón Ayuda en la Consola de administración.

Especifique la opción ---- nontransactionalconnections en el comando asadmin create-jdbc-connection-pool. Para obtener más información, consulte el Manual de referencia de Oracle GlassFish Server 3.0.1.

Especifique la opción de conexiones no transaccionales en el comando asadmin set. Por ejemplo:

asadmin establece domain1.resources.jdbc-connection-pool.DerbyPool.non-transactional-connections = true

Para obtener más información, consulte el Manual de referencia de Oracle GlassFish Server 3.0.1.

Use la implementación de DataSource en GlassFish Server, que proporciona un método getNonTxConnection. Este método recupera una conexión JDBC que no está en el alcance de ninguna transacción. Hay dos variantes

public java.sql.Connection getNonTxConnection () arroja java.sql.SQLException

public java.sql.Connection getNonTxConnection (String user, String password) arroja java.sql.SQLException

Cree un recurso con el nombre JNDI que termina en __nontx. Esto obliga a que todas las conexiones buscadas utilizando este recurso sean no transaccionales.