Impondo Aderência às Ligações WSDL em Serviços da Web JAX-WS

O Java™ API for XML-Based Web Services (JAX-WS) Versão 2.1 introduziu o conceito de recursos como uma maneira de controlar programaticamente funções e comportamentos específicos. O RespectBindingFeature é um dos recursos padrão suportados. É possível usar o RespectBindingFeature para controlar se uma implementação JAX-WS é necessária para respeitar o conteúdo de uma ligação Web Services Description Language (WSDL) que está associada a um terminal.

Sobre Esta Tarefa

Enquanto documentos WSDL frequentemente são usados durante o processo de desenvolvimento, o cumprimento real do uso das especificações do documento WSDL, quando elas são fornecidas, no tempo de execução, não foram bem definidas em versões da especificação JAX-WS anterior à Versão 2.1. A especificação JAX-WS Versão 2.1 incluiu o recurso, RespectBindingFeature, para esclarecer o impacto do wsdl:binding em um ambiente de tempo de execução JAX-WS.

Ativar o recurso, RespectBindingFeature, faz o ambiente de tempo de execução JAX-WS inspecionar o wsdl:binding para um terminal no tempo de execução para garantir que a ligação dos parâmetros do service endpoint interface (SEI) e valores de retorno seja respeitada. Além disso, esse recurso garante que todas as extensões de wsdl:binding necessárias sejam entendidas e usadas pelo ambiente de tempo de execução, ou as extensões foram explicitamente desativadas pelo aplicativo. O seu aplicativo JAX-WS pode desativar uma extensão wsdl:binding específica que tenha uma interface WebServiceFeature definida usando a anotação apropriada que está associada com esse recurso, usando uma API que aceita a interface javax.xml.ws.WebServiceFeature, ou configurando os descritores de implementação.

Quando o recurso RespectBindingFeature não está ativado, o que é o padrão, o ambiente de tempo de execução pode escolher se qualquer parte do wsdl:binding é imposta.

Procedimento

  1. Desenvolva artefatos Java para o seu aplicativo JAX-WS que inclua um arquivo Web Services Description Language (WSDL) que representa o seu aplicativo de serviços da Web.
    1. Se você estiver iniciando com um arquivo WSDL, desenvolva artefatos Java a partir de um arquivo WSDL usando o comando wsimport para gerar os artefatos portáveis JAX-WS necessários.
    2. Se você estiver iniciando com componentes JavaBeans, desenvolva artefatos Java para aplicativos JAX-WS e gere um arquivo WSDL usando o comando wsgen.
  2. Se desejar ativar RespectBindingFeature na sua classe de implementação de terminal, use um dos seguintes métodos:
    • Use a anotação @RespectBinding no terminal.

      Para ativar o RespectBinding em um terminal, utilize a anotação @RespectBinding (javax.xml.ws.soap.RespectBinding) no terminal. A anotação @RespectBinding tem apenas um parâmetro, enabled. Esse parâmetro é opcional. O parâmetro enabled tem um valor booleano e indica se RespectBindingFeature está ativado para o terminal JAX-WS.

      O seguinte fragmento de exemplo ilustra a inclusão da anotação @RespectBinding para o terminal JAX-WS MyServiceImpl:
      @RespectBinding(enabled=true))
      @WebService
      public class MyServiceImpl {
      ...
      }
    • Use o elemento do descritor de implementação <respect-binding>.
      É possível usar o elemento <respect-binding> dentro do elemento <port-component> no descritor de implementação webservices.xml como uma alternativa ao uso da anotação @RespectBinding na classe de implementação de terminal em serviço; por exemplo:
      <port-component>
           <port-component-name>MyPort1</port-component-name>
           <respect-binding>
               <enabled>true</enabled>
           </respect-binding>
           <service-impl-bean>
               <servlet-link>MyPort1ImplBean</servlet-link>
           </service-impl-bean>
      </port-component>
  3. Se desejar ativar RespectBindingFeature no seu cliente, use um dos seguintes métodos:
    • Ative RespectBindingFeature em um cliente de despacho; por exemplo:
      RespectBindingFeature respectBinding = new RespectBindingFeature();
      Service svc = Service.create(serviceName);
      svc.addPort(portName, SOAPBinding.SOAP11_HTTP_BINDING, endpointUrl);
      Dispatch<Source> dsp = svc.createDispatch(portName, Source.class, Service.Mode.PAYLOAD, respectBinding);
    • Ative RespectBindingFeature em um cliente proxy dinâmico; por exemplo:
      // Crie um proxy dinâmico com RespectBinding ativado.
        Service svc = Service.create(serviceName);
        RespectBindingFeature respectBinding = new RespectBindingFeature();
        RespectBindingSample proxy = svc.getPort(portName, RespectBindingSample.class, respectBinding);
    • Ative RespectBindingFeature no seu cliente usando a anotação @RespectBinding; por exemplo:
      public class MyClientApplication {
      
                     // Ative RespectBinding para uma injeção de recurso port-component-ref.
                         @RespectBinding(enabled=true)
                         @WebServiceRef(MyService.class)
                         private MyPortType myPort;
                     ...
      }
    • Ative o RespectBindingFeature no seu cliente usando elementos do descritor de implementação dentro de um elemento port-component-ref; por exemplo:
      <service-ref>
          <service-ref-name>service/MyPortComponentRef</service-ref-name>
          <service-interface>com.example.MyService</service-ref-interface>
          <port-component-ref>
              <service-endpoint-interface>com.example.MyPortType</service-endpoint-interface>
              <respect-binding>
                  <enabled>true</enabled>
              </respect-binding>
          </port-component-ref>
      </service-ref>

Resultados

Ao implementar o recurso, RespectBindingFeature, você especificou para impor a aderência do conteúdo de uma ligação WSDL que está associada com um terminal para o seu aplicativo JAX-WS.


Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_enablerespectbindingfeature
Nome do arquivo: twbs_enablerespectbindingfeature.html