いくつかの JPA エンティティでデプロイする Eclipse WTP 内の Tomcat で実行されているプロジェクトがあります。これらのエンティティで ChangeTracking を有効にしたいのですが、これにはウィービングを有効にする必要があります。Tomcat では動的ウィービングが許可されていないため、静的ウィービングでこれを行う必要があります。
これは可能ですか?Eclipse の Dali プラグインには、静的なウィービングの機能がないようです。
いくつかの JPA エンティティでデプロイする Eclipse WTP 内の Tomcat で実行されているプロジェクトがあります。これらのエンティティで ChangeTracking を有効にしたいのですが、これにはウィービングを有効にする必要があります。Tomcat では動的ウィービングが許可されていないため、静的ウィービングでこれを行う必要があります。
これは可能ですか?Eclipse の Dali プラグインには、静的なウィービングの機能がないようです。
はい、私は常にこれを行う可能性が非常に高いです。また、私は 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 があります。