2011-08-24 17 views
5

मैं Websphere 7 जेपीए प्लगइन में बनाया का उपयोग नहीं करने के लिए, बजाय एक एप्लिकेशन वेब-INF/lib/मुक्त जेपीए 2 और एक मालिकाना हठ प्रदाता का उपयोग करना चाहते हैं। मैं वेबस्फीयर के लिए ओएसजीआई और जेपीए 2 फीचर पैक स्थापित नहीं कर सकता।websphere 7 और (आवेदन के आधार पर) खुले जेपीए 2

मूल रूप से, मैं एक सैक्स पार्स त्रुटि बस persistence.xml (संस्करण = "2" समर्थित नहीं) लोड करने की कोशिश हो रही थी। त्रुटि को ओपन-जेपीए 1.2.3 में एक वर्ग द्वारा फेंक दिया गया था। जब मैं websphere/appserver/bin/wsjpaversion.bat चलाता हूं, तो ओपन-जेपीए 1.2.3 जार प्रदर्शित होता है। डिफ़ॉल्ट रूप से यह ऐप में ओपन-जेपीए 2 जार ओवरराइड करता है। मैंने इस कॉन्फ़िगरेशन विकल्प के साथ ओपन-जेपीए 2 जार युक्त एक साझा लाइब्रेरी बनाई है: 'इस साझा लाइब्रेरी के लिए एक पृथक वर्ग लोडर का उपयोग करें'। मैंने अपने एप्लिकेशन क्लासलोडर को आखिरी बार पैर लोड करने के लिए सेट किया और इसे नया साझा लाइब्रेरी संसाधन सौंपा। 'संस्करण 2' त्रुटि चली गई है, लेकिन एक और समस्या है।

Caused by: javax.persistence.PersistenceException: Failed to load provider from META-INF/services 
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:121) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:91) 
    at java.lang.J9VMInternals.initializeImpl(Native Method) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:200) 
    ... 2 more 
Caused by: java.lang.ClassCastException: com.ibm.websphere.persistence.PersistenceProviderImpl incompatible with javax.persistence.spi.PersistenceProvider 
    at javax.persistence.spi.PersistenceProviderResolverHolder$DefaultPersistenceProviderResolver.getPersistenceProviders(PersistenceProviderResolverHolder.java:110) 
    ... 11 more 

एक और अधिक विस्तार: persistence.xml अंदर, प्रदाता तत्व मालिकाना PersistenceProviderImpl नहीं डिफ़ॉल्ट Websphere हठ प्रदाता पर सेट होने पर मैं एक EntityManager प्रारंभ करने की कोशिश मैं कोई त्रुटि मिलती है। तो यह वेबस्पेयर डिफ़ॉल्ट कहां से आ रहा है और मैं इसे कैसे रोकूं?

आप

+1

यकीन नहीं अगर यह मदद मिलेगी, लेकिन आप PARENT_LAST के लिए कक्षा लोडर नीति बदल सकते हैं (एक डिफ़ॉल्ट के रूप में की सिफारिश नहीं की, लेकिन यदि आप करने के लिए मजबूर कर रहे हैं आप ऐसा करने के लिए हो सकता है) –

+0

मैं एक ही समस्या हो रही है। कोई समाधान? –

उत्तर

4

धन्यवाद सुविधा पैक स्थापित करने के बिना, आप एक हारी हुई लड़ाई लड़ रहे हैं: (एक और महत्वपूर्ण टिप्पणी जब मैं persistence.xml पूरी तरह से निकालने के लिए, मैं एक ही त्रुटि मिल)। हालांकि यह संभव है अपनी खुद की जेपीए कार्यान्वयन में प्लग करने के लिए है, यह है कि जेपीए एपीआई के साथ — तो 7 जेपीए (देखें 1.0 संस्करण के लिए संबंधों को आप, उदाहरण के लिए था करने के लिए संभव नहीं है, here यह कैसे किया जाता है — कोई वर्ग लोडर नीति जुगलिंग उसमें बदलाव नहीं करेगी, हालांकि यह पहली बार मोहक लगती है)।

+0

आप सही हैं कि यह मुसीबत के लायक नहीं था। वेबस्पेयर 7 में जेपीए 1 भी इंटरवॉवन है। मुझे लगता है कि यह संभव है अगर आप अपने खुद के हठ प्रदाता समाधानकर्ता बनाने के लिए और डिफ़ॉल्ट websphere हठ प्रदाता जो classpath से भरी हुई है बाहर करते हैं, लेकिन मेरे लिए यह मुसीबत के लायक नहीं था। –

+2

@MorganDowell यह मुख्य कारण है कि हमारी कंपनी जेपीए 1.0 करने के लिए लाठी, नए अनुप्रयोगों में भी है - के रूप में हमारे सर्वर कई क्षुधा, एक ही समय में पुराने और नए होस्ट, हम बस के लिए पूरी तरह से अलग सर्वर समूहों की स्थापना करना होगा जेपीए 2 का उपयोग कर अनुप्रयोग, जो वित्तीय कारणों से व्यवहार्य नहीं है। – MaDa

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