2010-07-01 2 views
5

Je tente de déployer un fichier JAR dans un serveur GlassFishv3. Il en résulte l'erreur:Problème de bibliothèque Hibernate de GlassFishV3

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

Je pensais que la « org.hibernate.ejb.HibernatePersistence » de classe est manquant et essayé d'ajouter des bibliothèques contenant dans le dossier « GlassFish \ domaines \ domain1 \ lib ». Je les ai pris dans mon dossier NetBeans "NetBeans 6.9 \ java \ modules \ ext \ hibernate". Le résultat est que le glassfish ne démarre plus. Il court dans un délai d'attente. La dernière entrée de journal est

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}|#] 

Le dossier autodeploy \ bundles mentionné dans cette entrée est vide.

Une idée de comment déplacer le formard?

Répondre

2

Et pour l'enregistrement, la version en ligne de commande pour ajouter le package Hibernate est:

bin/pkg install hibernate 
+0

Très utile, et plus facile à courir :) Merci! – Geoffroy

0

intégration Hibernate-JTA-JPA-EJB-GlassFish-MySQL: 1- Mise en veille prolongée JPA-EJB- GlassFish-MySql: Ce guide concerne l'intégration d'Hibernate.4.3.5 et d'EJB et de GlassFish.4.0 dans l'EDI NetBeans.8.0. Créer un projet web dans les haricots net et ajouter des fichiers jar de mise en veille prolongée au projet, un autre paramètre lié à la configuration de MySql et GlassFish est très simple, donc je ne décris pas dans cet article, puis de créer un fichier persistence.xml comme suit:

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

dans votre classe EJB (classe qui annotées avec @Stateless) pour créer une utilisation EntityManager syntaxe suivante:

EntityManagerFactory fem = Persistence.createEntityManagerFactory ("omidashouriPU"); EntityManager em = emf.createEntityManager(); em = emf.createEntityManager(); em.getTransaction(). Begin(); em.persist (YourEntityObject); em.getTransaction(). End(); Comme vous le savez lorsque vous utilisez "transaction-type =" Resource_Local ", vous devez gérer la transaction par vous-même, cela signifie que la gestion de l'ouverture et la fermeture de la transaction est de notre responsabilité.

2- Hibernate-JPA-JTA-EJB-GlassFish-MySql: Ce guide est pour l'intégration de Hibernate.4.3.5 et EJB et JTA et GlassFish.4.0 dans l'EDI NetBeans.8.0. Créer un projet web dans les beans nets (attention: ne faites pas de projet web avec maven car il y a un bug dans Netbeans.8.0 IDE) et ajouter des fichiers JAR hibernate au projet, d'autres paramètres liés à la configuration MySQL et glassfish est très simple (Il suffit de définir le pool de connexion et JDBC dans les ressources> JDBC: JDBC Connection Pools & Ressources JDBC, des conseils pour cela est dans le web si vous le recherchez) (attention: pour définir un JNDI correct, créez d'abord un projet temporaire qui dépend de JNDI comme projet JPA dans glassfish, puis copiez les paramètres créés dans Glassfish pour ce projet car il y a un bug dans glassfish quand vous allez obtenir un ping à MySQl dans la création de votre première connexion Piscine si vous créez par vous-même à l'intérieur du GlassFish) donc je ne décris pas dans cet article, puis de créer un fichier persistence.xml comme suit:

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

dans votre Classe EJB (classe annota ted avec @Stateless) pour créer une utilisation EntityManager syntaxe suivante:

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

Comme vous le savez lorsque vous utilisez « transaction type = « JTA », la gestion de la transaction ne sont pas avec vous, dire que, la gestion de l'ouverture et la fermeture de la transaction est la responsabilité du serveur d'application (Here GlassFish). En effet, si vous vérifiez votre persistence.xml dans la conception de mode, en face de la boîte déroulante du fournisseur de persistance vous pouvez voir hibernate est maintenant ajouté.

Cher lecteur, j'ai passé 3 jours pour résoudre ce problème, s'il vous plaît ajouter votre expérience à cet article afin qu'il complète, pour toute question, vous pouvez m'envoyer un courriel à [email protected]