Wir versuchen hier einen Webservice zu erstellen. Wir möchten, dass der Dienst unter /axis2/services/SmsNotificationService
verfügbar ist. Die Operation, die aufgerufen wird, ist notifySmsDeliveryReceipt
. Das Folgende ist der Endpunkt von Spring.Endpoint in Spring-WS registrieren
Der Client wird den Dienst mit diesem XML aufrufen.
<soapenv:Envelope xmlns:soapenv=‘http://schemas.xmlsoap.org/soap/envelope/’ xmlns:v3=‘http://www.csapi.org/schema/parlayx/common/v3_1’ xmlns:loc=‘http://www.csapi.org/schema/parlayx/sms/notification/v3_1/local’>
<soapenv:Header>
<v3:NotifySOAPHeader>
<spId>600002</spId>
</v3:NotifySOAPHeader>
</soapenv:Header>
<soapenv:Body>
<loc:notifySmsDeliveryReceipt>
<loc:correlator>123</loc:correlator>
<loc:deliveryStatus>
<address>tel:+86123</address>
<deliveryStatus>DeliveredToTerminal</deliveryStatus>
</loc:deliveryStatus>
</loc:notifySmsDeliveryReceipt>
</soapenv:Body>
</soapenv:Envelope>
Der Service benötigt diese XML zurück:
<soapenv:Envelope xmlns:soapenv=‘http://schemas.xmlsoap.org/soap/envelope/’ xmlns:loc=‘http://www.csapi.org/schema/parlayx/sms/notification/v3_1/local’>
<soapenv:Header/>
<soapenv:Body>
<loc:notifySmsDeliveryReceiptResponse/>
</soapenv:Body>
</soapenv:Envelope>
Tomcat-Zugriffsprotokoll registriert einen Serviceanruf aber der entfernten Anrufer erhalten eine Fehlermeldung:
`xxx.xx.xxx.x - - [13/May/2016:13:43:43 +0630] "POST /axis2/services/SmsNotificationService HTTP/1.1" 404 -`
Catalina Protokoll zeigt die folgende:
13-May-2016 13:42:32.459 INFO [http-nio-8088-exec-6] org.springframework.ws.soap.addressing.server.AbstractAddressingEndpointMapping.afterPropertiesSet Supporting [WS-Addressing August 2004, WS-Addressing 1.0]
13-May-2016 13:42:32.487 INFO [http-nio-8088-exec-6] org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons Pre-instantiating singletons in org.s[email protected]2e8571ab: defining beans [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping#0,org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping#0,org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping#0,org.springframework.ws.server.endpoint.adapter.method.dom.DomPayloadMethodProcessor#0,org.springframework.ws.server.endpoint.adapter.method.SourcePayloadMethodProcessor#0,org.springframework.ws.server.endpoint.adapter.method.dom.Dom4jPayloadMethodProcessor#0,org.springframework.ws.server.endpoint.adapter.method.jaxb.XmlRootElementPayloadMethodProcessor#0,org.springframework.ws.server.endpoint.adapter.method.jaxb.JaxbElementPayloadMethodProcessor#0,org.springframework.ws.server.endpoint.adapter.method.dom.XomPayloadMethodProcessor#0,org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter#0,org.springframework.ws.soap.server.endpoint.SoapFaultAnnotationExceptionResolver#0,org.springframework.ws.soap.server.endpoint.SimpleSoapExceptionResolver#0]; root of factory hierarchy
13-May-2016 13:42:32.764 INFO [http-nio-8088-exec-6] org.springframework.ws.soap.saaj.SaajSoapMessageFactory.afterPropertiesSet Creating SAAJ 1.3 MessageFactory with SOAP 1.1 Protocol
13-May-2016 13:42:32.784 INFO [http-nio-8088-exec-6] org.springframework.web.servlet.FrameworkServlet.initServletBean FrameworkServlet 'spring-ws': initialization completed in 2448 ms
13-May-2016 13:43:43.774 WARNING [http-nio-8088-exec-8] org.springframework.ws.server.MessageDispatcher.dispatch No endpoint mapping found for [SaajSoapMessage {http://www.csapi.org/schema/parlayx/sms/notification/v3_1/local}notifySmsDeliveryReceipt]
Das Problem liegt möglicherweise darin, dass der Endpunkt nicht von Spring-WS registriert wird.
Hat jemand eine Idee, wie man einen Endpunkt registriert und eine Operation mit Spring-WS deklariert?
Ihre Antwort scheint
springws-config.xml richtig. Der Dienst wirft jetzt 500 Fehler. –
poste deinen Fehler –