2012-04-20 25 views
5

ऐप्लिकेशन वर्शन: JBoss 7.0.0, ओरेकल 11g (ojdbc6.jar) और JDK 6 संस्करणjava.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 ढाला नहीं जा सकता

मुझे एक समस्या है जब मैं CLOB.createTemporary फ़ंक्शन का उपयोग करके CLOB डेटा प्रकार के मान को सम्मिलित करने का प्रयास कर रहा हूं, नीचे अपवाद प्राप्त कर रहा हूं।

java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 cannot be cast to oracle.jdbc.OracleConnection

एकाधिक मंचों में खोज करने के बाद, कोई समाधान नहीं मिला। https://forums.oracle.com/forums/thread.jspa?threadID=279238

WAR फ़ाइल को तैनात करने और जेबॉस ऑरैक ड्राइवर पूल कॉन्फ़िगरेशन को कॉन्फ़िगर करने के लिए आवश्यक बुनियादी चरणों को किया जाता है। लेकिन, अभी भी इस मुद्दे से गुजरने में सक्षम नहीं है।

कृपया इस समस्या को ठीक करने के लिए समाधान प्रदान करें।

+0

[यह] (http://stackoverflow.com/q/277665/1285418) आपकी मदद कर सकता है। –

+0

क्या आप ojdbc6.jar के साथ ojdbc6.jar को प्रतिस्थापित कर सकते हैं और ड्राइवर वर्ग का नाम oracle.jdbc.OracleDriver – Phani

+0

फ़ानी की जांच कर सकते हैं, मैं जावा 6 संस्करण का उपयोग कर रहा हूं और ऑरैकल से कनेक्ट करने के लिए संबंधित ड्राइवर ojdbc6.jar होना चाहिए। पता है कि आप इसे ojdbc14.jar फ़ाइल से कैसे जोड़ रहे हैं? – Rajkumar

उत्तर

6

मैंने नीचे की ओर से मेरी समस्या हल कर दी है।

सारांश: क्लास लोडर को सर्वर lib/मॉड्यूल और वेब संग्रह (WAR फ़ाइल) में ओरेकल ड्राइवर लोड नहीं करना चाहिए। ऑर्केकल ड्राइवर को केवल सर्वर lib (JBoss 7 ver) में रखें।

JBoss 7:

  • एक नया JBoss तैनाती डिस्क्रिप्टर फ़ाइल (jboss तैनाती-structure.xml)

    1. अपडेट किया गया (बनाया गया ironjacamar-jdbc-1.0.3.Final .jar) जेबॉस परिनियोजन संरचना फ़ाइल में लौह मॉड्यूल
    2. जेबीएसएस 7 संरचना में मॉड्यूल के रूप में ojdbc6.jar बनाया गया jboss परिनियोजन संरचना f में objbc मॉड्यूल को अद्यतन किया गया इले
    3. उदाहरण:

      <jboss-deployment-structure> 
          <deployment> 
           <dependencies> 
            <module name="org.jboss.ironjacamar.jdbcadapters" slot="main"/> 
            <module name="com.oracle.ojdbc6" slot="main"/> 
           </dependencies> 
          </deployment> 
      </jboss-deployment-structure> 
      

वेब मॉड्यूल: - हटाया वेब संग्रह से ojdbc6.jar फ़ाइल (युद्ध फ़ाइल)

आप किसी भी समस्या मिल जाती है हल करने में, कृपया मुझे बताएं।

+0

समाधान बहुत अच्छा है लेकिन ध्यान दें , मॉड्यूल नाम जेबॉस स्वयं में कॉन्फ़िगर किए गए हैं। मुझे 'com.oracle.ojdbc6'' com.oracle' में बदलना पड़ा। – chillworld

1

यहां क्या हो रहा है यह है कि जेबॉस ओरेकल कनेक्शन (oracle.jdbc.OracleConnection) को अपने स्वयं के साथ लपेटता है (org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6)। अंतर्निहित कनेक्शन प्राप्त करने के लिए आपको #getUnderlyingConnection() पर कॉल करना होगा।

WrappedConnection wrapped = (WrappedConnection) conn; 
CLOB clob = CLOB.createTemporary(wrapped.getUnderlyingConnection(), true, CLOB.DURATION_SESSION); 

हालांकि मैं खुद से पूछता हूं कि निम्नलिखित आपके मामले में भी काम नहीं करेगा।

ps.setClob(4, new StringReader(data)); 
+0

हाय फिलिप, मैं आपका जवाब समझ सकता हूं। अब जिस समस्या का सामना कर रहा हूं वह है, मैं लपेटने के लिए "conn" ऑब्जेक्ट को कास्ट करने में सक्षम नहीं हूं। जबकि मैं टाइपकास्ट करने का प्रयास करता हूं, मुझे यह अपवाद मिल जाता है "java.lang.ClassCastException: org.jboss.jca.adapters.jdbc.jdk6.WrappedConnectionJDK6 को oracle.jdbc.OracleConnection" – Rajkumar

+0

पर नहीं डाला जा सकता है तो 'लपेटा कनेक्शन # getUnderlyingConnection() 'फिर से एक' लपेटा कनेक्शन कनेक्शन जेडीके 6 'देता है? क्या आपने पूरे 'CLOB.createTemporary' कोड को हटाया है (और' लपेटा हुआ कनेक्शन 'पर कास्ट) और बस' ps.setClob (4, नया स्ट्रिंग रीडर (डेटा)) के साथ जाएं; ' –

0

JRuby 1.7.2, JBoss 7.1 और Oracle (oracle_enhanced अनुकूलक)

Java::JavaLang::ClassCastException: oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 

यह समाधान मेरे लिए काम किया के साथ एक रेल अनुप्रयोग में एक ऐसी ही समस्या मिल गया।

मैं रेल अनुप्रयोग के config/निर्देशिका में jboss तैनाती-structure.xml रख दिया और गाने वाला कॉन्फिग अद्यतन युद्ध फ़ाइल में फ़ाइल शामिल करने के लिए:

config.webinf_files += FileList["config/jboss-deployment-structure.xml"] 

तैनाती के बाद सब ठीक काम किया। .. बहुत धन्यवाद।