jax-ws: come ottenere un handle per iniziare / terminare l'elaborazione del messaggio soap in arrivo

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

  •  05-07-2019
  •  | 
  •  

Domanda

Situazione: servizio web jax-ws su Weblogic appserver; wsdl primo sviluppo, personalizzazioni jaxb nel file di associazione esterno.

Vorrei ottenere un controllo sul contesto jaxb effettivo che elaborerà il messaggio soap xml in arrivo, prima che non è stato suddiviso in oggetti java.

Quindi vorrei ottenere il non marshalling di questo contesto jaxb - quello che verrà effettivamente utilizzato durante il marshalling. E quindi imposta alcune proprietà di questo unmarshaller (ad esempio listener e idresolver).

È stato utile?

Soluzione

Il nuovo @UsesJAXBContex annotazione JAXBContextFactoryin jaxws 2.1.5 - jaxb 2.2 è probabilmente quello di cui ho bisogno. Comunque weblogic 10.3.1 usa jaxws 2.1.1, jaxb 2.1.3.

Un'altra soluzione è utilizzare:

@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>

Questo dà accesso al messaggio soap xml. Devo ancora capire dove si trova il nome del metodo.

Invece di:

@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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top