Pregunta

Intento desarrollar un proyecto JPA en IBM RAD.Y puedo ejecutarlo en WebpShere con éxito, pero el problema es que mi máquina es bastante antigua.Por lo tanto, implementar en el contenedor Java EE no es razonable. Y quiero ejecutarlo en JSE. Pero da el siguiente error:

94  test  INFO   [main] openjpa.Runtime - Starting OpenJPA 1.2.1-SNAPSHOT
235  test  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class "com.ibm.ws.persistence.jdbc.sql.DB2Dictionary".
1797  test  WARN   [main] openjpa.Enhance - This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "[class Customer]".
Exception in thread "main" <openjpa-1.2.1-SNAPSHOT-r422266:686069 fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class Customer" has not been enhanced.
    at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1650)
    at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1624)
    at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:717)
    at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616)
    at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541)
    at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
    at org.apache.openjpa.kernel.BrokerImpl.newObjectId(BrokerImpl.java:1114)
    at org.apache.openjpa.kernel.DelegatingBroker.newObjectId(DelegatingBroker.java:268)
    at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:451)
    at deneme.main(deneme.java:21)

¿Qué me falta?

Por mi persistente.xml es:

**<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
    <provider>
        com.ibm.websphere.persistence.PersistenceProviderImpl
    </provider> 
        <class>Customer</class>
        <properties>
            <property name="openjpa.ConnectionDriverName" value="com.ibm.db2.jcc.DB2Driver"/>
            <property name="openjpa.ConnectionURL" value="jdbc:db2://localhost:50000/PARUD:retrieveMessagesFromServerOnGetMessage=true;"/>
            <property name="openjpa.ConnectionUserName" value="db2admin"/>
            <property name="openjpa.ConnectionPassword" value="xxxxx"/>
            <property name="openjpa.jdbc.Schema" value="POOL"/>
        </properties>
    </persistence-unit>
</persistence>**
¿Fue útil?

Solución

Sólo un puntero: Es necesario para mejorar sus clases, por ejemplo, en tiempo de ejecución a través de -javaagent: yourlib.jar o incluso durante la compilación. Usted puede aprender más sobre este tema aquí :

"La segunda y recomendó manera get tiempo de ejecución de mejora es proporcionar un javaagent cuando inicia la JVM que OpenJPA va carreras en."

Otros consejos

Acabo de realizar el ejercicio de ejecutar OpenJPA 2.1.0 en Tomcat 7.0.Simplemente no pude lograr que la mejora en tiempo de ejecución funcionara en Tomcat, así que me di por vencido y decidí usar la mejora en tiempo de compilación.Estoy desarrollando mi código en Eclipse, así que seguí las instrucciones aquí:

http://openjpa.apache.org/enhancement-with-eclipse.html

Sin embargo, tenga en cuenta que las instrucciones de esta página son para proyectos Java genéricos.Si está trabajando con proyectos web dinámicos, asegúrese de especificar correctamente el argumento del directorio de compilación.Usé -Dbuild.dir=build/classes que es la ubicación típica para el código compilado.

Una peculiaridad más molesta con la que tienes que vivir.Debe invocar manualmente el constructor usando el elemento de menú "Proyecto > Construir proyecto".Cuando se ejecuta el potenciador, modifica las clases creadas previamente.En consecuencia, debe presionar F5 o Actualizar para el proyecto antes de publicarlo en Tomcat.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top