Sprawdzenie, czy nie zmieniło się zachowanie w ustawieniu działania SOAP w komunikatach wychodzących

W produkcie WebSphere Application Server 8 zostało zmienione zachowanie w sposobie określania ustawienia działania SOAP w komunikatach wychodzących dla klientów rozsyłania JAX-WS. W wersjach wcześniejszych niż wersja 8, jeśli działanie SOAP nie jest udostępniane przez aplikację kliencką rozsyłania, środowisko wykonawcze JAX-WS nie wysyła poprawnego działania SOAP w komunikacie wychodzącym. Zamiast tego ustawia działanie na operację anonimową. Obecnie, w wersji 8, jeśli działanie SOAP nie zostało udostępnione przez aplikację kliencką, środowisko wykonawcze JAX-WS przeanalizuje komunikat wychodzący, aby określić wywoływaną operację i użyć jej w celu określenia odpowiedniej wartości dla działania SOAP.

Ta reguła oznacza flagą wywołania w celu utworzenia klienta rozsyłania, gdy:

Sprawdzone procedury kodowania dla serwera WebSphere Application Server traditional i Liberty są przeznaczone dla aplikacji klienckiej w celu udostępnienia działania SOAP z właściwościami javax.xml.ws.BindingProvider interfejsu JAX-WS SOAPACTION_USE_PROPERTY i SOAPACTION_URI_PROPERTY. Udostępnione działanie SOAP zostanie użyte, a analizowanie komunikatu wychodzącego nie nastąpi bez względu na ustawienie właściwości DISPATCH_CLIENT_OUTBOUND_RESOLUTION.

Ten przykład przedstawia kod sprawdzonych procedur z działaniem SOAP ustawionym w kontekście żądania. Jeśli właściwość SOAPACTION_URI_PROPERTY nie jest ustawiona lub gdy właściwość SOAPACTION_USE_PROPERTY jest ustawiona na wartość false, wywołanie metody createDispatch() zostanie oznaczone flagą przez tę regułę.

Przykład:

// Utworzenie instancji rozsyłania
Dispatch<SOAPMessage> dispatch =
service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

// Użycie rozsyłania jako BindingProvider
BindingProvider bp = (BindingProvider) dispatch;

// Skonfigurowanie RequestContext do wysyłania nagłówka HTTP SOAPAction
Map<String, Object> rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello");

Ponieważ ta analiza może być kosztowna, właściwość może zostać ustawiona na serwerze WebSphere Application Server traditional na poziomie systemu (aby zawsze wyłączyć analizę) lub w kontekście komunikatu żądania JAX-WS (w celu wyłączenia analizowania dla poszczególnych komunikatów). Jeśli analizowanie jest wyłączone, działanie SOAP w komunikacie wychodzącym będzie nadal ustawione na operację systemową, jak wcześniej. Właściwość wyłączania jest zdefiniowane jako stała org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION z wartością łańcuchową jaxws.dispatch.outbound.operation.resolution.enable. Jeśli ta właściwość nie jest ustawiona, jest interpretowana jako łańcuch true, co umożliwia rozstrzygnięcie operacji wychodzącej. Ustawienie tej właściwości na wartość false spowoduje wyłączenie rozstrzygania operacji wychodzących.

Dodatkowe informacje na ten temat: