Cómo forzar la adhesión a enlaces WSDL en servicios web JAX-WS

JAX-WS (API de Java™ para servicios web XML) Versión 2.1 introduce el concepto de características para controlar mediante programación funciones y comportamientos específicos. RespectBindingFeature es una de las características estándar soportadas. Puede utilizar RespectBindingFeature para controlar si la implementación de JAX-WS es necesaria para respetar el contenido de un enlace WSDL (lenguaje de descripción de servicios web) asociado con un punto final.

Acerca de esta tarea

Aunque los documentos WSDL se utilizan con frecuencia durante el proceso de desarrollo, la aplicación real del uso de las especificaciones de documento WSDL, cuando se proporcionan, en tiempo de ejecución no están bien definidas en las versiones de la especificación JAX-WS anteriores a la Versión 2.1. La especificación JAX-WS Versión 2.1 ha añadido la característica RespectBindingFeature para esclarecer el impacto de wsdl:binding en un entorno de ejecución JAX-WS.

La habilitación de la característica RespectBindingFeature hace que el entorno de ejecución de JAX-WS inspeccione el wsdl:binding para un punto final en tiempo de ejecución para garantizar que el enlace de parámetros de interfaz de punto final de servicio (SEI) y los valores devueltos se respeten. Además, esta característica garantiza que todas las extensiones wsdl:binding necesarias sean entendidas y utilizadas por el entorno de ejecución o que la aplicación haya inhabilitado explícitamente las extensiones. La aplicación JAX-WS puede inhabilitar una extensión wsdl:binding específica que tenga una interfaz WebServiceFeature definida utilizando la anotación adecuada asociada con dicha característica, utilizando una API que acepta la interfaz javax.xml.ws.WebServiceFeature, o configurando los descriptores de despliegue.

Cuando la función RespectBindingFeature no está habilitada, que es el valor predeterminado, el entorno de ejecución puede elegir si se aplica cualquier parte de wsdl:binding.

Procedimiento

  1. Desarrolle artefactos Java para la aplicación JAX-WS que incluye un archivo WSDL (lenguaje de descripción de servicios web) que representa los datos de la aplicación de servicios web.
    1. Si va a empezar con un archivo WSDL, desarrolle los artefactos Java desde un archivo WSDL utilizando el mandato wsimport para generar los artefactos portátiles JAX-WS necesarios.
    2. Si va a empezar con componentes JavaBeans, desarrolle artefactos Java para aplicaciones JAX-WS y genere un archivo WSDL utilizando el mandato wsgen.
  2. Si desea habilitar RespectBindingFeature en la clase de implementación de punto final, utilice uno de los métodos siguientes:
    • Utilice la anotación @RespectBinding en el punto final.

      Para habilitar RespectBinding en un punto final, utilice la anotación @RespectBinding (javax.xml.ws.RespectBinding) en el punto final. La anotación @RespectBinding sólo tiene un parámetro, enabled. Este parámetro es opcional. El parámetro enabled tiene un valor booleano e indica si RespectBindingFeature está habilitado para el punto final JAX-WS.

      El fragmento de código del ejemplo siguiente muestra cómo añadir la anotación @RespectBinding para el punto final JAX-WS MyServiceImpl:
      @RespectBinding(enabled=true))
      @WebService
      public class MyServiceImpl {
      ...
      }
    • Utilice el elemento del descriptor de despliegue <respect-binding>.
      Puede utilizar el elemento <respect-binding> dentro del elemento <port-component> en el descriptor de despliegue webservices.xml como alternativa al uso de la anotación @RespectBinding en la clase de implementación de punto final de servicio; por ejemplo:
      <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. Si desea habilitar RespectBindingFeature en el cliente, utilice uno de los métodos siguientes:
    • Habilite RespectBindingFeature en un cliente de asignación; por ejemplo:
      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);
    • Habilite RespectBindingFeature en un cliente de proxy dinámico; por ejemplo:
      // Crear un proxy dinámico con RespectBinding habilitado.
        Service svc = Service.create(serviceName);
        RespectBindingFeature respectBinding = new RespectBindingFeature();
        RespectBindingSample proxy = svc.getPort(portName, RespectBindingSample.class, respectBinding);
    • Habilite RespectBindingFeature en el cliente utilizando la anotación @RespectBinding; por ejemplo:
      public class MyClientApplication {
      
                     // Habilitar RespectBinding para una inyección de recursos port-component-ref.
                         @RespectBinding(enabled=true)
                         @WebServiceRef(MyService.class)
                         private MyPortType myPort;
                     ...
      }
    • Habilite RespectBindingFeature en el cliente utilizando elementos de descriptor de despliegue dentro de un elemento port-component-ref; por ejemplo:
      <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

Al implementar la característica RespectBindingFeature ha especificado que se debe aplicar el cumplimiento del contenido de un enlace WSDL asociado con un punto final para la aplicación JAX-WS.


Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_enablerespectbindingfeature
File name: twbs_enablerespectbindingfeature.html