Zkontrolovat změnu chování v sadě akcí SOAP v odchozích zprávách

Chování se v produktu WebSphere Application Server verze 8 změnilo ve způsobu určování nastavení akce SOAP na odchozí zprávy pro klienty odbavení JAX-WS. Pokud ve vydáních předcházejících verzi 8 nebyla akce SOAP poskytnuta aplikací klienta odbavení, běhové prostředí JAX-WS neodešle správnou akci SOAP v odchozí zprávě. Místo toho nastaví akci na anonymní operaci. Nyní ve verzi 8, pokud akce SOAP není poskytována aplikací klienta, běhové prostředí JAX-WS provede analýzu odchozí zprávy s cílem určit vyvolanou operaci a použít ji k určení odpovídající hodnoty akce SOAP.

Toto pravidlo označí volání k vytvoření klienta odbavení, pokud:

Nejlepší metody kódování pro server WebSphere Application Server traditional a Liberty je pro aplikaci klienta poskytnout akci SOAP s vlastnostmi JAX-WS javax.xml.ws.BindingProvider SOAPACTION_USE_PROPERTY a the SOAPACTION_URI_PROPERTY. Poskytnutá akce SOAP se použije a analýza odchozí zprávy nebude provedena bez ohledu na nastavení vlastnosti DISPATCH_CLIENT_OUTBOUND_RESOLUTION.

Tento příklad zobrazuje kód doporučených postupů se sadou akcí SOAP v kontextu požadavku. Není-li vlastnost SOAPACTION_URI_PROPERTY nastavena nebo pokud je vlastnost SOAPACTION_USE_PROPERTY nastavena na hodnotu false, volání metody createDispatch() bude označeno tímto pravidlem.

Příklad:

//Vytvořit instanci odbavení
Dispatch<SOAPMessage> dispatch =
service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

// Použít odbavení jako BindingProvider
BindingProvider bp = (BindingProvider) dispatch;

// Konfigurovat RequestContext k odeslání záhlaví SOAPAction HTTP
Map<String, Object> rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello");

Protože tato analýza může být drahá, může být vlastnost nastavena na serveru WebSphere Application Server traditional na úrovni System (aby byla vždy zakázána syntaktická analýza) nebo JAX-WS Request Message Context (k zakázání analýzy na základě zpráv). Je-li analýza zakázána, akce SOAP v odchozí zprávě bude i nadále nastavena na anonymní operaci jako předtím. Vlastnost zakázání je definována jako konstanta org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION s hodnotou typu String jaxws.dispatch.outbound.operation.resolution.enable. Není-li tato vlastnost nastavena, je interpretována jako řetězec true umožňující vyřešení odchozí operace. Nastavení vlastnosti na false zakáže vyřešení odchozí operace.

Další informace viz: