2010-01-24 7 views
5

Provo a sviluppare il progetto JPA su ibm RAD. E posso eseguirlo su Webpshere con successo, ma il problema è che la mia macchina è piuttosto vecchia. Quindi, la distribuzione nel container Java EE non è reasonable.And voglio eseguirlo su JSE.But esso errore ha pronunciato seguente:openJPA su 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) 

Cosa mi manca?

Entro la mia persistent.xml è:

**<?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>** 

risposta

8

solo un puntatore: È necessario migliorare le vostre classi per esempio in fase di esecuzione tramite -javaagent: yourlib.jar o anche durante la compilazione. Ulteriori informazioni su questo argomento here:

"Il secondo e consigliato modo di ottenere il runtime enhancement consiste nel fornire un javaagent all'avvio della JVM che OpenJPA sta eseguendo."

+0

sì ho provato javaagent.like questo -javaagent: C: \ Programmi \ IBM \ WebSphere \ AppServer \ plugins \ com.ibm.ws.jpa.jar dà errore: "Impossibile creare Java Virtual machine " – qasanov

+0

il problema era spazio" Programmi "qui. Ho spostato il file sotto "C: \ com.ibm.ws.jpa.jar" e tutto sembra ok. Grazie in anticipo :) – qasanov

0

Ho appena svolto l'esercizio di ottenere OpenJPA 2.1.0 per l'esecuzione su Tomcat 7.0. Non ero semplicemente in grado di ottenere miglioramenti di runtime per lavorare con Tomcat, quindi ho rinunciato e ho deciso di utilizzare l'ottimizzazione del build. Sto sviluppando il mio codice sotto Eclipse così ho seguito le istruzioni qui:

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

Nota, tuttavia, che le istruzioni in questa pagina sono per progetti Java generici. Se stai lavorando con progetti Web dinamici, assicurati di specificare correttamente l'argomento della directory di compilazione. Ho usato -Dbuild.dir = build/classes che è la posizione tipica per il codice compilato.

Uno scherzo più fastidioso con cui devi convivere. È necessario richiamare manualmente il builder utilizzando la voce di menu "Progetto> Crea progetto". Quando viene eseguito il potenziatore, modifica le classi costruite in precedenza. Di conseguenza, è necessario premere F5 o Aggiorna per il progetto prima di pubblicare su Tomcat.