14.3. Ponts de terminaison de services web JAX-WS

14.3.1. Les points de terminaison de Services Web JAX-WS

Cette section est une vue d'ensemble des points de terminaison de service JAX-WS web et des concepts qui l'accompagnent. Un point de terminaison de Service Web JAX-WS est le composant de serveur d'un Service Web. Les clients et les autres Services Web le communiquent via le protocole HTTP à l'aide d'un langage XML appelé Simple Object Access Protocol (SOAP). Le point de terminaison lui-même est déployé dans le conteneur JBoss EAP 6.
Les descripteurs WSDL peuvent être créés de plusieurs façons :
  1. Vous pouvez écrire les descripteurs WSDL manuellement.
  2. Si vous utilisez les annotations de JAX-WS qui créent les descripteurs WSDL automatiquement pour vous. Il s'agit de la méthode la plus commune pour créer des descripteurs WSDL.
Un bean d'implémentation de point de terminaison est annoté d'annotations JAX-WS et est déployé sur le serveur. Le serveur génère et publie automatiquement le contrat abstrait en format WSDL pour la consommation client. Tous les marshalling et unmarshalling sont délégués au service Architecture Java pour XML Binding (JAXB).
Le point de terminaison peut être un POJO (Plain Old Java Object) ou une Application Web Java EE. Vous pouvez également exposer des points de terminaison à l'aide d'un bean de session stateless EJB3. Il est empaqueté dans un fichier d'Archive Web (WAR). La spécification d'emballage de point de terminaison, appelée Java Service Endpoint (JSE) est définie dans JSR-181, qui se trouve dans http://jcp.org/aboutJava/communityprocess/mrel/jsr181/index2.html.
Conditions préalables de développement

Un service web doit se conformer aux conditions préalables de l'API JAXWS et à la spécification des métadonnées des services web qui se trouvent dans http://www.jcp.org/en/jsr/summary?id=181. Une implémentation valide devra remplir les critères suivants :

  • Contenir une annotation javax.jws.WebService.
  • Tous les paramètres de méthode et les types de renvoi doivent être compatibles avec la spécification JAXB 2.0, JSR-222. Voir http://www.jcp.org/en/jsr/summary?id=222 pour plus d'informations.

Exemple 14.10. Exemple de point de terminaison POJO

@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class JSEBean01
{
   @WebMethod
   public String echo(String input)
   {
      ...
   }
}

Exemple 14.11. Exemple de point de terminaison de Services Web

<web-app ...>
  <servlet>
    <servlet-name>TestService</servlet-name>
    <servlet-class>org.jboss.test.ws.jaxws.samples.jsr181pojo.JSEBean01</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>TestService</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>


Exemple 14.12. Exposer un point de terminaison dans un EJB

Le bean de session stateless EJB3 expose la même méthode sur l'interface éloignée et en tant qu'opération de point de terminaison.
@Stateless
@Remote(EJB3RemoteInterface.class)
@RemoteBinding(jndiBinding = "/ejb3/EJB3EndpointInterface")

@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class EJB3Bean01 implements EJB3RemoteInterface
{
   @WebMethod
   public String echo(String input)
   {
      ...
   }
}

Fournisseurs de points de terminaison

Les services JAX-WS implémentent généralement une interface de point de terminaison de service Java (SEI), qui peut être mappée à partir d'un type de port WSDL, soit directement ou à l'aide d'annotations. Ce SEI fournit une abstraction de haut niveau qui masque les détails entre les objets Java et leurs représentations XML. Toutefois, dans certains cas, les services doivent pouvoir opérer au niveau du message XML. L'interface de point de terminaison Provider (fournisseur) fournit cette fonctionnalité aux Services Web qui l'implémentent.

Consommer et accéder au point de terminaison.

Une fois que vous aurez déployé votre Service Web, vous pourrez consommer le WSDL pour créer les stubs de composants qui seront à la base de votre application. Votre application pourra alors accéder au point de terminaison et faire son travail.

Exemples

Les JBoss EAP Quickstarts incluent plusieurs applications JAX-WS Web Services qui fonctionnent correctement. Exemples :

  • wsat-simple
  • wsba-coordinator-completion-simple
  • wsba-participant-completion-simple