2012-03-13 8 views
6

JBoss 6.0 अंतिम साथ JBoss WS (Apache CXF डिफ़ॉल्ट रूप से ढेर), मुझे पता है कि मैं से संबंधित JBoss WS मूल निवासी या मेट्रो संस्करणों के साथ डिफ़ॉल्ट कार्यान्वयन की जगह ले सकता भेज दिया जाता है JBossWS downloads siteउपयोग देशी जावा SE 6 JAX-WS JBoss WS के बजाय कार्यान्वयन ढेर

समस्या यह है कि मेरे पास क्लाइंट जार लाइब्रेरी है (केवल दुर्भाग्य से बाइनरी) जो कुछ स्वामित्व वाली SOAP वेब सेवाओं का उपभोग करती है। जब मैं जेबॉस पर तैनात वेब एप्लिकेशन से क्लाइंट एपीआई का उपयोग करता हूं तो मुझे बहुत से अंतराल एसओएपी दोष मिलते हैं (अपाचे सीएक्सएफ और जेबॉस नेटिव स्टैक्स दोनों के साथ परीक्षण किया जाता है)।

चूंकि एक ही वेब सेवा स्टैंडअलोन जार फ़ाइल (किसी तीसरे पक्ष जेएक्स-डब्ल्यूएस कार्यान्वयन के साथ) से चलने पर ठीक काम करने लगती है, इसलिए मैं मूल जेएक्स-डब्ल्यूएस आरआई स्टैक के पक्ष में जेबॉस डब्ल्यूएस स्टैक को अक्षम करने के बारे में सोच रहा था जावा एसई 6.

मुझे पता है कि जेबॉस मेट्रो डब्ल्यूएस स्टैक जावा एसई 6 के साथ भेजे जाने वाले चीज़ों के करीब होना चाहिए, लेकिन अगर मैं देशी जावा एसई संस्करण के साथ जा सकता हूं तो मैं वास्तव में सराहना करता हूं।

तो, क्या यह संभव है? क्या कोई रास्ता तय कर सकता है?

+1

मुझे अभी मेरी परियोजना के लिए एक ही आवश्यकता है। मैं –

+0

की जांच कर रहा हूं अपनी प्रगति पोस्ट करना सुनिश्चित करें, मैं इस समस्या से काफी अटक गया हूं। –

+0

असल में, मुझे परेशानी हो रही है क्योंकि जेबॉसडब्ल्यूएस-सीएक्सएफ ने मेरे आवेदन में वसंत पाया और इसे जेबॉस क्लासलोडर में इसकी आवश्यकता है। फिर JavaSE wsimport द्वारा डब्लूएसडीएल से उत्पन्न मेरा क्लाइंट अपनी कक्षाओं को लोड करने में असफल रहा ... जैसा कि मैं केवल डब्ल्यूएस को क्लाइंट के रूप में उपयोग करता हूं, मैं वही विकल्प ढूंढता हूं। –

उत्तर

7

जेबॉसडब्ल्यूएस-सीएक्सएफ क्लाइंट और जेबॉस 6.1.0 से सर्वर स्टैक को हटाने की प्रक्रिया यहां दी गई है। फाइनल। आपके द्वारा उपयोग किए जाने वाले सर्वर कॉन्फ़िगरेशन द्वारा <configuration> को बदलें, शायद default

  • निम्न फ़ाइलें और निर्देशिका संरचना
common/deploy/jbossws-console.war 
lib/endorsed/jbossws-cxf-factories.jar 
server/<configuration>/deploy/jbossws-console-activator-jboss-beans.xml 
server/<configuration>/deployers/jbossws.deployer/ 
server/<configuration>/deployers/jbossws-jaxrpc.deployer/ 
  • संपादित निकालें और server/<configuration>/deployers/switchboard-jboss-beans.xml
<entry> 
    <key>javax.xml.ws.WebServiceContext</key> 
    <value><inject bean="org.jboss.switchboard.WebServiceContextResourceProvider"/></value> 
</entry> 
... and ... 
<inject bean="org.jboss.switchboard.WebServiceRefResourceProvider"/> 
से दो निम्नलिखित भागों को दूर

नतीजतन, वेब सेवा सर्वर स्टैक अब उपलब्ध नहीं है, न ही jbossws कंसोल।

