Exemple : Configuration des classes de gestionnaire pour les descripteurs de déploiement de services Web
Le présent scénario explique comment ajouter un client et des classes de gestionnaire de serveurs à un modèle d'application nommé WebServicesSamples.ear. Les classes de gestionnaire affichent des messages lorsqu'elles reçoivent une demande ou une réponse à traiter.
Le code de la classe de gestionnaire client est illustré dans l'exemple suivant :
package samples;
public class ClientHandler implements javax.xml.rpc.handler.Handler {
public ClientHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) {}
public void destroy() {}
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
Le code de la classe de gestionnaire serveur est illustré dans l'exemple suivant :
package sample;
public class ServerHandler implements javax.xml.rpc.handler.Handler {
public ServerHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) {}
public void destroy() {}
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
- Compilez ces classes à l'aide de :
%JAVA_HOME%\bin\java -extdirs %WAS_EXT_DIRS% ClientHandler.java ServerHandler.java
$JAVA_HOME/bin/java -extdirs $WAS_EXT_DIRS ClientHandler.java ServerHandler.java
- Lancez un outil d'assemblage et importez les deux fichiers d'archive EAR
de beans enterprise :
...\installableApps\WebServicesSamples.ear
.../installableApps/WebServicesSamples.ear
...\installableApps\ApplicationClients.ear
.../installableApps/ApplicationClients.ear
- Importez les classes de gestionnaire compilées dans les projets pour les modules
exemple :
- Importez sample.ClientHandler dans le répertoire appClientModule du projet AddressBookClient.
- Importez sample.ServerHandler dans le répertoire ejbModule du projet AddressBookW2JE.
- Configurez le descripteur
de déploiement client pour les classes de gestionnaire.
Cette rubrique explique comment configurer le descripteur de déploiement client pour des classes de gestionnaire fournies par l'utilisateur.
- Configurez le descripteur de
déploiement webservices.xml pour des classes de gestionnaire.
La présente rubrique explique comment configurer le descripteur de déploiement webservices.xml pour des classes de gestionnaire fournies par l'utilisateur.
- Sauvegardez vos modifications et exportez les fichiers EAR.
- Désinstallez l'application WebServicesSamples.ear de votre serveur si elle est déjà installée.
- Installez la nouvelle application WebServicesSamples.ear.
- Démarrez le serveur.
- Exécutez le client :
launchClient ApplicationClients.ear -CCjar=AddressBookClient.jar
Lorsque le client s'exécute, la sortie de la console est similaire à ce qui est illustré dans l'exemple suivant. Les messages provenant des gestionnaires sont affichés en gras.
IBM WebSphere Application Server J2EE Application Client Tool Copyright IBM Corp., 1997-2003 WSCL0012I: Processing command line arguments. WSCL0013I: Initializing the J2EE Application Client Environment. WSCL0035I: Initialization of the J2EE Application Client Environment has completed. WSCL0014I: Invoking the Application Client class com.ibm.websphere.samples.webservices.addr.AddressBookClient >> Querying address for 'Purdue Boilermaker' using port AddressBookW2JE ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 1 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookJ2WE ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 2 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookJ2WB ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 3 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookW2JB ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 4 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900
Pour le client, la classe de gestionnaire est configurée pour chaque référence de service, et non pour chaque port. L'exemple AddressBook comporte quatre ports mais une seule référence de service, c'est pourquoi l'élément ClientHandler gère les demandes et les réponses sur tous les ports.
Lorsque le fichier journal du serveur est examiné, il contient les données suivantes :
[9/24/03 16:39:22:661 CDT] 4deec1c6 WebGroup I SRVE0180I:
[HTTP router for AddressBookW2JE.jar] [/AddressBookW2JE] [Servlet.LOG]:
AddressBook: init
[9/24/03 16:39:23:161 CDT] 4deec1c6 SystemOut O ServerHandler: In handleRequest
[9/24/03 16:39:23:211 CDT] 4deec1c6 SystemOut O ServerHandler: In handleResponse
Résultats
Les descripteurs de déploiement des classes de gestionnaire sont configurés. Les descripteurs du déploiement sont obligatoires pour que WebSphere Application Server puisse traiter les demandes de services web entrantes.
Que faire ensuite ?
Déployez le fichier EAR qui a été configuré et activé pour les services Web. Vous pouvez ensuite tester l'application pour vérifier qu'elle fonctionne dans l'environnement WebSphere Application Server.