2010-07-01 8 views
5

मैं एक ग्लासफ़िश 3 सर्वर में एक जेएआर फ़ाइल को तैनात करने की कोशिश कर रहा हूं। यह त्रुटि में परिणाम है:ग्लासफ़िशवी 3 हाइबरनेट लाइब्रेरी समस्या

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 \ डोमेन \ डोमेन 1 \ lib" करने के लिए इसे युक्त पुस्तकालयों जोड़ने की कोशिश की। मैंने उन्हें अपने नेटबीन फ़ोल्डर "नेटबीन 6.9 \ जावा \ मॉड्यूल \ 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 \ कि प्रविष्टि में वर्णित फ़ोल्डर बंडलों खाली है।

कोई विचार कैसे फॉर्मर्ड को स्थानांतरित करना है?

उत्तर

4

आप जेपीए प्रदाता के रूप में हाइबरनेट का उपयोग करना चाहते हैं, तो मेरी सलाह GlassFish v3 Update Center के माध्यम से हाइबरनेट जेपीए मॉड्यूल स्थापित करने के लिए किया जाएगा:

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

अन्य तरीके से हाइबरनेट EntityManager पैकेज होगा के अंदर आपका आवेदन। हालांकि इसका प्रयोग नहीं किया था।

2

और रिकार्ड के लिए, हाइबरनेट पैकेज जोड़ने के लिए कमांड लाइन संस्करण है:

bin/pkg install hibernate 
+0

बहुत उपयोगी है, और चलाने के लिए :) धन्यवाद आसान! – Geoffroy

0

एकता हाइबरनेट-JTA-जेपीए-EJB-ग्लासफिश-MySQL: 1- हाइबरनेट-जेपीए-EJB- ग्लासफ़िश-माईएसक्ल: यह मार्गदर्शन NetBeans.8.0 IDE में हाइबरनेट 4.3.5 और ईजेबी और ग्लासफ़िश.4.0 को एकीकृत करने के लिए है। शुद्ध सेम में एक वेब परियोजना बनाएँ और परियोजना, 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 ईएमएफ = Persistence.createEntityManagerFactory ("omidashouriPU"); EntityManager em = emf.createEntityManager(); em = emf.createEntityManager(); em.getTransaction()। शुरू करें(); em.persistist (YourEntityObject); em.getTransaction()। अंत();

जैसा कि आप जानते हैं कि जब आप "लेन-देन-प्रकार =" संसाधन_लोकल "का उपयोग कर रहे हैं, तो आपको लेनदेन का प्रबंधन करना होगा, इसका मतलब है कि, लेनदेन खोलने और बंद करने का प्रबंधन हमारी ज़िम्मेदारी है।

2- हाइबरनेट-जेपीए-JTA-EJB-ग्लासफिश-MySQL: यह मार्गदर्शन NetBeans.8.0 आईडीई में hibernate.4.3.5 और EJB और JTA और GlassFish.4.0 एकीकृत करने के लिए है। नेट बीन्स में एक वेब प्रोजेक्ट बनाएं (ध्यान दें: मैवेन के साथ वेब प्रोजेक्ट न बनाएं क्योंकि Netbeans.8 में एक बग है।0 आईडीई) और परियोजना, MySQL विन्यस्त और glassfish से संबंधित अन्य सेटिंग को हाइबरनेट जार फ़ाइलों को जोड़ बहुत सरल है (बस कनेक्शन पूल और JDBC संसाधन में परिभाषित> JDBC: JDBC कनेक्शन ताल & JDBC संसाधन, उस के लिए मार्गदर्शन वेब अगर में है आप इसके लिए खोज) (ध्यान: एक सही JNDI परिभाषित करने के लिए, पहले एक अस्थायी परियोजना जो glassfish में जेपीए परियोजना की तरह JNDI पर निर्भर करता है बनाते हैं, तो उस Glassfish में इस परियोजना के लिए बनाई गई है सेटिंग्स की प्रतिलिपि क्योंकि वहाँ glassfish में एक बग है जब आप तो इस प्रकार persistence.xml फ़ाइल बनाने यदि आप इसे अपने आप को बनाने के द्वारा glassfish अंदर अपना पहला कनेक्शन पूल बनाने में MySQL के लिए एक पिंग प्राप्त करने के लिए जा रहे हैं) तो मैं इस लेख में वर्णन नहीं करते:

<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 उपयोग बनाने के लिए @Stateless साथ टेड):

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

जब आप उपयोग कर रहे हैं "लेन-देन प्रकार =" JTA पता के रूप में ", लेनदेन का प्रबंधन आप के साथ नहीं है, इसका मतलब यह है कि उद्घाटन के प्रबंध और लेनदेन को बंद करना एप्लिकेशन सर्वर (यहां ग्लासफ़िश) ज़िम्मेदारी है। दरअसल यदि आप मोड डिज़ाइन में अपनी persistence.xml की जांच करते हैं, तो दृढ़ता प्रदाता ड्रॉप डाउन बॉक्स के सामने आप देख सकते हैं कि हाइबरनेट अब जोड़ा गया है।

प्रिय पाठक, मैंने इस समस्या को हल करने के लिए 3 दिन व्यतीत किए थे, कृपया इस आलेख में अपना अनुभव जोड़ें ताकि इसे पूरा किया जा सके, किसी भी प्रश्न के लिए आप मुझे [email protected] पर ईमेल भेज सकते हैं।

संबंधित मुद्दे