चल अपने JavaSE संस्करण JBoss से JAX-WS मेट्रो कार्यान्वयन उपयोग करने के लिए, आप भी है कक्षा-पथ से दूर करने के लिए यह सुनिश्चित हो किसी भी CXF और JAX-WS से संबंधित जार:

lib/endorsed/jboss-jaxws-api_2.2_spec.jar 
lib/endorsed/stax-api.jar 
lib/endorsed/jboss-jaxb-api_2.2_spec.jar 
common/lib/jboss-jaxb-api_2.2_spec.jar 
common/lib/jboss-jaxws-api_2.2_spec.jar 
common/lib/jboss-jaxrpc-api_1.1_spec.jar 
common/lib/cxf-*.jar 
lib/wstx-lgpl.jar 
lib/jaxb-impl.jar 
lib/jaxb-xjc.jar 

उस बिंदु पर, जेबॉस 6.1 भी तेजी से शुरू होता है।

+0

यह काम करता है! बहुत बहुत धन्यवाद Yves, मैं एक ही कदम कर सकता था (बस jbossws-console भाग को हटाने की आवश्यकता नहीं थी क्योंकि मुझे यह नहीं मिला) और संस्करण 6.0.0 फ़ाइनल के लिए देशी आरआई कार्यान्वयन का उपयोग करने में सक्षम था। –

+0

भगवान के लिए लोगों के लिए: यह जवाब उत्तर दें! आपको धन्यवाद! – PaulProgrammer

0

बस प्रक्रिया के अंत में पूरी तरह से समझने के लिए, प्रोग्राम के एंडपॉइंट एपीआई उपयोग (एंडपॉइंट.publish (..)) के अलावा किसी भी डब्ल्यूएस सर्वर साइड कार्यक्षमता के बिना आपके पास एक एप्लीकेशन सर्वर है, जो कि वैसे भी जेबॉस एएस पर डब्ल्यूएस एंडपॉइंट शुरू नहीं करेगा। कोई JSR109 समर्थन बिल्कुल नहीं, कोई ईजेबी 3 डब्ल्यूएस एंडपॉइंट कार्यक्षमता, आदि

+0

यह सच है। यदि आप जेबीओएस को डब्लूएस एंडपॉइंट के रूप में उपयोग नहीं करते हैं, लेकिन केवल डब्ल्यूएस क्लाइंट के रूप में, आपको जावाएसई जेएक्स-डब्ल्यूएस आरआई कार्यान्वयन का उपयोग करने में रुचि हो सकती है ... (सीएक्सएफ की बजाय जो लोड होने पर दोनों भूमिकाएं एंडपॉइंट + क्लाइंट प्राप्त करती है) –

4

आगे के शोधकर्ताओं के लिए, मैं जेबॉस 6 से सभी पुराने जेएक्सबी और सीएक्सएफ को हटाने के तरीके पर अपने अतिरिक्त कदम साझा करना चाहता था।उनमें से 1 और जोड़ने के नए संस्करणों (यह बढ़ाया है यवेस मार्टिन जवाब):

निकाले जाने के लिए: सर्वर // deployers/स्विचबोर्ड-jboss-सेम:

common/deploy/jbossws-console.war 
server/<configuration>/deploy/jbossws-console-activator-jboss-beans.xml 
server/<configuration>/deployers/jbossws.deployer/ 
server/<configuration>/deployers/jbossws-jaxrpc.deployer/ 
client/cxf-*.jar 
client/jaxws-*.jar 
client/jaxb-impl.jar 
client/jaxb-xjc.jar 
client/wstx-lgpl.jar 
client/jbossws-*.jar 
client/stax-api.jar 
client/activation.jar 

lib/wstx-lgpl.jar 
lib/jaxb-impl.jar 
lib/jaxb-xjc.jar 

common/lib/jboss-jaxb-api_2.2_spec.jar 
common/lib/jboss-jaxws-api_2.2_spec.jar 
common/lib/jboss-jaxrpc-api_1.1_spec.jar 
common/lib/cxf-*.jar 
common/lib/jaxws-*.jar 
common/lib/jbossws-*.jar (except common/lib/jbossws-spi.jar) 

