Ellenőrizze a kimenő üzenetekben beállított SOAP Action viselkedési változásait

Ez a viselkedés a WebSphere Application Server 8 változatban a SOAP Action beállítás megállapítási módjának tekintetében változott a JAX-WS Dispatch ügyfelek kimenő üzeneteiben. A V8 előtti kiadásokban, ha a Dispatch ügyfélalkalmazás nem adott meg SOAP műveletet, akkor a JAX-WS futási környezet nem a helyes SOAP műveletet küldte a kimenő üzenetben. Helyette anonim műveletet állított be. Most a 8 változatban, ha a SOAP Action beállítást az ügyfélalkalmazás nem adja meg, akkor a JAX-WS futási környezet értelmezi a kimenő üzenetet, hogy megállapítsa a hívott műveletet és azt használja a SOAP Action megfelelő értékének megállapításához.

Ez a szabály a Dispatch ügyfél létrehozására vonatkozó hívásokat akkor jelöli meg, ha:

hagyományos WebSphere Application Server és Liberty esetén a legjobb kódolási gyakorlat a SOAP művelet megadása a JAX-WS javax.xml.ws.BindingProvider tulajdonságokkal (SOAPACTION_USE_PROPERTY és SOAPACTION_URI_PROPERTY). A megadott SOAP művelet lesz felhasználva és nem kerül sor a kimenő üzenet értelmezésére, tekintet nélkül a DISPATCH_CLIENT_OUTBOUND_RESOLUTION tulajdonság beállítására.

Ez a példa a követendő kódot mutatja be, ahol a SOAP művelet a kérés kontextusában van beállítva. Ha a SOAPACTION_URI_PROPERTY nincs beállítva vagy ha a SOAPACTION_USE_PROPERTY false értékre van beállítva, akkor a createDispatch() metódus hívását jelezni fogja a szabály.

Példa:

//Create a dispatch instance
Dispatch<SOAPMessage> dispatch =
service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

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

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

Mivel az értelmezés költséges lehet, a hagyományos WebSphere Application Server kiszolgálón egy Rendszer szintű tulajdonság beállításával az értelmezés végleg, a JAX-WS kérésüzenet kontextusában pedig üzenetenkénti alapon letiltható. Ha az értelmezés tiltott, akkor a SOAP Action beállítás a kimenő üzenetben továbbra is anonim műveletre lesz beállítva, ahogyan korábban. A letiltást végző tulajdonság konstansként (org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION) van megadva jaxws.dispatch.outbound.operation.resolution.enable karaktersorozat értékkel. Ha a tulajdonság nincs beállítva, akkor true karaktersorozatként lesz értelmezve, ami engedélyezi a kimenő művelet feloldást. A tulajdonság false értékre törtnő beállítása letiltja a kimenő művelet feloldást.

További információkért lásd: