2010-07-01 11 views
5

Sto tentando di distribuire un file JAR in un server GlassFishv3. Ciò genera l'errore:GlassFishV3 Hibernate library issue

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

ho pensato che la classe "org.hibernate.ejb.HibernatePersistence" manca e ha cercato di aggiungere librerie contengono nella cartella "glassfish \ domini \ domain1 \ lib". Li ho presi dalla mia cartella NetBeans "NetBeans 6.9 \ java \ modules \ ext \ hibernate". Il risultato è che il glassfish non si avvia più. Funziona in un timeout. L'ultima voce di registro è

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

L'autodeploy \ bundle cartella detto in quella voce è vuota.

Qualche idea su come spostare Formard?

risposta

2

E per la cronaca, la versione da riga di comando per aggiungere il pacchetto di Hibernate è:

bin/pkg install hibernate 
+0

Molto utile e più facile da eseguire :) Grazie! – Geoffroy

0

Integrazione Hibernate-JTA-APP-EJB-GlassFish-MySQL: 1- Hibernate-APP-EJB- GlassFish-MySql: Questa guida è per l'integrazione di hibernate.4.3.5 e EJB e GlassFish.4.0 nell'IDE di NetBeans.8.0. Creare un progetto web in grani netti e aggiungere i file jar Hibernate per il progetto, altre impostazioni relative alla configurazione di MySQL e GlassFish è molto semplice in modo da non descrivo in questo articolo quindi creare file persistence.xml come segue:

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

nella classe EJB (classe che annotato con @Stateless) per la creazione di utilizzo EntityManager seguente sintassi:

EntityManagerFactory fem = Persistence.createEntityManagerFactory ("omidashouriPU"); EntityManager em = emf.createEntityManager(); em = emf.createEntityManager(); em.getTransaction(). Begin(); em.persist (YourEntityObject); em.getTransaction(). End();

Come sapete quando si utilizza "transaction-type =" Resource_Local ", è necessario gestire la transazione da soli, il che significa che la gestione dell'apertura e della chiusura della transazione è di nostra responsabilità.

2- Hibernate-JPA-JTA-EJB-GlassFish-MySql: Questa guida è per l'integrazione di hibernate.4.3.5 e EJB e JTA e GlassFish.4.0 in NetBeans.8.0 IDE. Creare un progetto web in net bean (attenzione: non creare progetti web con Maven perché c'è un bug in Netbeans.8.0 IDE) e aggiungi i file jar di ibernazione al progetto, altre impostazioni relative alla configurazione di MySql e glassfish sono molto semplici (basta definire Pool di connessione e JDBC in Risorse> JDBC: JDBC Connection Pools & JDBC Resources, la guida per questo è nel web se (cercate: per definire un JNDI corretto, prima create un progetto temporaneo che dipende da JNDI come il progetto JPA in glassfish, quindi copiate le impostazioni create in Glassfish per questo Progetto perché c'è un bug nel glassfish quando stanno per ottenere un ping a MySQL nella creazione del tuo primo collegamento Pool se si crea da soli all'interno del GlassFish) in modo da non descrivo in questo articolo quindi creare file persistence.xml come segue:

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

in Your Classe EJB (classe che annota Ted con @Stateless) per la creazione di utilizzo EntityManager seguente sintassi:

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

Come si sa quando si utilizza “operazione-type = 'JTA', gestione di transazione non è con te, vuol dire che, la gestione dell'apertura e la chiusura della transazione è responsabilità del server delle applicazioni (Here GlassFish). Infatti, se si controlla persence.xml in modalità progettazione, davanti alla casella a tendina del provider di persistenza è possibile visualizzare l'ibernazione ora aggiunta.

Caro lettore, ho trascorso 3 giorni a risolvere questo problema, aggiungi la tua esperienza a questo articolo per completarlo, per qualsiasi domanda puoi inviarmi email a [email protected]