JAX-WS: So erhalten Sie einen Griff zum Starten/Ende der Verarbeitung eingehender Seifennachricht

StackOverflow https://stackoverflow.com/questions/1808032

  •  05-07-2019
  •  | 
  •  

Frage

Situation: JAX-WS-Webdienst auf Weblogic AppServer; WSDL Erste Entwicklung, JAXB -Anpassungen in externer Bindungsdatei.

Ich möchte den tatsächlichen JAXB -Kontext verarbeiten, der die eingehende SOAP XML -Nachricht verarbeitet. Vor Es wurde in Java -Objekte unangebracht.

Dann würde ich gerne gerne erhalten Der Unmarshaller dieses JAXB -Kontextes - derjenige, der tatsächlich während der Unmarshalling verwendet wird. Und dann einige Eigenschaften dieses Unmarshallers (z. B. Hörer und Idresolver) einrichten.

War es hilfreich?

Lösung

Das neue @USESJAXBCONTEX Annotation JaxbContextFactoryin Jaxws 2.1.5 - Jaxb 2.2 ist wahrscheinlich das, was ich dafür brauche. Weblogic 10.3.1 verwendet jedoch JAXWS 2.1.1, JAXB 2.1.3.

Eine andere Lösung ist zu verwenden:

@WebServiceProvider(portName = "Port", serviceName = "Service", targetNamespace = "tns",                                                                                                        wsdlLocation = "/wsdls/x.wsdl")
@BindingType(value = "http://schemas.xmlsoap.org/wsdl/soap/http")
@ServiceMode(value = javax.xml.ws.Service.Mode.MESSAGE)
public class ServiceProvider implements Provider<SOAPMessage>

Dies gibt Zugriff auf die SOAP XML -Nachricht. Ich muss noch herausfinden, wo der Methodenname gefunden werden kann.

Anstatt von:

@WebService(portName = "Port", serviceName = "Service", targetNamespace = "tns",
wsdlLocation = "/wsdls/x.wsdl", endpointInterface = "tns.PortType")
@BindingType("http://schemas.xmlsoap.org/wsdl/soap/http")
public class ServicePort implements PortType
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top