2010-01-19 17 views
7

मेरे पास एक वेब-सेवा है जो ठीक है जब मैं उन्हें J2SE (डेस्कटॉप) एप्लिकेशन से एक्सेस करता हूं। इस सेवा का उपयोग करने के लिए मैं का पालन करते हैं:वेब सेवा के लिए वेब क्लाइंट

  1. जावा wsimport उपकरण
  2. तो मैं उत्पन्न वर्गों का उपयोग सेवा बना सकते हैं और wsdl operations.It में से एक को चलाने का उपयोग कर wsdl लिंक द्वारा ठूंठ वर्गों उत्पन्न इस तरह दिखता है:

    MyWebServiceService वेब सेवा = नई MyWebServiceService();

    MyWebService पोर्ट = webService.getMyWebServicePort();

    webService.run ("XYZ");

के रूप में मैं दुखी यह ठीक काम जब मैं एक स्वतंत्र अनुप्रयोग में उपयोग करें। लेकिन ... मैं त्रुटि निम्न मिल जब मैं एक ही तरह से लेकिन सर्वलेट-क्लाइंट से वेब सेवा का उपयोग करने, उत्पन्न स्टब्स प्रयोग करके देखें:

java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext 
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitializeAccessors(EndpointMetaData.java:686) 
org.jboss.ws.metadata.umdm.EndpointMetaData.initializeInternal(EndpointMetaData.java:567) 
org.jboss.ws.metadata.umdm.EndpointMetaData.eagerInitialize(EndpointMetaData.java:553) 
org.jboss.ws.metadata.builder.jaxws.JAXWSClientMetaDataBuilder.rebuildEndpointMetaData(JAXWSClientMetaDataBuilder.java:314) 
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPortInternal(ServiceDelegateImpl.java:271) 
org.jboss.ws.core.jaxws.spi.ServiceDelegateImpl.getPort(ServiceDelegateImpl.java:202) 
javax.xml.ws.Service.getPort(Service.java:143... 

मैं गूगल लंबे समय खोज की है, लेकिन कुछ नहीं मिला उपयोगी विषयों । कुछ विषयों सर्वलेट से वेब सेवाओं तक पहुँचने उदाहरणों से पता चलता है, लेकिन दुर्भाग्य से मैं ऐसा नहीं कर सकते ... (और पता नहीं है मुसीबत का कारण है क्या

आवेदन सर्वर:। Jboss 4.2.3GA

है सर्वलेट से वेब-सेवा को कनेक्ट करना संभव है? कैसे?

मैंने @WebServiceRef एनोटेशन का उपयोग करने का प्रयास किया है, लेकिन ऐसा लगता है कि वेब-कंटेनर वेब-सेवा स्टब इंजेक्ट नहीं कर सकता है। और मुझे लगता है कि कंटेनर को यह स्वयं नहीं करना चाहिए , क्योंकि sts कक्षाएं पहले से ही wsimport उपकरण द्वारा उत्पन्न की गई हैं, और वेब-सेवा तक पहुंचने के लिए इस कक्षा का उपयोग करने के लिए इसकी enouph।

wsimport -keep -p com.myhost.ws http://www.myhost.com/services/MyWebService?wsdl 
+0

पाया इस https://jax-ws.dev.java.net/guide/Using_JAX_WS_2_1_with_JavaSE6.html हो सकता है इस समस्या का मूल नहीं है, मैं यह जांच करेंगे ... –

+0

जावा का क्या संस्करण हैं आप उपयोग कर रहे हैं? जेएक्स-डब्ल्यूएस आरआई का क्या संस्करण? क्या आप अपने युद्ध में जेएक्स-आरआई पैकेज करते हैं? –

+0

1. JDK 1.6.0_13 2. यदि आरआई 'दूरस्थ इंटरफ़ेस' तो मैं निर्धारित करने के लिए कि यह कैसे संस्करण 3. हाँ, आरआई भी पैक है –

उत्तर

10

क्या आप वाकई अपने classpath संस्करणों भिन्न के साथ कई JAX-बी जार का न होना सुनिश्चित है: 210 स्टब वर्गों के लिए निम्न आदेश का उपयोग कर उत्पन्न किया गया? अपवाद मुझे एक संस्करण संघर्ष की तरह दिखता है। एप्लिकेशन सर्वरों में आमतौर पर किसी प्रकार की "अनुमोदित" lib निर्देशिका होती है जिसमें JARS होते हैं जो हमेशा वेब एप्लिकेशन क्लासपाथ के सामने जोड़े जाते हैं। हो सकता है कि आपके ऐप सर्वर में एक विवादित जेएक्स-बी कार्यान्वयन हो?

यदि आप अपने आवेदन को पैकेज करने के लिए मेवेन का उपयोग करते हैं, तो सुनिश्चित करें कि ट्रांजिटिव निर्भरता अवांछित जेएक्स-बी जार (इसे जांचने के लिए 'एमवीएन निर्भरता: पेड़' का उपयोग न करें)।

1

यह निश्चित रूप से मेरे लिए एक जेएक्सबी संघर्ष की तरह लगता है। अपने युद्ध में जैक्सबी संस्करणों को देखें और सुनिश्चित करें कि वे जैक्सब जार से विवाद नहीं कर रहे हैं कि जेबॉस की अपनी lib निर्देशिका में हो सकता है।

+0

हल इस समस्या को $ JBOSS_HOME से jboss-jaxws.jar पुस्तकालय को हटाने/सर्वर/डिफ़ॉल्ट/lib और $ JBOSS_HOME/lib/समर्थन निर्देशिका इस लिंक मददगार था: http://www.bluefishgroup.com/library/2007/ परिचय-से-डीएफएस-वेब-सेवाएं-क्लाइंट-प्रोग्रामिंग/ सहायता के लिए बहुत धन्यवाद! –

1

Addytionally jbossws देशी पुस्तकालय सही ढंग से स्थापित किया गया था निम्न पैकेज jboss_home/lib/समर्थन निर्देशिका से हटा दिया जाना चाहिए, यदि:

  • jboss-jaxrpc.jar
  • jboss-jaxws-ext.jar
  • jboss-jaxws.jar
  • jboss-saaj।जार

अन्यथा आपके पास ईजेबी या सर्वलेट के माध्यम से वेब सेवा से कनेक्ट करने की क्षमता नहीं है।

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