2012-05-03 4 views
9

Sto utilizzando Netbeans 7.1.1 e un server Glassfish 3.1.2. Come fornitore JPA ho deciso di utilizzare eclipse-link 2.3.0 che viene fornito con Netbeans. Dal momento che voglio usare il pigro recupero e il mio progetto consiste di circa 45 classi di entità JPA che hanno molte relazioni tra loro, ho deciso di usare tessere statiche. Inoltre, le classi @Entity sono in un progetto Class Lib separato, mentre il persistence.xml risiede nel progetto EJB.Come applicare la funzione Antatica di tessitura statica con Eclipse-Link JPA in Netbeans?

ho già seguito le istruzioni qui: http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

ho messo la formica-task nel file accumulo impl.xml (qui di seguito). È corretto quando si usa Netbeans? Ecco il frammento dal accumulo impl.xml:

<target name="-post-jar" description="New task definition for EclipseLink static weaving"> 
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/> 
</target> 
<target name="weaving" description="perform weaving" depends="-post-jar"> 
    <weave source="${dist.jar}\MyProject.jar" 
      target="${dist.jar}\MyProject_Weaved.jar" 
      persistenceinfo="${dist.jar}..\..\MyProjectEE\MyProject-ejb\build\classes\META-INF\persistence.xml" 
      loglevel="FINER"> 
     <classpath> 
      <pathelement path="${dist.jar}\lib\eclipselink-2.3.0.jar"/> 
      <pathelement path="${dist.jar}\lib\javaee-api-6.0.jar"/> 
      <pathelement path="${dist.jar}\lib\jasypt-1.9.0.jar"/> 
      <pathelement path="${dist.jar}\lib\javax.persistence-2.0.jar"/> 
      <pathelement path="${dist.jar}\lib\org.eclipse.persistence.jpa.jpql_1.0.0.jar"/> 
      <pathelement path="${dist.jar}\lib\joda-time-2.1.jar"/> 
      <pathelement path="${dist.jar}\lib\jms.jar"/> 
     </classpath> 
    </weave> 
</target> 

Tutti i jar-file nei percorsi pathelement sono inclusi anche come biblioteche l'IDE Netbeans. Quando esce "Clean & Build", ora ottengo il seguente errore:

D:\workspace\MyProject\nbproject\build-impl.xml:703: taskdef class org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask cannot be found 
using the classloader AntClassLoader[] 

Cosa faccio male qui?

risposta

4

È necessario aggiungere eclipselink.jar e javax.persistence.jar al classpath Ant.

In Netbeans andare in Strumenti/Opzioni/Varie/Ant e modificare il percorso di classe lì.

+1

molte grazie peter! è anche possibile definire direttamente il classpath all'interno del tag . Inoltre, è necessario definire ulteriori target di formiche in build.xml anziché in build-impl.xml. Per eseguire i taks, assegnare un collegamento facendo clic con il tasto destro del mouse sull'attività definita nella vista file nell'IDE di Netbeans e selezionare "crea collegamento". – salocinx

2

Ho anche dovuto includere org.eclipse.persistence.jpa.jpql_1.0.1.jar e org.eclipse.persistence.jpa.modelgen.processor-2.3.2.jar al fine di portare a tessitura vivere. Spero che questo ti aiuti.

3

Inoltre sto usando Netbeans 8.0.1 per lo sviluppo di progetti Java EE con EclipseLink 2.4.2 a 1.7.0 TomEE e ho appena messo il seguente nel mio build.xml (non ho mai modifico accumulo impl.xml perché Netbeans può sovrascrivere quando qualcosa viene modificato nella configurazione, edificio):

<target name="--weaving-def" description="New task definition for EclipseLink static weaving" depends="dist"> 
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask" 
      classpath="${j2ee.platform.classpath}"> 
    </taskdef> 
</target> 
<target name="weaving" description="perform weaving" depends="--weaving-def"> 
    <weave source="${build.classes.dir}" 
      target="${build.classes.dir}" 
      loglevel="INFO"> 
     <classpath path="${j2ee.platform.classpath}:${javac.classpath}"/> 
    </weave> 
</target> 

si può vedere che ho usato solo le variabili comunemente utilizzati in tutti i progetti Netbeans Java EE Ant. Non ho definito nessun jar direttamente solo le variabili che sono già state definite nel progetto.

Nella mia applicazione sto usando la struttura di directory esplosa e la mia persistence.xml è sotto il

${build.classes.dir}/META-INF/persistence.xml 

La cosa più importante è stato quello di definire correttamente classpath.

Ora, se corro

ant weaving 

della tessitura statica sarà fatto. Ci vogliono circa 15 secondi in più per essere compilato in questo modo solo sul server di test e sul server di produzione e non nel mio ambiente di sviluppo.

Se ho appena corsa semplice (o utilizzare il menu Genera Netbeans)

ant dist 

l'edificio sarà derivata normale senza tessitura.

Certo che ho una definizione di tessitura nei miei persistence.xml come questo:

<persistence-unit name="MY-PU" transaction-type="JTA"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>mydata</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/> 
     <property name="eclipselink.logging.level" value="INFO"/> 
     <property name="eclipselink.weaving" value="static"/> 
    </properties> 
</persistence-unit> 
+0

Grazie per il bellissimo commento Miklos. Probabilmente seguirò il tuo setup per migliorare il mio tempo di compilazione :-) – salocinx

Problemi correlati