7

Glassfish V2 で Spring HibernateJpaVendorAdapter で Hibernate 3.5.5 を使用しようとしていますが、Spring コンテキストが初期化されると次の例外が発生します。

java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getSharedCacheMode()Ljavax/persistence/SharedCacheMode;

org.hibernate.ejb.util.LogHelper.logPersistenceUnitInfo(LogHelper.java:39) で org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:517) で org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java) で:73)

問題は、Glassfish V2 が、Hibernate に同梱される 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

4

4 に答える 4

4

/domain/lib/endorsedJPA 2.0 jar をdirに入れてみることができます

于 2010-10-01T16:04:07.640 に答える
1

フィードバックをありがとう。jpa jar を /domain/lib/endorsed に入れるとうまくいきました。

設定...

<sun-web-app error-url="">
    <class-loader delegate="false"/>
</sun-web-app>

...私にとってはうまくいきませんでしたが、それは単にクラスが javax.

また、Spring の JPATemplate を取り除き、JPA @PersistenceContext EntityManager を直接使用しようとしましたが、これによりあらゆる種類の問題が発生しました。Glassfish v2 + Spring + Hibernate は友達ではありません!

于 2010-10-03T21:35:38.510 に答える
0

私の知る限り、単純にライブラリーを置き換えて、コンテナー管理のJPA 2.0 EntityManager を使用するだけでは、Java EE 5 コンテナーのコア JPA ライブラリーをアップグレードすることはできません。

ただし、アプリケーション レベルで提供される JPA 2.0 API ライブラリで JPA 2.0 実装を使用し、アプリケーション管理のJPA 2.0 EntityManager を使用することは可能です。

GlassFish v2 で 2 番目のアプローチを試すには、(アプリケーション ライブラリが最初に使用されるように) クラスローダー委任をオフにする必要があります。これは、次の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>
于 2010-10-01T17:31:35.780 に答える
0

Glassfish 2.1 は JPA 2 をサポートしていません。JPA 2 バージョンをダウンロードして$GLASSFISH_HOME/lib/endorsed/ディレクトリに貼り付け、commons-loggin1.1.jar に貼り付けましたが、これでうまくいきました。

次のようになります。

/glassfish/lib/endorsed$ 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

于 2012-08-31T14:52:18.173 に答える