2009-11-15 8 views
35

के सभी उप-वर्गों द्वारा ओवरराइड किया जाना चाहिए, मैं जेबॉस 5.1.0 पर एक डब्ल्यूएआर एप्लिकेशन में कुछ वेब सेवाओं को तैनात करने की कोशिश कर रहा हूं।सेटप्रोपर्टी को SOAPMessage

मैंने जेएक्स-डब्ल्यूएस उपकरण wsgen का उपयोग कर मौजूदा wsdl से स्रोत फ़ाइलों को बनाया है। इसने सेवा फ़ाइलों और @XmlType एनोटेटेड क्लोज़ बनाए जो अनुरोध और प्रतिक्रिया रैपर के रूप में कार्य करेंगे।

यह कक्षाएं जेबॉस 4.2.3 पर अच्छी तरह से काम करती हैं, लेकिन जब जेबॉस 5.1.0 पर जाती है, तो मुझे यह अपवाद मिलता है।

java.lang.UnsupportedOperationException: setProperty SOAPMessage के सभी उपवर्गों द्वारा ओवरराइड किया जाना चाहिए

मेरे विन्यास:

  • Windows XP SP3 (लेकिन Vista पर एक ही है, साथ ही हो रही है लिनक्स पर)
  • सूर्य जेडीके 1.6.0_17
  • जेबीसीएस 5.1.0 जीए जेडके 6

अग्रिम धन्यवाद!

उत्तर

32

कुछ ऐसी चीजें हैं जो गलत हो सकती हैं, इसलिए मैं आपको बताऊंगा कि मेरे मामले में क्या मदद मिली है (आपके समान, मैं जेडीके 1.6.0_13 का उपयोग कर रहा था)।

समस्या JARs मेलसमूह में निहित है। सबसे पहले यह सुनिश्चित करें कि जेबॉस जेडीके 1.6 का उपयोग कर रहा है, अपने JAVA_HOME env की जांच करें। चर। दूसरा यह सुनिश्चित करें कि आपकी कक्षाएं जेडीके 1.6 का उपयोग करके संकलित की गई हैं। यदि आप ग्रहण से अपनी परियोजना चलाते हैं तो सुनिश्चित करें कि ग्रहण सही जेडीके का उपयोग कर रहा है, वैसे ही यदि आप ग्रहण से जेबॉस चलाते हैं।

मुझे लगता है कि आपके पास यह सही है, इसलिए कुछ जादू आता है। चल रहे क्लाइंट $ JBOSS_HOME/क्लाइंट से पुस्तकालयों का उपयोग न करें, लेकिन केवल $ JBOSS_HOME/lib/अनुमोदित में प्रदान किए गए लोगों का उपयोग करें। जाहिर है कि यदि आप जेपीए या ईजेबी या सर्वलेट्स जैसे किसी अन्य जेएक्स-डब्ल्यूएस-असंबद्ध एपीआई का उपयोग कर रहे हैं तो आप उन्हें क्लासपाथ में जोड़ सकते हैं, लेकिन केवल lib/अनुमोदित जेएक्स-डब्ल्यूएस जार का उपयोग करें।

यह JBoss के पिछले संस्करणों में कुछ अन्य चाल काम में JBoss 5.1, के मामले में मेरी विशेष स्थिति में मदद की है, उदाहरण के जावा विकल्प -Dsun.lang.ClassLoader.allowArraySyntax = सच है या/और -Djava जोड़ने की कोशिश के लिए .endorsed.dirs = $ JBOSS_HOME/lib/अपने ग्राहक और जेबॉस शुरू करते समय अनुमोदित।

+2

धन्यवाद पियेटर! आखिरकार, समस्या यह थी कि मैं ग्रहण के भीतर से जेबॉस शुरू कर रहा था, क्योंकि यह स्वचालित लॉन्च कॉन्फ़िगरेशन है ... जो -Djava.endorsed.dirs = $ JBOSS_HOME/lib/endorsed param को पास नहीं करता है। इसे जोड़ने के बाद (साथ ही run.bat स्क्रिप्ट से जेबॉस चला रहा है) यह ठीक काम करता है। एक बार फिर धन्यवाद! (आप मुझसे सिर्फ एक वोट से अधिक के लायक हैं :)) –

