2011-11-10 18 views
6

का उपयोग करने के लिए हाइबरनेट को कॉन्फ़िगर करें हमें वेबस्पेयर 7 को बेवकूफ़ बनाने के लिए persistence.xml का नाम बदलना होगा, इसके अंतर्निहित OpenJPA का उपयोग न करें।एक नामित persistence.xml

यह है जब आप वसंत का उपयोग करें, आप सिर्फ अपनी इकाई प्रबंधक कारखाने persistence.xml के लिए एक और स्थान का उपयोग करने की हिदायत करने के लिए बहुत आसान है:

<property name="persistenceXmlLocation" value="META-INF/persistence-xxx.xml"/> 

लेकिन अब हम वसंत के बिना सादे हाइबरनेट/जेपीए उपयोग करना चाहते हैं , और वैकल्पिक persistence.xml स्थान निर्दिष्ट करने के लिए कोई रास्ता नहीं मिल सका।

JPA2 कल्पना इसके बारे में कुछ नहीं कहा ...

कोई सुराग? क्या पुनर्निर्मित persistence.xml का उपयोग करने के लिए हाइबरनेट को निर्देश देना संभव है?

======

ऐसा लगता है कि यह नहीं हाइबरनेट पढ़ एक फ़ाइल persistence.xml नाम बदलकर बनाने के लिए संभव है। और मेरे मामले में आवश्यक नहीं है।

उत्तर

3

जहाँ तक मुझे पता है, persistence.xml फ़ाइल का स्थान बदलना संभव नहीं है।

इसके अलावा इस दस्तावेज़ को देखें: Alternate JPA Providers in WebSphere Application Server, ऐसा लगता है कि आप इसे persistence.xml फ़ाइल में निर्दिष्ट करके और अपने आवेदन में आवश्यक जार एम्बेड करके हाइबरनेट को जेपीए प्रदाता के रूप में उपयोग करने में सक्षम होना चाहिए।

सुनिश्चित करें कि आपके persistence.xml जेपीए प्रदाता के रूप में हाइबरनेट को निर्दिष्ट किया गया है:

<persistence> 
    <persistence-unit name="myapp"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 

आप साझा पुस्तकालय बनाने और उसका उपयोग करना एक विकल्प के हठ प्रदाता का उपयोग करने के लिए WebSphere कॉन्फ़िगर करने के लिए इस लक्ष्य को प्राप्त करने के लिए सक्षम होना चाहिए। यहाँ आप इसे कैसे करना पा सकते हैं: Configuring the Java Persistence API (JPA) default persistence provider

संपादित इस जवाब में टिप्पणी में जानकारी को देखते हुए ऐसा लगता है समस्या, persistence.xml में इन गुणों को जोड़कर हल किया जा सकता के रूप में इस पोस्ट Websphere EntityManagerFactory creation problem में संकेत:

<property name="hibernate.transaction.manager_lookup_class" 
value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" /> 

<property name="hibernate.transaction.factory_class" 
value="org.hibernate.transaction.CMTTransactionFactory" /> 

यह जानकारी वेबस्पेयर एप्लिकेशन सर्वर दस्तावेज़ में वैकल्पिक जेपीए प्रदाता में भी प्रदान की जाती है।

+0

धन्यवाद! प्रत्येक बार जब हम एप्लिकेशन इंस्टॉल करते हैं, एक निर्देश लिखते हैं, तो इसमें अतिरिक्त स्थापना प्रक्रियाएं शामिल होंगी, लेकिन अगर हमें कोई अन्य रास्ता नहीं मिल रहा है और यह एकमात्र विकल्प है - हमें यह करना होगा ... –

+0

इसके अलावा, एक ले लो इस दस्तावेज़ को देखें: [वेबस्पेयर एप्लिकेशन सर्वर में वैकल्पिक जेपीए प्रदाता] (http: ////www.ibm.com/developerworks/mydeveloperworks/wikis/form/anonymous/api/library/53181ccd-bcd4-431f-b968-0b5f6d46d652/ दस्तावेज़/192a432b-28bb-4080-b037-345e5d83da76/लगाव/61e74f67-1d60-4120-ba25-ad7264c9f4f6/मीडिया/AlternateJPAProviders_TestReport.pdf)। ऐसा लगता है कि आप persistence.xml में 'प्रदाता' निर्दिष्ट करके और अपने आवेदन में आवश्यक जार एम्बेड करके हाइबरनेट का उपयोग करने में सक्षम होना चाहिए।उत्तर पर मेरा संपादन देखें। –

+0

Xavi, हमने प्रदाता निर्दिष्ट किया है ... लेकिन इसके परिणामस्वरूप 'सर्वर xg लगातार इकाई के लिए EntityManagerFactory फैक्ट्री नहीं बना सकता है org.hibernate.ejb.HibernatePersistence प्रदाता जार में: फ़ाइल:/सी:/आईबीएम/वेबस्पियर /wp_profile/installedApps/XXX/xxx-ear.ear/xxx-ejb.jar!/ मॉड्यूल। यह पाठ्यक्रम का एक अलग मुद्दा हो सकता है ... –

0

persistence.xml एक मेटा-आईएनएफ निर्देशिका में मौजूद होना चाहिए, आमतौर पर एक जार फ़ाइल के साथ पैक किया जाता है जिसमें आपकी इकाई कक्षाएं होती हैं। मैं क्या करता हूं कि मेरे पास ग्रहण के तहत एक अलग परियोजना में इकाई है, जिसमें मेटा-आईएनएफ निर्देशिका है जिसमें persistence.xml है, इसे एक जार फ़ाइल पैकेज करें, और इसे एप्लिकेशन प्रोजेक्ट निर्भरताओं में शामिल करें (यानी वेब-आईएनएफ/lib), या, इसे सीधे ऐप सर्वर पर तैनात करें।

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