0

DataNucleus を JPA プロバイダーとしてアプリケーションを作成することで、JavaEE を学んでいます。私はテストに Eclipse IDE と Apache Tomcat サーバーを使用しているため、ランタイム拡張機能をセットアップして、各テスト展開でクラスのバイト コンパイルを回避したいと考えています。

ドキュメントに従って、これをpersistence.xmlファイルに追加しました:

<property name="datanucleus.jpa.addClassTransformer" value="true"/>

ただし、とにかく私のクラスは強化されません。私が得るエラーメッセージは次のとおりです。

org.datanucleus.exceptions.NucleusUserException: Found Meta-Data for
class pbf.model.Message but this class is either not enhanced or you
have multiple copies of jdo-api.jar in your CLASSPATH!! Make sure all
persistable classes are enhanced before running DataNucleus and/or the
CLASSPATH is correct.

ドキュメントは、Java EE がコマンドラインでも javaagent を指定する必要があるかどうかについて、ややあいまいです。もしそうなら、EclipseのTomcatサーバーでそれを行うにはどうすればよいですか? サーバーの起動時に、カスタム コマンドラインや Java 引数のオプションが表示されません。

すべての依存関係とともに、maven リポジトリからダウンロードした datanucleus-accessplatform-jpa-rdbms v.3.3.0-release を使用します。

4

1 に答える 1

1

Tomcatは「本物の」JavaEEサーバーAFAIKではなく、単なるサーブレットコンテナであり、この状況ではJPA仕様のJavaEEサーバーの側面を実装していません(つまり、DataNucleusが質問で登録したJPA ClassTransformerを使用するか、正しいコンストラクターなどを使用した EMF など)。したがって、エージェント トランスフォーマーの使用をサポートするすべての JPA 実装と同じように、JVM コマンド ラインを介して Java エージェントを使用する標準的な Java の方法を使用する必要があります。

于 2013-08-05T12:35:35.360 に答える