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:

Procedure ottimali di codifica per WebSphere Application Server tradizionale e Liberty consente all'applicazione client di fornire un'azione SOAP con JAX - WS javax.xml.ws.BindingProvider Proprietà SOAPACTION_USE_PROPERTY e il SOAPACTION_URI_PROPERTY . L'azione SOAP fornita verrà utilizzata e l'analisi del messaggio in uscita non si verificherà indipendentemente dall'impostazione del DISPATCH_CLIENT_OUTBOUND_RESOLUTION .

Questo esempio mostra un codice ottimale con l'azione SOAP impostata nel contesto delle richiesta. Se il SOAPACTION_URI_PROPERTY non è impostato o se SOAPACTION_USE_PROPERTY è impostato su false , la chiamata al createDispatch() verrà contrassegnato da questa regola.

Esempio:

//Create a dispatch instance
< span class= "indent2"> < /span> Distribuzione < SOAPMessage> distribuzione =
service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

// Use Dispatch as BindingProvider
BindingProvider bp = (BindingProvider) dispatch;

// Configure RequestContext to send SOAPAction HTTP Header
Mappa < 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 stringa di jaxws.dispatch.outbound.operation.resolution.enable . Se la proprietà non è impostata, viene interpretata come stringa true , abilitando la risoluzione dell'operazione in uscita. Impostazione della proprietà su false disabiliterà la risoluzione dell'operazione in uscita.

Per ulteriori informazioni, consultare: