14.5.2. Référence API Commun JAX-WS


Plusieurs concepts de développement de JAX-WS sont partagés entre les clients et les points de terminaison de Service Web. Incluent le framework de gestionnaires, le contexte du message et la gestion des erreurs.
Framework de gestionnaires

Le framework de gestionnaires est implémenté par une liaison de protocole de JAX-WS dans le runtime du client et le point de terminaison, qui est le composant de serveur. Les proxies et les instances Dispatch, connus collectivement en tant que fournisseurs de liaison, chacun utilisant des liaisons de protocole pour lier leur fonctionnalité abstraite à des protocoles spécifiques.

Les gestionnaires côté client et côté serveur sont organisés en une liste ordonnée, connue sous le nom de chaîne de gestionnaire. Les gestionnaires au sein d'une chaîne de gestionnaires sont appelés à chaque fois qu'un message est envoyé ou reçu. Les messages entrants sont traités par des gestionnaires avant que le fournisseur de liaison les traite. Les messages sortants sont traités par les gestionnaires après que le fournisseur de liaison les aient traités.
Les gestionnaires sont invoqués avec un contexte de message qui fournit des méthodes pour accéder et modifier les messages entrants et sortants et gérer un ensemble de propriétés. Les propriétés de contexte de message facilitent la communication entre des gestionnaires individuels, ainsi qu'entre les gestionnaires, les clients et les implémentations de services. Différents types de gestionnaires sont invoqués avec différents types de contextes de messages.

Types de gestionnaires de messages

Gestionnaire logique
Les gestionnaires logiques n'opèrent que sur des propriétés de contexte de messages et sur des charges utiles de messages. Les gestionnaires logiques sont libérés des protocoles et ne peuvent pas affecter les parties d'un message qui soient spécifiques à un protocole. Les gestionnaires logiques implémentent l'interface javax.xml.ws.handler.LogicalHandler.
Gestionnaire de protocoles
Les gestionnaires de protocoles fonctionnent sur des propriétés de contexte de message et des messages de protocole spécifique. Les gestionnaires de protocoles sont spécifiques à un protocole particulier et peuvent accéder et modifier les aspects spécifiques d'un protocole de message. Les gestionnaires de protocoles implémentent une interface dérivée de javax.xml.ws.handler.Handler except javax.xml.ws.handler.LogicalHandler.
Gestionnaire de points de terminaison
Sur un point de terminaison de service, les gestionnaires sont définis à l'aide de l'annotation @HandlerChain. L'emplacement du fichier de chaîne de gestionnaires peut être soit un java.net.URL absolu dans externalForm ou un chemin d'accès relatif du fichier source ou du fichier de classe.

Exemple 14.30. Exemple de gestionnaire de points de terminaison

@WebService
@HandlerChain(file = "jaxws-server-source-handlers.xml")
public class SOAPEndpointSourceImpl
{
   ...
}

Copy to Clipboard Toggle word wrap
Service Client Handler
Sur un client JAX-WS, les gestionnaires sont définis soit en utilisant l'annotation @HandlerChain, comme dans les points de terminaison de service, soit de façon dynamique, à l'aide de l'API JAX-WS.

Exemple 14.31. Définir un Service Client Handler par une API

Service service = Service.create(wsdlURL, serviceName);
Endpoint port = (Endpoint)service.getPort(Endpoint.class);
     
BindingProvider bindingProvider = (BindingProvider)port;
List<Handler> handlerChain = new ArrayList<Handler>();
handlerChain.add(new LogHandler());
handlerChain.add(new AuthorizationHandler());
handlerChain.add(new RoutingHandler());
bindingProvider.getBinding().setHandlerChain(handlerChain);
Copy to Clipboard Toggle word wrap
L'appel à la méthode setHandlerChain est requis.
Contexte du message

L'interface MessageContext est une super interface pour tous les contextes de message JAX-WS. Elle étend Map <String,Object> de méthodes et des constantes supplémentaires pour gérer un ensemble de propriétés qui permettent aux gestionnaires d'une chaîne de gestionnaires de partager l'état connexe de traitement. Par exemple, un gestionnaire peut utiliser la méthode put pour insérer une propriété dans le contexte du message. Un ou plusieurs autres gestionnaires de la chaîne de gestionnaires peuvent obtenir par la suite le message via la méthode get.

Les propriétés sont catégorisées soient comme APPLICATION ou GESTIONNAIRE. Toutes les propriétés sont disponibles pour tous les gestionnaires d'une instance d'un modèle d'échange de messages ou MEP (de l'anglais Message Exchange Pattern) d'un point de terminaison particulier. Par exemple, si un gestionnaire logique met une propriété dans le contexte du message, cette propriété sera également disponible à tous les gestionnaires de protocole dans la chaîne au cours de l'exécution d'une instance MEP.

Note

Un modèle d'échanges de messages asynchrone (MEP) permet d'envoyer et de recevoir des messages de façon asynchrone au niveau de la connexion HTTP. Vous pouvez l'activer en définissant des propriétés supplémentaires dans le contexte de la demande.
Les propriétés catégorisées en tant qu' APPLICATION sont également rendues disponibles en tant qu'applications clients et implémentations de point de terminaison de services. Le defaultscope d'une propriété est HANDLER par défaut.
Les messages logiques et SOAP utilisent des contextes différents.
Contexte de message logique
Lorsque les gestionnaires logiques sont invoqués, ils reçoivent un contexte de message de type LogicalMessageContext. Le LogicalMessageContext étend MessageContext par des méthodes qui récupèrent et modifient la charge du message. Il ne donne pas accès aux aspects spécifiques au protocole d'un message. Une liaison de protocole définit quels composants d'un message sont disponibles via un contexte logique message. Un gestionnaire logique déployé dans une liaison SOAP peut accéder au contenu du corps SOAP, mais pas aux en-têtes SOAP. En revanche, la liaison XML/HTTP définit qu'un gestionnaire de logique accède à l'entière charge XML d'un message.
Contexte de message SOAP
Quand les gestionnaires SOAP sont invoqués, ils reçoivent un SOAPMessageContext. Le SOAPMessageContext étend MessageContext par des méthodes qui obtiennent et modifient la charge du message SOAP.
Gestion des fautes

Une application peut lever une SOAPFaultException ou une exception spécifique à l'application utilisateur. Dans ce dernier cas, les wrapper beans de faute requis seront générés en cours d'exécution s'ils ne font pas déjà partie du déploiement.

Exemple 14.32. Exemple de gestion des fautes

public void throwSoapFaultException()
{
   SOAPFactory factory = SOAPFactory.newInstance();
   SOAPFault fault = factory.createFault("this is a fault string!", new QName("http://foo", "FooCode"));
   fault.setFaultActor("mr.actor");
   fault.addDetail().addChildElement("test");
   throw new SOAPFaultException(fault);
}
Copy to Clipboard Toggle word wrap
public void throwApplicationException() throws UserException
{
   throw new UserException("validation", 123, "Some validation error");
}
Copy to Clipboard Toggle word wrap
Annotations JAX-WS

Les annotations disponibles via JAX-WS API sont définies dans JSR-224, que l'on peut trouver à l'adresse suivante http://www.jcp.org/en/jsr/detail?id=224. Ces annotations sont dans le package javax.xml.ws.

Les annotations disponibles via JWS API sont définies dans JSR-181, que l'on peut trouver à l'adresse suivante http://www.jcp.org/en/jsr/detail?id=181. Ces annotations sont dans le package javax.jws.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat