Glassfish V2をJPA 2.0にアップグレードしますか?
-
27-09-2019 - |
質問
Glassfish V2でSpring HibernateJPavendoradapterでHibernate 3.5.5を使用しようとしていますが、スプリングのコンテキストが初期化されている場合、次の例外が表示されます。
java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()Ljavax/persistence/SharedCacheMode;
org.hibernate.ejb.util.loghelper.logpersistenceunitinfo(loghelper.java:39)at org.hibernate.ejb.ejb3configuration.configure(ejb3configuration.java:517) :73)
問題は、Glassfish V2がhibernate-JPA-2.0-API-1.0.0.final.jarの前にサーバークラスパスにロードされるJPA1.0を使用していることです。 JPA 1.0には、PersistenceUnitinfoでGetSharedCacheModelメソッドがありませんが、JPA 2.0はそうです。
Glassfish V2をアップグレードしてJPA 2.0(またはこの問題のその他の解決策)を使用する方法はありますか?
乾杯、
j
解決
JPA 2.0ジャーを /domain/lib/endorsed
監督
他のヒント
フィードバックのみんなをありがとう。 JPAジャーを/domain/lib/boting edonsed in in in fort fort for for for confer emply。
設定...
<sun-web-app error-url="">
<class-loader delegate="false"/>
</sun-web-app>
...クラスがJavaxの一部であるからですが、私のためには機能しませんでした。
また、Springのjpatemplateを削除し、JPA @persistencontext EntityManagerを直接使用しようとしましたが、これはあらゆる種類の問題を引き起こしました。 Glassfish V2 + Spring + Hibernateは友達ではありません!
私の知る限り、Java EE 5コンテナコアJPAライブラリを単純に交換して使用して、 コンテナが管理しました JPA 2.0 EntityManager。
ただし、アプリケーションレベルで提供されるJPA 2.0 APIライブラリを使用してJPA 2.0の実装を使用し、 マネージドアプリケーション JPA 2.0 EntityManager。
Glassfish V2で2番目のアプローチを試すには、クラスローダー委任をオフにする必要があります(アプリケーションライブラリが最初に使用されるように)。これはaで構成できます sun-web.xml
下にパッケージ化したこと WEB-INF
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN"
"http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd">
<sun-web-app error-url="">
<class-loader delegate="false"/>
</sun-web-app>
Glassfish 2.1はJPA 2をサポートしません。JPA2バージョンをダウンロードして、 $GLASSFISH_HOME/lib/endorsed/
ディレクトリ、およびcommons-loggin1.1.jarに貼り付けられています。これは私にとって有効です。
このように見えます:
/glassfish/lib/承認$ ls
Activation.jar
openjpa-all-2.0.1.jar
commons-logging-1.1.jar
webservices-api.jar
http://glassfish.java.net/public/comparing_v2_and_v3.html
http://openjpa.apache.org/downloads.html