Application du respect des liaisons WSDL dans les services Web JAX-WS

JAX-WS (Java™ API for XML-Based Web Services) version 2.1 a introduit le concept de fonctions comme un moyen de piloter par programme des fonctions et comportements spécifiques. RespectBindingFeature est l'une des fonctions standard prises en charge. La fonction RespectBindingFeature peut être utilisée pour contrôler si une implémentation JAX-WS est requise pour respecter le contenu d'une liaison WSDL (Web Services Description Language) associée à un noeud final.

Pourquoi et quand exécuter cette tâche

Tandis que les documents WSDL sont couramment utilisés au cours du processus de développement, l'obligation effective de respecter les spécifications des document WSDL dans l'environnement d'exécution n'avait pas été clairement définie dans les versions des spécifications JAX-WS antérieures à la version 2.1. La spécification JAX-WS version 2.1 a ajouté la fonction RespectBindingFeature pour clarifier l'impact de l'élément wsdl:binding dans un environnement d'exécution JAX-WS.

L'activation de la fonction RespectBindingFeature oblige l'environnement d'exécution JAX-WS à vérifier que wsdl:binding contient un noeud final, pour garantir que la liaison des paramètres de l'interface SEI et des valeurs renvoyées est respectée au moment de l'exécution. Par ailleurs, cette fonction vérifie que toutes les extensions requises de wsdl:binding sont comprises et utilisées par l'environnement d'exécution, ou qu'elles ont été désactivées de façon explicite par l'application. L'application JAX-WS peut désactiver une extension spécifique de wsdl:binding disposant d'une interface WebServiceFeature définie, en utilisant l'annotation associée à cette fonction, à l'aide d'une API acceptant l'interface javax.xml.ws.WebServiceFeature, ou en configurant les descripteurs de déploiement.

Lorsque la fonction RespectBindingFeature n'est pas activée, ce qui est le cas par défaut, l'environnement d'exécution choisit la partie de l'élément wsdl:binding à appliquer.

Procédure

  1. Développez des artefacts Java pour votre application JAX-WS qui comprend un fichier WSDL (Web Services Description Language) représentant l'application de services web.
    1. Si vous commencez avec un fichier WSDL, développez des artefacts Java à partir d'un fichier WSDL en utilisant la commande wsimport pour générer les artefacts portables JAX-WS requis.
    2. Si vous commencez avec des composants JavaBeans, développez des artefacts Java pour des applications JAX-WS et générez, facultativement, un fichier WSDL en utilisant la commande wsgen.
  2. Pour activer la fonction RespectBindingFeature dans votre classe d'implémentation de noeud final, utilisez l'une des méthodes suivantes :
    • Utilisez l'annotation @RespectBinding sur le noeud final.

      Pour activer RespectBinding sur un noeud final, utilisez l'annotation @RespectBinding (javax.xml.ws.RespectBinding) sur ce noeud. L'annotation @RespectBinding n'a qu'un paramètre, enabled. Ce paramètre est facultatif. La valeur du paramètre enabled est booléenne. Elle indique si RespectBindingFeature est activé pour le noeud final JAX-WS.

      Le fragment de code ci-dessous illustre l'ajout de l'annotation @RespectBinding pour le noeud final JAX-WS MyServiceImpl :
      @RespectBinding(enabled=true))
      @WebService
      public class MyServiceImpl {
      ...
      }
    • Utilisez l'élément de descripteur de déploiement <respect-binding>.
      L'élément <respect-binding> peut être utilisé à l'intérieur de l'élément <port-component> dans le descripteur de déploiement webservices.xml, et constituer une alternative à l'utilisation de l'annotation @RespectBinding dans la classe d'implémentation du noeud final de service, par exemple :
      <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. Pour activer la fonction RespectBindingFeature dans votre client, utilisez l'une des méthodes suivantes :
    • Activez RespectBindingFeature dans un client Dispatch, par exemple :
      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);
    • Activez RespectBindingFeature dans un client de proxy dynamique, par exemple :
      // Création d'un proxy dynamique avec RespectBinding activé.
        Service svc = Service.create(serviceName);
        RespectBindingFeature respectBinding = new RespectBindingFeature();
        RespectBindingSample proxy = svc.getPort(portName, RespectBindingSample.class, respectBinding);
    • Activez RespectBindingFeature dans votre client à l'aide de l'annotation @RespectBinding, par exemple :
      public class MyClientApplication {
      
                     // Activation de RespectBinding pour une injection de ressource port-component-ref.
                         @RespectBinding(enabled=true)
                         @WebServiceRef(MyService.class)
                         private MyPortType myPort;
                     ...
      }
    • Activez RespectBindingFeature dans votre client à l'aide d'éléments de descripteur de déploiement à l'intérieur d'un élément port-component-ref, par exemple :
      <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>

Résultats

En implémentant la fonction RespectBindingFeature, vous avez obligé votre application JAX-WS à respecter le contenu d'une liaison WSDL associée à un noeud final.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_enablerespectbindingfeature
Nom du fichier : twbs_enablerespectbindingfeature.html