2010-01-24 7 views
5

Intento desarrollar el proyecto JPA en ibm RAD. Y puedo ejecutarlo en Webpshere con éxito, , pero el problema es que mi máquina es bastante vieja. Así que el despliegue de contenedor Java EE no es reasonable.And quiero ejecutarlo en JSE.But Da siguiente error:openJPA en Java SE

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) 

lo que me falta?

A mi persistent.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>** 

Respuesta

8

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. Puede obtener más información sobre este tema here:

"La segunda forma recomendada de obtener mejoras en el tiempo de ejecución es proporcionar un javaagent al iniciar la JVM en la que se ejecuta OpenJPA".

+0

sí, probé javaagent.like this -javaagent: C: \ Archivos de programa \ IBM \ WebSphere \ AppServer \ plugins \ com.ibm.ws.jpa.jar da error: "No se pudo crear Java Virtual machine " – qasanov

+0

el problema era el espacio" Archivos de programa "aquí. Moví el archivo en "C: \ com.ibm.ws.jpa.jar" y todo parece estar bien. gracias por adelantado :) – qasanov

0

Acabo de hacer ejercicio para que OpenJPA 2.1.0 se ejecute en Tomcat 7.0. Simplemente no pude obtener una mejora en tiempo de ejecución para trabajar con Tomcat, así que me di por vencido y decidí usar la mejora del tiempo de compilación. Estoy desarrollando mi código bajo Eclipse así que he seguido las instrucciones aquí:

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

Nota sin embargo, 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 que tiene que vivir. Debe invocar manualmente el constructor utilizando la opción de menú "Proyecto> Crear proyecto". Cuando el enhancer se ejecuta, modifica las clases construidas previamente. En consecuencia, debe presionar F5 o Actualizar para el proyecto antes de publicarlo en Tomcat.

Cuestiones relacionadas