2

I've got a project running on Tomcat within Eclipse WTP that deploys with some JPA entities. I would like to enable ChangeTracking on these entities, but this requires enabling weaving. Since Tomcat doesn't allow for dynamic weaving, I need to do this with static weaving.

Is this possible? Eclipse's Dali plugin doesn't seem to have any facility for static weaving.

4

1 回答 1

2

是的,很可能我一直这样做。此外,我在 Eclipse WTP 中使用 Jetty(J2EE 预览版),它非常快并且运行良好,但在编织方面。制作一个 ant 可以处理的 weave.xml 文件,如下所示:

<?xml version="1.0"?>
<project name="MyProject" default="weaving" basedir=".">
  <property environment="env"/> 

    <path id="weavingclasspath"> 
      <fileset dir="${basedir}\\web\\WEB-INF\\lib">
        <include name="**/*.jar"/>
      </fileset>
        <fileset dir="${basedir}\\antlib">
        <include name="**/*.jar"/>
      </fileset>
      <pathelement location="classes"/>
      <dirset dir="${basedir}\\build">
        <include name="**/classes"/>
      </dirset>
    </path>


    <target name="define.task" description="New task definition for EclipseLink static weaving" > 
      <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask">
        <classpath refid="weavingclasspath"/> 
        </taskdef>
    </target> 

    <target name="weaving" description="perform weaving" depends="define.task"> 
        <weave loglevel="WARNING" source="${basedir}\\build\\classes\\"  target="${basedir}\\build\\classes\\">
     <classpath refid="weavingclasspath"/> 
     </weave>
    </target> 

</project> 

将它放在您的项目根目录中,并将其作为 Ant 任务执行。确保在完成后刷新您的项目,因为您的实体的所有 .class 文件都将被编织。我实际上将此任务链接到 Eclipse 构建过程,因此它是自动的。您可能需要为您的项目修改 ant 脚本中的一些文件路径才能使其正常工作,但您应该明白这一点。我的 antlib 里面有 servlet.jar(我不记得为什么),我的 WEB-INF/lib 有我所有的 web 项目 jar 以及 eclipselink。

于 2012-04-19T00:59:39.247 回答