WAR、ユーティリティ プロジェクト、および JPA プロジェクトを含む EAR アプリケーションがあります。JPA プロジェクトにはすべてのエンティティ クラスが含まれており、META-INF ディレクトリには、次のように定義されている persistence.xml があります。
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="TestJPA">
<description>openjpa</description>
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<jta-data-source>jdbc/TestSource</jta-data-source>
<class>model.TestTable1</class>
<class>model.TestTable2</class>
</persistence-unit>
</persistence>
web.xml には、持続性ユニット用に次のものが含まれています。
<persistence-unit-ref>
<persistence-unit-ref-name>peristence/TestJPA</persistence-unit-ref-name>
<persistence-unit-name>TestJPA</persistence-unit-name>
</persistence-unit-ref>
私たちのWebサービスには、次のものがあります。
@PersistenceContext(name="peristence/TestJPA", unitName="TestJPA")
private EntityManagerFactory emf;
アプリケーションがデプロイされると、emf はインスタンス化されません。常に null です。引数の有無にかかわらず、 @PersistenceUnit も試しました。
また、InitialContext ルックアップを使用して EntityManager を取得するという別のアプローチも試しました。このアプローチを使用すると、リソース名が見つからないという例外がスローされます。
最後に試したアプローチは次のとおりです。
em = (EntityManager) Persistence.createEntityManagerFactory("TestJPA");
次の例外が発生します
java.lang.ClassCastException: com.ibm.ws.persistence.EntityManagerFactoryImpl incompatible with javax.persistence.EntityManager
EAR を使用した OpenJPA デプロイメントに関するあらゆる種類のチュートリアルを探しましたが、それらはすべて JPA 2 または Spring を使用した OpenJPA 1 用です。
どんな助けでも大歓迎です。