Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

15.2. Configurer le sous-système des services web

Il existe de nombreuses options de configuration pour le sous-système de webservices, qui contrôle le comportement des Services Web déployés dans JBoss EAP 6. La commande pour modifier chaque élément dans le script de gestion CLI (EAP_HOME /bin/jboss-cli.sh ou EAP_HOME /bin/jboss-cli.bat) est fournie. Supprimer la partie de la commande /profile=default pour les serveurs autonomes, ou remplacer default par le nom de profil à configurer.
Adresse de point de terminaison publiée

Vous pouvez écrire à nouveau l'élément <soap:address> dans les contrats WSDL endpoint-published. Cette solution peut être utilisée pour contrôler l'adresse du serveur qui est publiée aux clients pour chaque point de terminaison. Chacun des éléments suivants en option peut être modifié pour satisfaire vos besoins. S'il y a un déploiement WS actif, alors toute modification d'un de ces éléments exigera un redémarrage du serveur.

Tableau 15.1. Éléments de configuration pour les adresses de points de terminaison publiés.

Élément Description CLI Command
modify-wsdl-address
Indique s'il faut toujours modifier l'adresse WSDL. Si true, le contenu de < adresse:soap > sera toujours remplacé. Si false, le contenu de < adresse:soap > sera remplacé seulement si ce n'est pas une URL valide. Les valeurs utilisées seront wsdl-host, wsdl-port, et wsdl-secure-port décrit ci-dessous.
/profile=default/subsystem=webservices/:write-attribute(name=modify-wsdl-address,value=true)
wsdl-host
Le nom d'hôte / adresse IP à utiliser pour écrire à nouveau <soap:address>. Si wsdl-host est défini au string jbossws.undefined.host, l'hôte du demandeur sera utilisé quand on écrit à nouveau une <soap:address>.
/profile=default/subsystem=webservices/:write-attribute(name=wsdl-host,value=10.1.1.1)
wsdl-port Entier relatif qui définit explicitement le port HTTP qui sera utilisé pour écrire à nouveau l'adresse SOAP. Si non défini, le port HTTP peut être identifié en cherchant la liste de connecteurs HTTP installés.
/profile=default/subsystem=webservices/:write-attribute(name=wsdl-port,value=8080)
wsdl-secure-port Entier relatif qui définit explicitement le port HTTPS qui sera utilisé pour écrire à nouveau l'adresse SOAP. Si non défini, le port HTTPS peut être identifié en cherchant la liste de connecteurs HTTPS installés.
/profile=default/subsystem=webservices/:write-attribute(name=wsdl-secure-port,value=8443)
Configurations de point de terminaison prédéfinis

Vous pouvez définir des configurations de points de terminaison qui peuvent être référencées par les implémentations de points de terminaison. Une des façons dont cela puisse être utilisé consiste à ajouter un gestionnaire donné à n'importe quel point de terminaison WS, pour lequel il est indiqué une configuration de point de terminaison donnée avec l'annotation @org.jboss.ws.api.annotation.EndpointConfig.

JBoss EAP 6 inclut une Standard-Endpoint-Config par défaut. Il existe également une configuration Recording-Endpoint-Config personnalisée, également incluse. Cela vous donne un exemple de gestionnaire d'enregistrement. La Standard-Endpoint-Config est utilisée automatiquement pour tout point de terminaison non associé à une autre configuration.
Pour lire la Standard-Endpoint-Config par le Management CLI, il suffit d'utiliser la commande suivante :
/profile=default/subsystem=webservices/endpoint-config=Standard-Endpoint-Config/:read-resource(recursive=true,proxies=false,include-runtime=false,include-defaults=true)
Configurations des points de terminaison

La configuration d'un point de terminaison, à laquelle on fait référence ainsi endpoint-config dans l'API de gestion, inclut pre-handler-chain, post-handler-chain et quelques propriétés qui sont appliquées à un point de terminaison particulier. Les commandes suivantes lisent et ajoutent un point de config.

Exemple 15.1. Lecture d'une config de point de terminaison

/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config:read-resource

Exemple 15.2. Ajout d'une config de point de terminaison

