Verificar uma mudança de comportamento na Ação SOAP configurada nas mensagens de saída

O comportamento mudou no WebSphere Application Server V8 na maneira como a configuração da Ação SOAP é determinada nas mensagens de saída para clientes JAX-WS Dispatch. Nas liberações anteriores a V8, se uma Ação SOAP não for fornecida pelo aplicativo do cliente Dispatch, o ambiente de tempo de execução JAX-WS não enviará a Ação SOAP correta na mensagem de saída. Em vez disso, configura a ação para uma operação anônima. Agora na V8, se a Ação SOAP não for fornecida pelo aplicativo cliente, o ambiente de tempo de execução JAX-WS analisará a mensagem de saída para determinar a operação sendo chamada e usará isso para determinar o valor apropriado para a Ação SOAP.

Esta regra sinaliza as chamadas para criar um cliente Dispatch quando:

Melhores práticas de codificação para o WebSphere Application Server tradicional e Liberty é para o aplicativo cliente fornecer uma ação SOAP com o JAX-WS javax.xml.ws.BindingProvider propriedades SOAPACTION_USE_PROPERTY e o SOAPACTION_URI_PROPERTY . A Ação SOAP fornecida será usada e a análise da mensagem de saída não ocorrerá, independentemente da configuração do DISPATCH_CLIENT_OUTBOUND_RESOLUTION propriedade.

Este exemplo mostra o código de melhor prática com a Ação SOAP configurada no contexto de solicitação. Se SOAPACTION_URI_PROPERTY não está configurado ou se SOAPACTION_USE_PROPERTY é configurado como false , a chamada para o createDispatch() será sinalizado por esta regra

Exemplo:

//Criar uma instância de dispatch
< span class= "indent2"> < /span> Despacho < SOAPMessage> dispatch =
service.createDispatch(portName, SOAPMessage.class, Service.Mode.MESSAGE);

// Usar Dispatch como BindingProvider
BindingProvider bp = (BindingProvider) dispatch;

// Configurar RequestContext para enviar o Cabeçalho HTTP SOAPAction
Map < String, Object> rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, "hello");

Como essa análise pode ser dispendiosa, uma propriedade pode ser configurada no WebSphere Application Server tradicional no nível do Sistema (para sempre desativar a análise) ou no Contexto de mensagem de solicitação JAX-WS (para desativar a análise de acordo com a mensagem). Se a análise for desativada, a Ação SOAP na mensagem de saída continuará sendo configurada como uma operação anônima como antes. A propriedade de desativação é definida como constante org.apache.axis2.jaxws.Constants.DISPATCH_CLIENT_OUTBOUND_RESOLUTION com um valor de Sequência de jaxws.dispatch.outbound.operation.resolution.enable . Se a propriedade não for configurada, ela será interpretada como a Sequência true , ativando a resolução da operação de saída Configurando a propriedade para false desativará a resolução da operação de saída

Para obter informações adicionais, veja: