5

GlassFishv3 サーバーに JAR ファイルをデプロイしようとしています。これにより、次のエラーが発生します。

com.sun.enterprise.admin.cli.CommandException: 
remote failure: 
Exception while preparing the app : 
java.lang.RuntimeException:
java.lang.ClassNotFoundException: 
org.hibernate.ejb.HibernatePersistence

クラス「org.hibernate.ejb.HibernatePersistence」が欠落していると考え、それを含むライブラリをフォルダー「glassfish\domains\domain1\lib」に追加しようとしました。NetBeans フォルダ "NetBeans 6.9\java\modules\ext\hibernate" からそれらを取得しました。その結果、glassfish が起動しなくなりました。タイムアウトになります。最後のログエントリは

INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=21;_ThreadName=Thread-1;|{felix.fileinstall.poll (ms) = 5000, felix.fileinstall.dir = C:\glassfishv301\glassfish\domains\domain1\autodeploy\bundles, felix.fileinstall.debug = 1, felix.fileinstall.bundles.new.start = true, felix.fileinstall.tmpdir = C:\DOKUME~1\me\LOKALE~1\Temp\fileinstall-8074722487477598658, felix.fileinstall.filter = null}|#]

そのエントリに記載されている autodeploy\bundles フォルダは空です。

フォームドを移動する方法はありますか?

4

3 に答える 3

4

Hibernate を JPA プロバイダーとして使用する場合、 GlassFish v3 Update CenterからHibernate JPAモジュールをインストールすることをお勧めします。

代替テキスト http://a.yfrog.com/img80/5218/screenshot009z.png

もう 1 つの方法は、アプリケーション内にHibernate EntityManager をパッケージ化することです。ただし、これを実験しませんでした。

于 2010-07-01T18:35:51.227 に答える
2

記録のために、Hibernate パッケージを追加するためのコマンドライン バージョンは次のとおりです。

bin/pkg install hibernate
于 2010-07-03T08:38:51.900 に答える
0

統合 Hibernate-JTA-JPA-EJB-Gla​​ssFish-MySQL: 1- Hibernate-JPA-EJB-Gla​​ssFish-MySql: このガイダンスは、hibernate.4.3.5 と EJB および GlassFish.4.0 を NetBeans.8.0 IDE に統合するためのものです。ネット Bean で Web プロジェクトを作成し、プロジェクトに hibernate jar ファイルを追加します。MySql と glassfish の構成に関連するその他の設定は非常に簡単なので、この記事では説明しません。次に、次のように persistence.xml ファイルを作成します。

<persistence-unit name="omidashouriPU" transaction-type="Resource_Local">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/YourSchemaName"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="yourpassword"/>
            <property name="hibernate.show_sql" value="true"/>
    </properties>
</persistence-unit>

EntityManager を作成するための EJB クラス (@Stateless でアノテーションを付けたクラス) では、次の構文を使用します。

EntityManagerFactory emf = Persistence.createEntityManagerFactory("omidashouriPU"); EntityManager em = emf.createEntityManager(); em = emf.createEntityManager(); em.getTransaction().begin(); em.persist(YourEntityObject); em.getTransaction().end();

「transaction-type="Resource_Local" を使用している場合はご存知のように、トランザクションを自分で管理する必要があります。つまり、トランザクションの開始と終了の管理は私たちの責任です。

2- Hibernate-JPA-JTA-EJB-Gla​​ssFish-MySql: このガイダンスは、hibernate.4.3.5 と EJB および JTA と GlassFish.4.0 を NetBeans.8.0 IDE に統合するためのものです。ネット Bean で Web プロジェクトを作成し (注意: Netbeans.8.0 IDE にはバグがあるため、maven で Web プロジェクトを作成しないでください)、プロジェクトに hibernate jar ファイルを追加します。MySql と glassfish の構成に関連する他の設定は非常に簡単です (ちょうどResources>JDBC:JDBC Connection Pools & JDBC Resources で Connection Pool と JDBC を定義します。そのためのガイダンスは、検索すると Web にあります)(注意: 正しい JNDI を定義するには、最初に JPA のような JNDI に依存する一時プロジェクトを作成します。グラスフィッシュのプロジェクト、

<persistence-unit name="omidashouriPU" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>jdbc/yourJNDI (which you defined in glassfish) </jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/YourSchemaName"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="yourpassword"/>
            <property name="hibernate.show_sql" value="true"/>
    </properties>
  </persistence-unit>

EntityManager を作成するための EJB クラス (@Stateless でアノテーションを付けたクラス) では、次の構文を使用します。

@PersistenceContext(unitName = " omidashouriPU ")
EntityManager em;
em.persist(YourEntityObject);

「transaction-type="JTA" を使用している場合、トランザクションの管理はユーザーにはありません。つまり、トランザクションの開始と終了の管理は、アプリケーション サーバー (ここでは GlassFish) の責任です。実際、モードの設計で persistence.xml を確認すると、永続化プロバイダーのドロップダウン ボックスの前に hibernate が追加されていることがわかります。

読者の皆様、私はこの問題を解決するために 3 日間費やしました。この記事を完成させるために、あなたの経験をこの記事に追加してください。

于 2014-07-13T09:17:08.140 に答える