Verificaţi modificarea de comportament în setarea SOAP Action pentru mesaje de ieşire

Comportamentul s-a modificat în WebSphere Application Server V8 cu privire la felul în care este determinată setarea SOAP Action pentru mesajele de ieşire pentru clienţii JAX-WS Dispatch. În ediţiile mai vechi de V8, dacă nu este furnizată o acţiune SOAP de către aplicaţia client Dispatch, mediul runtime JAX-WS nu trimite acţiunea SOAP corectă pentru mesajul de ieşire. În loc de aceasta, setează acţiunea la o operaţie anonimă. Acum, în V8, dacă nu este furnizată acţiunea SOAP de către aplicaţia client, mediul runtime JAX-WS parsează mesajul de ieşire pentru a determina ce operaţiune este invocată şi utilizează acest rezultat pentru a stabili valoarea corespunzătoare pentru SOAP Action.

Această regulă semnalează apelurile pentru crearea unui client Dispatch când:

Cele mai bune practici de codificare pentru WebSphere Application Server și Liberty este pentru aplicația client pentru a oferi o acțiune SOAP cu JAX-WS javax.xml.ws.BindingProvider proprietăţi SOAPACTION_USE_PROPERTY și SOAPACTION_URI_PROPERTY . Acțiunea SOAP furnizată va fi utilizată și parsarea mesajului de ieșire nu va avea loc indiferent de setarea DISPATCH_CLIENT_OUTBOUND_RESOLUTION .

Acesta este un exemplu de cod conform celor mai bune practici, cu setarea SOAP Action pentru contextul cererii. Dacă SOAPACTION_URI_PROPERTY nu este setat sau dacă SOAPACTION_USE_PROPERTY este setat la false , apelul la createDispatch() Metoda va fi marcată de această regulă.

Exemplu:

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

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

// Configure RequestContext to send SOAPAction HTTP Header
Harta < string, Obiect > rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello");

Deoarece această parsare poate fi costisitoare, poate fi setată o proprietate pentru WebSphere Application Server tradiţional la nivelul Sistem (pentru ca parsarea să fie întotdeauna dezactivată) sau pentru JAX-WS Request Message Context (pentru ca parsarea să fie dezactivată per mesaj). Dacă este dezactivată parsarea, acţiunea SOAP din mesajul de ieşire va fi setată în continuare la o operaţie anonimă, ca înainte. Proprietatea dezactivarea este definită ca fiind constantă org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION cu o valoare String de jaxws.dispatch.outbound.operation.resolution.enable În cazul în care proprietatea nu este setat, acesta este interpretat ca String true , permițând rezoluția operațiunii de ieșire. Stabilirea proprietății la false va dezactiva rezoluția operațiunii de ieșire.

Pentru informaţii suplimentare, vedeţi: