Ricerca una modifica del comportamento nell'insieme di azioni SOAP nei messaggi in uscita

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: