में हाइबरनेट संस्करण को अपग्रेड करें मेरे ईएआर के अंदर हीबर्नेट के अपने संस्करण (और जो कि जेबॉस डिफ़ॉल्ट रूप से लाता है) के अंदर जहाज भेजने की कोशिश करते समय मुझे कठिन समय हो रहा है।जेबीएसएस
<jboss-app>
<loader-repository>
com.example:archive=unique-archive-name
<loader-repository-config>
java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
</jboss-app>
और, हमेशा की तरह, मैं करने के लिए दृढ़ता इकाई में मेरे हठ प्रदाता की घोषणा:
तब मैं अपने तैनाती "स्कोप" निम्नलिखित युक्त एक jboss-app.xml फ़ाइल EAR में शामिल करके बनाया निम्नानुसार हाइबरनेट बनें:
<persistence>
<persistence-unit name="myapp">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
...
लेकिन फिर, सबसे खराब होता है। तैनाती पर, सर्वर एक ClassCastException फेंकता है जब यह जेपीए इंटरफ़ेस javax.persistence.spi.PersistenceProvider (जो HibernatePersistence द्वारा implimented है) करने के लिए org.hibernate.ejb.HibernatePersistence से कास्ट करने के लिए कोशिश करता है।
यह एक प्रकार का WEIRD है, क्योंकि मैं अपने ईएआर में जेपीए एपीआई भी भेज रहा हूं, इसलिए, ईएआर के वर्गों को जेबॉस के लिए प्राथमिकता है, इसे हाइबरनेट पेर्सिस्टेंस से पर्सिस्टेंसप्रोवाइडर तक कास्टिंग करते समय कोई समस्या नहीं होनी चाहिए, चूंकि वे एक ही कक्षा लोडर पर "होना चाहिए"।
यदि मैं अपना खुद का जेपीए एपीआई नहीं भेजता, तो तैनाती क्लास नॉटफाउंड अपवाद के साथ विफल हो जाती है जब जेबॉस कुछ जेपीए कक्षा खोजने की कोशिश करता है।
इस कास्टिंग में असफल होने का कोई विचार क्यों है?
मैं जेबॉस 5.1.0 का उपयोग कर रहा हूं, और हाइबरनेट 3.5.6 का उपयोग करने की कोशिश कर रहा हूं। जेपीए एपीआई संस्करण एक नियंत्रित हाइबरनेट संस्करण द्वारा पारगमन रूप से आयात किया जाता है।
धन्यवाद। हां, दोनों हाइबरनेट-कोर और हाइबरनेट-इकाई प्रबंधक भेज दिए जाते हैं। सामान्य/lib में हाइबरनेट जार रखने के लिए एक विकल्प नहीं है, हाइबरनेट भेज दिया जाना चाहिए (और यह संभव होना चाहिए ...)। – edutesoy