1

JPA 2.0 と EclipseLink 実装を使用する Web アプリケーションを WebLogic 10.3.6 サーバーにデプロイしようとしています。

アプリを開発していたとき、Tomcat サーバーを使用してテストしました。Tomcat はアプリケーション サーバーではないため、Spring のロード タイム ウィーバーを使用してウィービングを行いました。

<bean id="emFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property value="classpath:META-INF/myPersistence.xml" name="persistenceXmlLocation" />
    <property name="dataSource" ref="dataSource" />
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
</bean>

Oracle のドキュメントには、「ダイナミック バイト コード ウィービングは、Oracle WebLogic などの Java EE 5 準拠のアプリケーション サーバーで自動的に有効になる」と記載されているためloadTimeWeaver、エンティティ マネージャー ファクトリ Bean からプロパティを削除しました。

<bean id="emFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property value="classpath:META-INF/myPersistence.xml" name="persistenceXmlLocation" />
    <property name="dataSource" ref="dataSource" />
</bean>

しかし、Web アプリケーションを WebLogic にデプロイしようとすると、次の例外がスローされます。

java.lang.IllegalStateException: LoadTimeWeaver を指定せずにクラス トランスフォーマーを適用できません

Oracle のドキュメントでデフォルトで有効になっていると記載されている場合でも、ランタイム ウィービングを有効にするために何かをする必要がありますか?

おそらく、WebLogic 10.3.6 が Java EE 6 ではなく Java EE 5 仕様を実装しているため、そのままでは JPA 2.0 をサポートしていないためです。パッチをインストールし、persistence.xml ファイルの名前を別の名前に変更する必要がありました。 (この場合は myPersistence.xml) であるため、WebLogic はそれを見つけることができません。この場合、サーバーでランタイム ウィービングを有効にするにはどうすればよいですか?

4

1 に答える 1