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: