Проверка поведения действия SOAP, заданного у исходящих сообщений

В WebSphere Application Server 8 изменилось поведение, связанное с определением параметра действия SOAP у исходящих сообщений для клиентов диспетчера JAX-WS. До версии 8, если действие SOAP не передано приложением-клиентом диспетчера, среда выполнения JAX-WS не отправляет правильное действие SOAP в исходящем сообщении. Вместо этого, она указывает анонимную операцию в качестве действия. В версии 8, если действие SOAP не передано приложением-клиентом, среда выполнения JAX-WS определяет вызываемую операцию по содержимому исходящего сообщения и задает соответствующее значение для действия SOAP.

Это правило помечает вызовы для создания клиента диспетчера, когда:

Оптимальные методы кодирования для WebSphere Application Server традиционных и Liberty -это клиентское приложение для предоставления действия SOAP с JAX-WS javax.xml.ws.BindingProvider свойства SOAPACTION_USE_PROPERTY и в SOAPACTION_URI_PROPERTY . При этом будет применяться действие SOAP, и синтаксический анализ исходящего сообщения не будет выполняться независимо от значения параметра DISPATCH_CLIENT_OUTBOUND_RESOLUTION .

В следующем примере показан рекомендуемый код, в котором действие SOAP задано в контексте запроса. Если SOAPACTION_URI_PROPERTY не задано или если SOAPACTION_USE_PROPERTY задается в false , в связи с тем, что createDispatch() метод будет помечен этим правилом.

Пример:

//Создать экземпляр диспетчера
< span class= "indent2"> < /span> Dispatch < SOAPMessage> dispatch =
service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

// Использовать диспетчер в качестве объекта BindingProvider
BindingProvider bp = (BindingProvider) dispatch;

// Настроить объект RequestContext для отправки заголовка HTTP SOAPAction
Map < String, Object > rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello");

Поскольку такой анализ может быть дорогостоящей операцией, в WebSphere Application Server traditional предусмотрено свойство на уровне системы (для полного выключения анализа) и в контексте сообщения-запроса JAX-WS (для отключения анализа у отдельных сообщений). Если анализ выключен, в качестве действия SOAP в исходящем сообщении будет по-прежнему задаваться анонимная операция. Свойство отключения определяется как константа org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION со строковым значением jaxws.dispatch.outbound.operation.resolution.enable . Если свойство не задано, оно интерпретируется как строка true , разрешение исходящей операции. Задание свойства для false отключит разрешение исходящей операции.

Дополнительная информация: