非常に古いバージョンの Jboss (4.0.5 - JDK 1.5) を使用するプロジェクトに取り組んでいます。時間/予算の制約により、これを変更することはできません。
私のアプリは単一の EAR ファイルとしてデプロイされます。ear 内には、基本的なエンティティ管理を提供する JAR ファイルがあります。それを呼び出しますjpa-old.jar
。その JAR ファイルには、次のように呼び出される PU を定義する persistence.xml が含まれOldPersist
ています。
<persistence version="1.0" >
<persistence-unit name="OldPersist">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/MySqlDS</jta-data-source>
<class>com.oldjpa.OldEntity1</class>
<class>com.oldjpa.OldEntity2</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
</persistence-unit>
</persistence>
jar は、エンティティ自体と、CRUD 操作用のいくつかのアクセス EJB を提供します。EntityManger は、EJB に注入されます。@PersistenceContext(unitName = "OldPersist")
さまざまな理由から、古いエンティティ jar を維持することはもはや望ましくありません (設計の悪さ、コードの肥大化)。したがって、新しいエンティティ アクセス レイヤーを作成したいと思います。現時点では、EJB を介した新しいエンティティへのアクセスのみを提供しますが、古いコードは新しい JAR に移植される予定です。両方が同時に機能する必要があります。
そこで、以前と同じ構造を持つ新しい JAR ( ) を作成し、この persistence.xml を使用しjpa-new.jar
て新しい PU を定義します。NewPersist
<persistence version="1.0" >
<persistence-unit name="NewPersist">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/MySqlDS</jta-data-source>
<class>com.newjpa.NewEntity1</class>
<class>com.newjpa.NewEntity2</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
</persistence-unit>
</persistence>
2 つの PU 間でエンティティの相互管理がないことに注意してください。
次に、新しい JAR にいくつかの新しい EJB を作成し、EM に@PersistenceContext(unitName = "NewPersist")
展開時に、次のエラーが発生します。
WARN [org.jboss.system.ServiceController] Problem starting service persistence.units:ear=MyEar.ear,unitName=jpa-new.jar org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.oldjpa.OldEntity1 references an unknown entity:com.oldjpa.OldEntity2
Hibernate は新しい PU について不平を言っています - 古い PU によって管理されるべきエンティティに関して。
各 JAR を個別に試してみましたが、どちらも正常に動作します。私はpersistence.xmlに追加しようとし<jar-file>
ましたが、jbossは展開時にJARを見つけることができないと不平を言います(相対パスであると思われますが、何に対して相対的ですか?)。EAR の META-INF に共有の persistence.xml を追加しようとしました。同じエラーは発生しませんが、各 JAR ファイル内の EJB は、PU が見つからないと文句を言います。
私の質問は、この構成がサポートされているか (それぞれが独自の persistence.xml を持つ複数の jar)、サポートされている場合、どのように機能させるのですか?
どうもありがとう