Выпуск библиотеки Hibernate GlassFishV3 - PullRequest
5 голосов
/ 01 июля 2010

Я пытаюсь развернуть файл JAR на сервере GlassFishv3.Это приводит к ошибке:

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».В результате стеклянная рыба больше не запускается.Это переходит в тайм-аут.Последняя запись в журнале:

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 пуста.

Есть идеи, как переместить formard?

Ответы [ 3 ]

4 голосов
/ 01 июля 2010

Если вы хотите использовать Hibernate в качестве поставщика JPA, мой совет - установить модуль Hibernate JPA через Центр обновления GlassFish v3 :

alt text http://a.yfrog.com/img80/5218/screenshot009z.png

Другим способом было бы упаковать Hibernate EntityManager в вашего приложения.Хотя не экспериментировал с этим.

2 голосов
/ 03 июля 2010

И для записи, версия командной строки для добавления пакета Hibernate:

bin/pkg install hibernate
0 голосов
/ 13 июля 2014

Интеграция Hibernate-JTA-JPA-EJB-GlassFish-MySQL: 1- Hibernate-JPA-EJB-GlassFish-MySql. Это руководство предназначено для интеграции hibernate.4.3.5, EJB и GlassFish.4.0 в IDE NetBeans.8.0.Создайте веб-проект в сетевых компонентах и ​​добавьте в проект файлы Jiber Hibernate, другие настройки, связанные с настройкой 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>

В вашем классе EJB (класс, который помечен @Stateless) для создания EntityManager используйте следующий синтаксис:

EntityManagerFactory emf = Persistence.createEntityManagerFactory ("omidashouriPU");EntityManager em = emf.createEntityManager ();em = emf.createEntityManager ();em.getTransaction () начинается ().em.persist (YourEntityObject);em.getTransaction (). end ();

Как вы знаете, когда вы используете «action-type = "Resource_Local», вы должны сами управлять транзакцией, то есть управлять открытием и закрытиемнаша транзакция является нашей ответственностью.

2- Hibernate-JPA-JTA-EJB-GlassFish-MySql: это руководство предназначено для интеграции hibernate.4.3.5, EJB, JTA и GlassFish.4.0 в IDE NetBeans.8.0.Создайте веб-проект в сетевых компонентах (внимание: не создавайте веб-проект с помощью maven, поскольку в IDE Netbeans.8.0 есть ошибка) и добавьте в проект файлы JAR-файлов гибернации, а другие настройки, связанные с настройкой MySql и glassfish, очень просты (простоопределить пул соединений и JDBC в разделе «Ресурсы»> «JDBC: пулы соединений JDBC и ресурсы JDBC», руководство по этому вопросу можно найти в Интернете, если вы его ищете) (внимание: для определения правильного JNDI сначала создайте временный проект, который зависит от JNDI, например JPAпроект в glassfish, затем скопируйте настройки, созданные в Glassfish для этого проекта, потому что в glassfish есть ошибка, когда вы собираетесь получить ping для MySQl при создании вашего первого пула подключений, если вы создаете его самостоятельно в glassfish), поэтомуЯ не описываю в этой статье, а затем создаю файл persistence.xml следующим образом:

<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>

В вашем классе EJB (класс, аннотированный @Stateless) для создания EntityManager используйте следующий синтаксис:

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

Как ты знаешь, когда тебеВы используете «транзакция-тип =« JTA », управление транзакцией не с вами, это означает, что управление открытием и закрытием транзакции является обязанностью сервера приложений (здесь GlassFish).В самом деле, если вы проверите свой файл persistence.xml в дизайне режима, перед выпадающим списком поставщика постоянства вы увидите, что теперь добавлен hibernate.

Уважаемый читатель, у меня было 3 дня на решение этой проблемы, пожалуйста, добавьте свойОпыт этой статьи для того, чтобы завершить ее, по любому вопросу вы можете отправить мне письмо на omidashouri@gmail.com.

...