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 jest przeznaczony dla aplikacji klienckiej do udostępniania działania SOAP z interfejsem JAX-WS. javax.xml.ws.BindingProvider Właściwości SOAPACTION_USE_PROPERTY i SOAPACTION_URI_PROPERTY . Podane działanie SOAP zostanie użyte, a analizowanie komunikatu wychodzącego nie zostanie wykonane bez względu na ustawienie DISPATCH_CLIENT_OUTBOUND_RESOLUTION .

Ten przykład przedstawia kod sprawdzonych procedur z działaniem SOAP ustawionym w kontekście żądania. Jeśli SOAPACTION_URI_PROPERTY nie jest ustawiony lub jeśli SOAPACTION_USE_PROPERTY jest ustawiona na false , wywołanie createDispatch() Metoda zostanie oznaczona przez tę regułę.

Przykład:

// Utworzenie instancji rozsyłania
< span class= "indent2"> < /span> Rozesłanie < 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 < Łańcuch, Obiekt > 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 zdefiniowana 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 właściwość nie jest ustawiona, jest interpretowana jako łańcuch true , włączanie rozstrzygania operacji wychodzących. Ustawianie właściwości na false spowoduje wyłączenie rozstrzygania operacji wychodzących.

Dodatkowe informacje na ten temat: