2011-01-13 15 views
10

मेरे पास Apache CXF के साथ बनाई गई वेब सेवा के साथ एक सरल एप्लिकेशन है। जब मैं सर्वर और क्लाइंट चलाता हूं (Java अनुप्रयोगों के रूप में) यह एप्लिकेशन काम करता है। जब मैं /services यूआरएल को एक्सेस करने का प्रयास करता हूं जो web.xml में मैप किया गया है, Tomcat मुझे 404 त्रुटि देता है। मैं प्राप्त जब मैं प्रोजेक्ट को चलाने:सेवा को हल करने के लिए कैसे करें स्थापना: सेवा के लिए परिभाषा नहीं मिल सका?

org.apache.cxf.service.factory.ServiceConstructionException: सेवा के लिए परिभाषा ढूंढा नहीं जा सका {http: // SendMessage /} SendMessage

अगर कोई है इस त्रुटि से संबंधित किसी भी संकेत मुझे उन्हें सुनकर खुशी होगी। (मैंने Google की खोज की और मेरी स्थिति के लिए कुछ प्रासंगिक नहीं मिला)

धन्यवाद!

+0

यहां एक संबंधित प्रश्न है। http://stackoverflow.com/questions/3006185/cxf-client-webservice-question –

उत्तर

9

मुझे एक ही त्रुटि थी, मेरा नामस्थान से संबंधित था जो wsdl और webservice में अलग थे। तो मैंने उन्हें उसी में बदल दिया।

डबल्यूएसडीएल:

<wsdl:definitions name="" 
    targetNamespace="http://www.example.org/yourservice/" 

वेब सेवा वर्ग:

@WebService(targetNamespace = "http://www.example.org/yourservice/", 
......... 
2

यहां तक ​​कि मैं एक ऐसी ही समस्या हुई। jaxws को अपडेट करके इसे ठीक करें: एंडपॉइंट। मैंने wsdl में परिभाषित "targetNamespace" में परिभाषित नाम स्थान के साथ सेवा नाम (WSDL फ़ाइल में मौजूद नाम पर मैपिंग) जोड़ा है: परिभाषा टैग।

<jaxws:endpoint id=".." implementor="..." serviceName="s:SERVICE_NAME_IN_WSDL" 
xmlns:s="TARGET_NAME_SPACE_WSDL_DEFINTIONS"></jaxws:endpoint> 

संपादित (06Jul)
इसके अलावा, मैं आज कि, अपाचे CXF 3.0.5 संस्करण के साथ इस मुद्दे को नहीं आ रही है; लेकिन अपाचे सीएक्सएफ 3.1 संस्करण के साथ, यह आ रहा है।

1

सेवा कॉन्स्ट्रक्शन अपवाद विभिन्न चरणों में हो सकता है जब सीएक्सएफ प्रदान की गई सेवा, पोर्ट और बाध्यकारी नाम की तुलना wsdl से पहले से ही पार्स किया गया है। इस मामले में (और ज्यादातर मामलों में) यह नामस्थान समस्या दिखता है।

{http://sendmessage/}SendMessage या तो पार्सड wsdl में मौजूद नहीं है या सेवा नाम WSDL में मौजूद QName से मेल नहीं खाता है। अन्य मामले भी हैं जहां बाध्यकारी या बंदरगाह मेल नहीं खाता है, एक को एक ही अपवाद प्राप्त हो सकता है। org.apache.cxf.wsdl11.WSDLServiceFactory.create() विधि से एक कोड स्निपिट निम्नलिखित है जहां यह सब होता है।

तो बातें स्पष्ट क्यों वास्तव में यह अपने सबसे अच्छे शर्त हो रहा है नहीं कर रहे हैं कोड के इस टुकड़े डिबग और जहां यह असफल रहने और (wsdl4j.jar में com.ibm.wsdl.DefinitionImpl) क्या पार्स wdsl परिभाषा नहीं है यह देखने के लिए है।

 javax.wsdl.Service wsdlService = definition.getService(serviceName); 
     if (wsdlService == null) { 
      if ((!PartialWSDLProcessor.isServiceExisted(definition, serviceName)) 
       && (!PartialWSDLProcessor.isBindingExisted(definition, serviceName)) 
       && (PartialWSDLProcessor.isPortTypeExisted(definition, serviceName))) { 
       try { 
        Map<QName, PortType> portTypes = CastUtils.cast(definition.getPortTypes()); 
        String existPortName = null; 
        PortType portType = null; 
        for (QName existPortQName : portTypes.keySet()) { 
         existPortName = existPortQName.getLocalPart(); 
         if (serviceName.getLocalPart().contains(existPortName)) { 
          portType = portTypes.get(existPortQName); 
          break; 
         } 
        } 
        WSDLFactory factory = WSDLFactory.newInstance(); 
        ExtensionRegistry extReg = factory.newPopulatedExtensionRegistry(); 
        Binding binding = PartialWSDLProcessor.doAppendBinding(definition, 
                      existPortName, portType, extReg); 
        definition.addBinding(binding); 
        wsdlService = PartialWSDLProcessor.doAppendService(definition, 
                     existPortName, extReg, binding); 
        definition.addService(wsdlService); 
       } catch (Exception e) { 
        throw new ServiceConstructionException(new Message("NO_SUCH_SERVICE_EXC", LOG, serviceName)); 
       } 
      } else { 
       throw new ServiceConstructionException(new Message("NO_SUCH_SERVICE_EXC", LOG, serviceName)); 
      } 

पुनश्च: मैं जानता हूँ कि इस मुद्दे को 2011 में वापस खोला गया था लेकिन हाल ही में मैं एक ही मुद्दे का सामना करना पड़ा और इसे हल करने में सक्षम था। मुझे उम्मीद है कि यह उन लोगों की मदद करेगा जो इस मुद्दे का सामना कर रहे हैं।

+0

राजीव, आपकी व्याख्या ने मुझे समस्या हल करने में मदद की –

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