(seguito da questa domanda: Getting raw XML response from Java web service client)Come posso trasferire i dati da un gestore SOAP a un client Webservice?
Ho un gestore di messaggi SOAP che è in grado di ottenere il codice XML XML di una risposta al servizio web. Ho bisogno di ottenere questo XML nel client webservice in modo da poter eseguire alcune trasformazioni XSL sulla risposta prima di inviarlo sulla sua strada. Ho difficoltà a trovare un buon modo per ottenere dati da un gestore SOAP che cattura i messaggi in arrivo e rende disponibile l'XML raw a un client di servizio Web generato (da un WSDL). Qualche idea se questo è persino fattibile?
mi è venuta in mente qualcosa di simile:
public class CustomSOAPHandler implements javax.xml.ws.handler.soap.SOAPHandler<javax.xml.ws.handler.soap.SOAPMessageContext>
{
private String myXML;
public String getMyXML()
{
return myXML;
}
...
public boolean handleMessage(SOAPMessageContext context)
{
...
myXML = this.getRawXML(context.getMessage());
}
//elsewhere in the application:
...
myService.doSomething(someRequest);
for (Handler h: ((BindingProvider)myService).getBinding().getHandlerChain())
{
if (h instanceof CustomSOAPHandler)
{
System.out.println("HandlerResult: "+ ((CustomSOAPHandler)h).getMyXML());
}
}
Nei test molto semplici, questo sembra funzionare. Ma questa soluzione sembra un po 'come un hack economico. Non mi piace impostare l'XML raw come membro del chain handler e ho la sensazione che questo violi molte altre best practice. Qualcuno ha un modo più elegante per farlo?
È possibile impostare un oggetto DOM in HttpSession? – davidfmatheson
@davidfmatheson: Forse, ma perché dovrei usare un oggetto DOM invece di una stringa, che è quello che voglio veramente? – FrustratedWithFormsDesigner