lib/endorsed/activation.jar 
lib/endorsed/jboss-jaxb-api_2.2_spec.jar 
lib/endorsed/jbossws-cxf-factories.jar 
lib/endorsed/jboss-jaxws-api_2.2_spec.jar 
lib/endorsed/stax-api.jar 
विन्यास फाइल से पर

। एक्सएमएल

निकालें निम्नलिखित लाइनों:

<entry> 
    <key>javax.xml.ws.WebServiceContext</key> 
    <value><inject bean="org.jboss.switchboard.WebServiceContextResourceProvider"/></value> 
</entry> 

<inject bean="org.jboss.switchboard.WebServiceRefResourceProvider"/> 

आप 2.6.3 के लिए JAXB + CXF उन्नत करने के लिए चाहते हैं, जोड़ने इन पुस्तकालयों:

lib/jaxb-xjc-2.1.13.jar 

lib/endorsed/activation-1.1.1.jar 
lib/endorsed/jaxb-api-2.2.6.jar 
lib/endorsed/jaxws-api-2.2.6.jar 
lib/endorsed/stax2-api-3.1.1.jar 
lib/endorsed/saaj-api-1.3.4.jar 
lib/endorsed/cxf-api-2.6.3.jar 

common/lib/cxf-api-2.6.3.jar 

आप जावा 6 परियोजना है, तो नए JAXB JRE से एक के साथ यह निष्कर्ष निकाल जाएगा, इसलिए हम नए संस्करण का समर्थन किया है। यहाँ कैसे Maven के लिए यह करना है:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>${maven-compiler-plugin.version}</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <maxmem>512m</maxmem> 
     <compilerArguments> 
      <endorseddirs>${project.build.directory}/endorsed</endorseddirs> 
     </compilerArguments> 
    </configuration> 
</plugin> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${maven-surefire-plugin.version}</version> 
    <configuration> 
     <forkMode>once</forkMode> 
     <argLine>-Djava.endorsed.dirs=${project.build.directory}/endorsed</argLine> 
    </configuration> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>${maven-compiler-plugin.version}</version> 
    <executions> 
     <execution> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>copy</goal> 
      </goals> 
      <configuration> 
       <artifactItems> 
        <artifactItem> 
         <groupId>javax.xml.bind</groupId> 
         <artifactId>jaxb-api</artifactId> 
         <version>${jax.version}</version> 
        </artifactItem> 
        <artifactItem> 
         <groupId>javax.xml.ws</groupId> 
         <artifactId>jaxws-api</artifactId> 
         <version>${jax.version}</version> 
        </artifactItem> 
       </artifactItems> 
       <outputDirectory>${project.build.directory}/endorsed</outputDirectory> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <version>${cxf.version}</version> 
    <configuration> 
     <fork>once</fork> 
     <additionalJvmArgs>-Djava.endorsed.dirs=${project.build.directory}/endorsed</additionalJvmArgs> 
     <!-- rest of the normal codegen configuration options --> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-impl</artifactId> 
      <version>${jax.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.xml.bind</groupId> 
      <artifactId>jaxb-xjc</artifactId> 
      <version>${jax.version}</version> 
     </dependency> 
    </dependencies> 
</plugin> 

अपने आईडीई पर आप नए JAXB लाइब्रेरी का उपयोग करके संकलित करने के लिए यह बताने के लिए है। आईडीईए के मामले में आप इसे यहां कर सकते हैं:

IDEA -> Settings -> Compiler -> Java Compiler 

in "Additional command line parameters" add: 

-endorseddirs /<your_absolut_path_to_project>/target/endorsed/ 
+0

बहुत बहुत धन्यवाद आपका योगदान Leszek, विशेष रूप से मैवेन के साथ अनुमोदित पुस्तकालयों को कॉन्फ़िगर करने के लिए कदम (मैंने एक ही चीज़ के साथ संघर्ष किया है)। –

+0

क्षमा करें, लेकिन सवाल जेबॉस से सीएक्सएफ को हटाने के बारे में है ताकि जेएक्स-डब्लूएस एनोटेशन जावाएसई आंतरिक/मेट्रो स्टैक द्वारा संसाधित किया जा सके। यह जेबॉस के अंदर सीएक्सएफ को अपग्रेड करने के बारे में नहीं है ... –

+0

इस जानकारी के लिए बहुत बहुत धन्यवाद, मेरा दिन बचाया! – Maximus

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