/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config:add
Chaînes de gestionnaires

Chaque config de point de terminaison peut être associée à des chaînes de gestionnaires PRE ou POST. Chaque chaîne de gestionnaire peut inclure des gestionnaires conformes à JAXWS. Pour les messages sortants, les gestionnaires de chaînes de gestionnaires PRE sont exécutés avant tout gestionnaire attaché aux points de terminaison, à l'aide de moyens JAXWS standards, comme avec l'annotation @HandlerChain. Les gestionnaires de chaînes de POST handler sont exécutés après les gestionnaires de points de terminaison habituels. Pour les messages entrants, c'est l'opposé. JAX-WS est une API standard pour les services basés XML, et est documenté à l'adresse suivante http://jcp.org/en/jsr/detail?id=224.

Une chaîne de gestionnaire peut aussi inclure un attribut protocol-bindings, qui définit les protocoles qui déclenchent le démarrage de la chaîne.

Exemple 15.3. Lecture d'une chaîne de gestionnaire

/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config/pre-handler-chain=recording-handlers:read-resource

Exemple 15.4. Ajouter un chaîne de gestionnaire

/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-handlers:add(protocol-bindings="##SOAP11_HTTP")
Handlers

Un gestionnaire JAXWS est un handler (gestionnaire) d'élément dépendant, qui se trouve à l'intérieur d'une chaîne de gestionnaire. Le gestionnaire prend un attribut de classe , qui est le nom de classe complet de la classe du gestionnaire. Quand le point de terminaison est déployé, une instance de cette classe sera créée pour chaque déploiement référençant. Le chargeur de classes de déploiement ou le chargeur de classes du module org.jboss.as.webservices.server.integration doivent pouvoir charger la classe de gestionnaire.

Exemple 15.5. Lecture d'un gestionnaire

/profile=default/subsystem=webservices/endpoint-config=Recording-Endpoint-Config/pre-handler-chain=recording-handlers/handler=RecordingHandler:read-resource

Exemple 15.6. Ajout d'un gestionnaire

/profile=default/subsystem=webservices/endpoint-config=My-Endpoint-Config/post-handler-chain=my-handlers/handler=foo-handler:add(class="org.jboss.ws.common.invocation.RecordingServerHandler")
Informations de runtime des services web

Vous pouvez afficher des informations d'exécution sur les Services Web, tels que le contexte web et l'URL WSDL, en interrogeant les points de terminaison eux-mêmes. Vous pouvez utiliser le caractère de * pour interroger tous les points de terminaison à la fois. Les deux exemples suivants montrent la commande à la fois pour un serveur dans un domaine géré, et pour un serveur autonome.

Exemple 15.7. Voir les informations de runtime sur tous les points de terminaison d'un serveur web dans un domaine géré.

Cette commande affiche les informations sur tous les points de terminaison sur le serveur nommé server-one qui se trouve sur l'hôte physique master et qui exécute sur un domaine géré.
/host=master/server=server-one/deployment="*"/subsystem=webservices/endpoint="*":read-resource

Exemple 15.8. Voir les informations de runtime sur tous les points de terminaison d'un serveur web dans un domaine autonome.

Cette commande affiche des informations sur tous les points de terminaison de services web sur un serveur autonome.
/deployment="*"/subsystem=webservices/endpoint="*":read-resource

Exemple 15.9. Exemple d'information de point de terminaison

L'exemple suivant est une sortie hypothétique.
{
   "outcome" => "success",
   "result" => [{
       "address" => [
           ("deployment" => "jaxws-samples-handlerchain.war"),
           ("subsystem" => "webservices"),
           ("endpoint" => "jaxws-samples-handlerchain:TestService")
       ],
       "outcome" => "success",
       "result" => {
           "class" => "org.jboss.test.ws.jaxws.samples.handlerchain.EndpointImpl",
           "context" => "jaxws-samples-handlerchain",
           "name" => "TestService",
           "type" => "JAXWS_JSE",
           "wsdl-url" => "http://localhost:8080/jaxws-samples-handlerchain?wsdl"
       }
   }]
}