2012-05-03 10 views
9

Estoy usando Netbeans 7.1.1 y un servidor Glassfish 3.1.2. Como proveedor de JPA, decidí usar eclipse-link 2.3.0 que se envía con Netbeans. Como quiero utilizar la recuperación diferida y mi proyecto consiste en aproximadamente 45 clases de entidad JPA que tienen muchas relaciones entre ellas, decidí usar tejido estático. Además, las clases @Entity se encuentran en un proyecto separado de clase Lib, mientras que persistence.xml reside en el proyecto EJB.¿Cómo aplicar la Tarea ant estática tejida con Eclipse-Link JPA en Netbeans?

ya he seguido las instrucciones aquí: http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

puse la hormiga en tareas en el archivo de acumulación impl.xml (abajo). ¿Es correcto cuando utilizo Netbeans? Aquí está el fragmento de acumulación 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> 

Todos jar-archivos de las rutas pathelement También se incluyen como bibliotecas en el IDE Netbeans. Al golpear "Clean & Construir", ahora sale el siguiente error:

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

Qué hago mal?

Respuesta

4

Debe agregar eclipselink.jar y javax.persistence.jar al classpath de Ant.

En Netbeans vaya a Herramientas/Opciones/Varios/Ant, y edite classpath allí.

+1

muchas gracias peter! también es posible definir directamente el classpath dentro de la etiqueta . Además, se deben definir objetivos adicionales en el build.xml en lugar de build-impl.xml. Para ejecutar las tomas, asigne un atajo haciendo clic con el botón derecho en la tarea definida en la vista de archivo dentro del IDE de Netbeans y seleccione "crear acceso directo". – salocinx

2

También he tenido que incluir org.eclipse.persistence.jpa.jpql_1.0.1.jar y org.eclipse.persistence.jpa.modelgen.processor-2.3.2.jar el fin de llevar a tejer vivir. Espero que esto ayude.

3

También estoy usando Netbeans 8.0.1 para el desarrollo de proyectos Java EE con EclipseLink 2.4.2 en TomEE 1.7.0 y acabo de poner lo siguiente en mi build.xml (nunca modifico acumulación impl.xml porque Netbeans puede sobrescribir cuando algo se modifica la configuración, 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> 

se puede ver que he utilizado solamente las variables que se utilizan comúnmente en todos los proyectos NetBeans Java EE Ant. No he definido ningún contenedor directamente solo las variables que se definieron en el proyecto.

En mi aplicación que estoy utilizando la estructura de directorio expandido y mi persistence.xml está bajo el

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

Lo más importante era definir la ruta de clase correctamente.

Ahora si me quedo

ant weaving 

se llevará a cabo el tejido estático. Tarda aproximadamente 15 segundos más para compilarse, así que estoy construyendo de esta manera solo en el servidor de prueba y el servidor de producción y no en mi entorno de desarrollo.

Si me quedo sólo simple (o utilizar el menú de construcción Netbeans)

ant dist 

El edificio será dado como resultado normal sin tejer.

Por supuesto que tengo una definición de tejer en mis persistence.xml así:

<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

Gracias por el gran comentario Miklos. Probablemente seguiré tu configuración para mejorar mi tiempo de compilación :-) – salocinx

Cuestiones relacionadas