In WebSphere Application Server V8, il comportamento relativo al modo in cui l'impostazione Azione SOAP viene determinata nei messaggi in uscita per i client di invio JAX-WS è stato modificato. Nelle release precedenti alla V8, se un'azione SOAP non viene fornita dall'applicazione client di invio, l'ambiente runtime JAX-WS non invia l'azione SOAP corretta nel messaggio in uscita. Invece, imposta l'azione su un'operazione anonima. IN V8, se l'azione SOAP non viene fornita dall'applicazione client, l'ambiente runtime JAX-WS analizza il messaggio in uscita per determinare l'operazione richiamata e la utilizza per determinare il valore appropriato per l'azione SOAP.
Questa regola contrassegna le chiamate per la creazione di un client di invio quando:
Le procedure di codifica ottimali per WebSphere Application Server traditional e Liberty prevedono che l'applicazione client fornisca un'azione SOAP con le proprietà JAX-WS javax.xml.ws.BindingProvider SOAPACTION_USE_PROPERTY e SOAPACTION_URI_PROPERTY. Viene utilizzata l'azione SOAP fornita e l'analisi del messaggio in uscita non viene eseguita indipendentemente dall'impostazione della proprietà DISPATCH_CLIENT_OUTBOUND_RESOLUTION.
Questo esempio mostra un codice ottimale con l'azione SOAP impostata nel contesto delle richiesta. Se SOAPACTION_URI_PROPERTY non è impostata o SOAPACTION_USE_PROPERTY è impostata su false, la chiamata al metodo createDispatch() viene contrassegnata da questa regola.
Esempio:|
//Create a dispatch instance Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE); // Use Dispatch as BindingProvider BindingProvider bp = (BindingProvider) dispatch; // Configure RequestContext to send SOAPAction HTTP Header Map<String, Object> rc = bp.getRequestContext(); rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE); rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello"); |
Poiché questa analisi può essere dispendiosa, è possibile impostare una proprietà su WebSphere Application Server traditional a livello di sistema (per disabilitare sempre l'analisi) oppure nel contesto del messaggio di richiesta JAX-WS (per disabilitare l'analisi in base al messaggio). Se l'analisi è disabilitata, l'azione SOAP nel messaggio in uscita continuerà ad essere impostata su un'azione anonima come in precedenza. La proprietà di disabilitazione è definita come costante org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION con un valore String jaxws.dispatch.outbound.operation.resolution.enable. Se la proprietà non è impostata, viene interpretata come String true, abilitando la risoluzione dell'operazione in uscita. Impostando la proprietà su false, la risoluzione dell'operazione in uscita verrà disabilitata.
Per ulteriori informazioni, consultare: