2

いくつかの JPA エンティティでデプロイする Eclipse WTP 内の Tomcat で実行されているプロジェクトがあります。これらのエンティティで ChangeTracking を有効にしたいのですが、これにはウィービングを有効にする必要があります。Tomcat では動的ウィービングが許可されていないため、静的ウィービングでこれを行う必要があります。

これは可能ですか?Eclipse の Dali プラグインには、静的なウィービングの機能がないようです。

4

1 に答える 1

2

はい、私は常にこれを行う可能性が非常に高いです。また、私は Eclipse WTP で Jetty (J2EE Preview) を使用していますが、これは非常に高速でうまく機能します。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 に答える