0

非常に古いバージョンの 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)、サポートされている場合、どのように機能させるのですか?

どうもありがとう

4

1 に答える 1

1

2 つの永続化ユニットを含む単一の persistence.xml を作成してみませんか?

于 2013-03-13T02:33:57.977 に答える