jax-ws: comment obtenir un identifiant pour le début / la fin du traitement d'un message SOAP entrant
Question
Situation: service Web jax-ws sur le serveur d'applications Weblogic; wsdl premier développement, personnalisations jaxb dans un fichier de liaison externe.
Je voudrais obtenir un descripteur du contexte jaxb lui-même qui traitera le message soap xml entrant, avant que celui-ci n'ait pas été transformé en objets java.
Ensuite, je voudrais obtenir le dénominateur absolu de ce contexte jaxb - celui qui sera réellement utilisé lors du décompression simultanée. Et ensuite, configurez certaines propriétés de cet unmarshaller (par exemple, auditeur et idresolver).
La solution
La nouvelle @UsesJAXBContex annotation JAXBContextFactoryin jaxws 2.1.5 - jaxb 2.2 est probablement ce dont j'ai besoin pour cela. Cependant, weblogic 10.3.1 utilise jaxws 2.1.1, jaxb 2.1.3.
Une autre solution consiste à utiliser:
@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>
Ceci donne accès au message soap xml. Je dois encore trouver où trouver le nom de la méthode.
Au lieu de:
@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