2010-03-31 8 views
6

समझ में नहीं आता है मैं एक साधारण वेब सेवा बनाने के लिए डब्ल्यूएसआईटी/मेट्रो का उपयोग कर रहा हूं। मैं सर्वर पर निम्न त्रुटि प्राप्त हो रही है जब एक ग्राहक एक सरल उपयोगकर्ता नाम/passowrd प्रमाणीकरण योजना के साथ कनेक्ट करने की कोशिश करता है:डब्ल्यूएसआईटी/मेट्रो सुरक्षा एसओएपी हेडर

2010.03.31. 19:10:33 com.sun.xml.ws.protocol.soap.MUTube getMisUnderstoodHeaders 
INFO: Element not understood={http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd}Security 

मैं पता नहीं कैसे WSIT सुरक्षा ब्लॉक समझ में करना होता है।

अनुरोध मैं ग्राहक से मिलता है:

<?xml version="1.0" encoding="http://www.w3.org/2003/05/soap-envelope" standalone="no"?> 
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> 
    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
      soapenv:mustUnderstand="true"> 
      <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
       wsu:Id="UsernameToken-1"> 
       <wsse:Username>admin</wsse:Username> 
       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">admin</wsse:Password> 
      </wsse:UsernameToken> 
     </wsse:Security> 
     <wsa:To>http://localhost:11122/services/TopJtapiRemoteMethods</wsa:To> 
     <wsa:MessageID>urn:uuid:D5C576F83D74F761311270055433217</wsa:MessageID> 
     <wsa:Action>urn:hasCallPolling</wsa:Action> 
    </soapenv:Header> 
    <soapenv:Body /> 
</soapenv:Envelope> 

सर्वर के डबल्यूएसडीएल:

<?xml version="1.0" encoding="UTF-8"?> 
<wsdl:definitions 
    targetNamespace="http://soapserver.topjtapi.cti.topdesk.com" 
    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
    xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" 
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
    xmlns:ns="http://soapserver.topjtapi.cti.topdesk.com" 
    xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/"> 
    <wsp:Policy wsu:Id="PasswordAuthPolicy"> 
     <wsp:All> 
      <sp:SupportingTokens> 
       <wsp:Policy> 
        <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient"> 
         <wsp:Policy> 
          <sp:WssUsernameToken10 /> 
         </wsp:Policy> 
        </sp:UsernameToken> 
       </wsp:Policy> 
      </sp:SupportingTokens> 
     </wsp:All> 
    </wsp:Policy> 

    <wsdl:types> 
     <!-- ... --> 
    </wsdl:types> 
    <wsdl:message name="incomingCallRequest"> 
     <!-- ... --> 
    </wsdl:message> 
    <wsdl:portType name="TopJtapiRemoteMethodsPortType"> 
     <!-- ... --> 
    </wsdl:portType> 
    <wsdl:binding name="TopJtapiRemoteMethodsSoap12Binding" type="ns:TopJtapiRemoteMethodsPortType"> 
     <wsp:PolicyReference URI="#PasswordAuthPolicy"/> 
     <wsoap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> 
     <wsdl:operation name="hasCallPolling"> 
      <!-- ... --> 
     </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="TopJtapiRemoteMethods"> 
     <wsdl:port name="TopJtapiRemoteMethodsHttpSoap12Endpoint" binding="ns:TopJtapiRemoteMethodsSoap12Binding"> 
     </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 

मेरे कोड, सर्वर की स्थापना:

import java.io.InputStream; 
import java.util.Collections; 

import javax.jws.WebService; 
import javax.xml.transform.Source; 
import javax.xml.transform.stream.StreamSource; 
import javax.xml.ws.Endpoint; 
import javax.xml.ws.Holder; 

import com.topdesk.cti.topjtapi.soapserver2.HasCallPollingResponse; 
import com.topdesk.cti.topjtapi.soapserver2.TopJtapiRemoteMethodsPortType; 

public class EndpointTester { 

    @WebService(endpointInterface = "com.topdesk.cti.topjtapi.soapserver2.TopJtapiRemoteMethodsPortType") 
    private static final class MockImplementation implements TopJtapiRemoteMethodsPortType { 
     @Override 
     public HasCallPollingResponse hasCallPolling() { 
      return null; 
     } 
    } 

    /** 
    * @see javax.xml.ws.soap.SOAPBinding#SOAP12HTTP_BINDING 
    * @see https://jax-ws.dev.java.net/2.1.7/docs/soap12.html 
    */ 
    private static final String SOAP12_BINDING_ID = "http://java.sun.com/xml/ns/jaxws/2003/05/soap/bindings/HTTP/"; 

    public static void main(String[] args) throws Exception { 
     Endpoint endpoint = Endpoint.create(SOAP12_BINDING_ID, new MockImplementation()); 
     InputStream wsdlStream = EndpointTester.class.getResourceAsStream("/topjtapi-webapp/wsdl/TopJtapiRemoteMethods.wsdl"); 
     endpoint.setMetadata(Collections.<Source> singletonList(new StreamSource(wsdlStream, "http://soapserver.topjtapi.cti.topdesk.com"))); 
     endpoint.publish("http://localhost/services/TopJtapiRemoteMethods"); 

     System.in.read(); 
    } 
} 

उत्तर

0

मैं के बारे में निश्चित नहीं हूँ त्रुटि, लेकिन मुझे लगता है कि सर्वर को इस नेमस्पेस के बारे में पता नहीं है: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd

आपने ग्राहक के बारे में नहीं लिखा है। मेट्रो भी मुझे लगता है। - एक ही संस्करण के साथ? - क्या आपने इसे बनाने के लिए wsimport का उपयोग किया था?

यदि कोई नया ग्राहक नहीं बनाते हैं, तो इसे बनाने के लिए कुछ आईडीई विज़ार्ड का उपयोग करें, सुरक्षा को कॉन्फ़िगर करने के लिए भी। यह काम करना चाहिए यदि यह मानव त्रुटि थी ..

1

मुझे बस एक ही समस्या थी, मैंने मेट्रो 2.0 को मील प्रोजेक्ट को अपडेट करके हल किया। नेटबीन्स पर, परियोजना गुण -> आयात लाइब्रेरी -> मेक्ट्रो 2.0।

ग्लासफ़िश पर केवल उसी लाइब्रेरी को कमांड लाइन द्वारा अपडेट करें।

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