+0

दोनों ने कोशिश की "-Dsun.lang.ClassLoader.allowArraySyntax = true" और "-Djava.endorsed.dirs = $ JBOSS_HOME/lib/endorsed", काम नहीं किया 4.2.3.GA. –

+0

मुझे लगता है कि इस प्रकार का वर्कअराउंड बहुत खराब है, क्योंकि इससे अन्य लोगों को तैनात अनुप्रयोगों पर असर पड़ सकता है, और औद्योगिकीकरण प्रक्रिया को और अधिक कठिन बना दिया जा सकता है। दायरा आवेदन पैकेज तक सीमित होना चाहिए (जैसे क्लासलोडर कॉन्फ़िगर/फ़िल्टर)। – Donatello

23

मैं JBoss 4.2.2 से एक अद्यतन के साथ एक ही मुद्दा था और JBoss 5.1.0 Release Notes में जवाब मिला: दोनों Java5 & Java6 के साथ संकलित किया जा सकता

JBossAS 5.0.0.GA। जावा 5 संकलित बाइनरी हमारी प्राथमिक/अनुशंसित बाइनरी वितरण है। इसमें कठोर परीक्षण आया है और जावा 5 और जावा 6 रनटाइम दोनों के तहत चलाया जा सकता है। जब जावा 6 के तहत चल आप मैन्युअल रूप से JBOSS_HOME/lib/समर्थन निर्देशिका के लिए JBOSS_HOME/ग्राहक निर्देशिका से निम्नलिखित पुस्तकालयों को कॉपी करने की जरूरत है ताकि JAX-WS 2.0 JBossWS द्वारा समर्थित API का उपयोग किया जाता है:

  • jbossws- देशी-saaj.jar
  • jbossws-native-jaxrpc.jar
  • jbossws-native-jaxws।जार
  • jbossws देशी-jaxws-ext.jar

मैं जावा 5 के साथ JBoss 5.1.0 निर्माण के वितरण उपयोग कर रहा था (JDK 1.6.0_20 पर चल रहा है) और पर्याप्त में इन जार को कॉपी यकीन अनुमोदित निर्देशिका ने समस्या को हल किया। हम नोट 6 के कारण जावा 6 के लिए संकलित संस्करण का उपयोग नहीं कर रहे हैं:

यह ध्यान दिया जाना चाहिए कि जावा 6 जेबीएसएस एएस 5 का संकलित वितरण अभी भी प्रयोगात्मक चरण में है।

7

यह SAAJ जार के साथ संघर्ष समस्या के कारण हो सकता है। Jboss की Saaj जार {Jboss_HOME}/LIB से {JBOSS_HOME}/lib/endorsed पर कॉपी करें। मुझे उम्मीद है कि यह समस्या को हल करने में मदद करेगा,

+4

jboss/server//jboss/lib/endorsed के लिए lib निर्देशिका jboss-saaj.jar की प्रतिलिपि jboss-4.2.3.GA –

4

सुनिश्चित करें कि आप JBoss को jvm विकल्पों के साथ अनुमोदित libs को इंगित करते हैं। यह डिफ़ॉल्ट रूप से कॉन्फ़िगर नहीं किया गया है यदि आप WTP का उपयोग करते हुए JBoss ग्रहण से लॉन्च करते हैं, हालांकि यह है कि यदि आप कमांड लाइन से JBoss लॉन्च करते हैं।

आप लॉन्च विन्यास के वीएम तर्क के लिए निम्न जोड़ सकते हैं:

-Djava.endorsed.dirs="${JBOSS_HOME}\jboss-as\lib\endorsed" 
+0

पर मेरे लिए चाल थी यह ध्यान देने योग्य है कि ग्रहण $ JBOSS_HOME का विस्तार नहीं करेगा एक रन लक्ष्य के जेवीएम विकल्प। –

+0

वाह मैं आज फिर से यहां समाप्त हुआ और पहली बार भी याद नहीं किया! –

0

मैं CXF वितरण से मेरी युद्ध करने के लिए आवश्यक lib (मेरे मामले में Saaj-impl) की नकल की और साथ jboss classloader अलगाव चालू निम्नलिखित सामग्री की फ़ाइल /WEB-INF/jboss-classloader.xml:


<classloading xmlns="urn:jboss:classloading:1.0" 
    domain="MyDomain" 
    export-all="NON_EMPTY" 
    import-all="true"> 
</classloading> 

आशा किसी को यह मदद करते हैं।

0

आप ग्राहक में इस त्रुटि का सामना करना एक ग्राहक आवेदन आप इस answer में उन लोगों के अलावा समान चरणों का पालन करने की जरूरत है चलाते समय हैं:

  1. निर्धारित JVM का जो उदाहरण आवेदन चल रहा है। मेरे मामले में जेडीई का उपयोग कर जेडीके और एप्लेट्स का उपयोग करके मेरे पास स्टैंडअलोन एप्लिकेशन थे। यह /path/jre/bin/

  2. इस answer से path/jre/lib/endorsed से जार जोड़ें। मुझे endorsed निर्देशिका बनाना था।

यह वीएम को जावा भाषा डिफ़ॉल्ट से पहले जेबॉस विशिष्ट कार्यान्वयन लोड करने के लिए कहता है। यह बूटस्ट्रैप क्लास लोडर में होता है, क्लासपाथ में जार लोड होने से ठीक पहले।

2

jbossws-native-jaxws.jar 
jbossws-native-jaxrpc.jar 
jbossws-native-saaj.jar 
jbossws-native-saaj.jar 
1

मेरे परियोजना बस पर आधारित था निम्नलिखित अपने jboss/lib को जार ट्राई/समर्थन फ़ोल्डर:

  • CXF 2.5 ।0 (साबुन WebService उपभोक्ता)
  • युद्ध विधानसभा (कोई ईएआर)
  • कोई jboss-वेब
  • कोई jboss-classloading
  • jboss/lib में कोई बदलाव नहीं/समर्थन (केवल xalan, serializer, xercesImpl)
  • <dependency> 
         <groupId>javax.xml.ws</groupId> 
         <artifactId>jaxws-api</artifactId> 
        </dependency> 
        <dependency> 
         <groupId>com.sun.xml.ws</groupId> 
         <artifactId>jaxws-rt</artifactId> 
        </dependency> 
        <dependency> 
         <groupId>com.sun.xml.ws</groupId> 
         <artifactId>jaxws-tools</artifactId> 
        </dependency> 
        <dependency> 
         <groupId>org.codehaus.woodstox</groupId> 
         <artifactId>woodstox-core-asl</artifactId> 
        </dependency> 
        <dependency> 
         <groupId>com.sun.xml.messaging.saaj</groupId> 
         <artifactId>saaj-impl</artifactId> 
        </dependency> 
    
    :
  • पर jboss-4.2.1.GA + JDK 1,6

क्या यह मेरे लिए काम किया चल thoses Maven निर्भरता को जोड़ने के लिए, अगले CXF बस था

आशा है कि इससे मदद मिलेगी!

0

मेरा सर्वर कॉन्फ़िगरेशन जेबॉस एएस 4.2.1 जीए है और नीचे की तरह, यह काम करता है;

पुस्तकालय जो मैंने lib \ endorsed पर उपयोग किया था;

  • JAXWS2.1.1_20070501
  • jbossws देशी-jaxrpc
  • jbossws देशी-jaxws
  • jbossws देशी-jaxws-ext
  • jbossws देशी-Saaj
  • serializer
  • xalan
  • xercesImpl
0

मैं जेबॉस एएस 4.3 का उपयोग करता हूं। मेरे मामले में, मैंने "jbossws.sar" फ़ोल्डर को "तैनाती" से हटा दिया। https://issues.jboss.org/browse/JBWS-2821

0

मेरी वेब एप्लिकेशन की lib यह त्रुटि ठीक फ़ोल्डर में Saaj-impl जोड़ना:

इस मुद्दे देखें। मैं जेबॉस 4.2.3 और सीएक्सएफ 2.4.10 का उपयोग कर रहा हूं।

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

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