1. Exemple 1 (Voir principalement [2])
1.1. Fonctions du système:
Développer un service de calculatrice Calcule CalculeService, qui comprend des opérations telles que plus, la soustraction, la multiplication et la division.
1.2. Préparation avant le développement:
Installer Eclipse-Jee;
Téléchargez la dernière version de Axis2, l'URL est http://axis.apache.org/axis2/java/core/download.cgi, sélectionnez le package zip de distribution binaire standard et dézip le nom du répertoire AXIS2-1.4.1. La structure de fichiers dans le répertoire est la suivante:
1.3. Configuration de pré-développement:
Dans la barre de menu d'Eclipse, Window -> Préférences -> Service Web -> Perférences AXIS2, sélectionnez l'emplacement du package de décompression AXIS2 dans l'emplacement d'exécution AXIS2. Après le définir, cliquez sur "OK". (Comme indiqué sur l'image)
1.4. Développer le service Web:
(1) Créez un nouveau projet Java et nommez-le "WebServiceTest1"
(2) Créez une nouvelle classe et nommez-le "calculaService". Le code complet est le suivant:
package edu.sjtu.webservice; / ** * Fonctionnement de la calculatrice * @Author Rongxinhua * / classe publique CalculaService {// Addition publique float plus (float x, float y) {return x + y; } // substraction public float moins (float x, float y) {return x - y; } // multiple float public multiply (float x, float y) {return x * y; } // Dividation public float divide (float x, float y) {if (y! = 0) {return x / y; } else return -1; }}(3) sur le projet "WebServiceTest1" nouveau -> Autre, recherchez le "Service Web" sous "Services Web";
(4) Étape suivante (Suivant), dans la zone d'objet des services Web qui apparaît, cliquez sur "Parcourir" dans l'implémentation du service, entrez la boîte d'objet Browse Classes et trouvez la classe CalculateService que nous venons d'écrire. (Figure ci-dessous). Cliquez sur "OK" et vous reviendrez dans la boîte de dialogue du service Web.
(5) Dans la boîte de dialogue du service Web, ajustez le curseur dans le type de service Web à la position de "Démarrage du service" et ajustez le curseur dans le type de client à la position de "Test Client".
(6) Il y a une "configuration" sur le côté droit du diagramme de curseur de type de service Web. Cliquez sur l'option ci-dessous pour saisir la zone d'objet de configuration de déploiement de service et sélectionnez le serveur correspondant (j'utilise Tomcat6.0 ici) et l'exécution du service Web (sélectionnez Apache Axis2), comme indiqué dans la figure ci-dessous:
(7) Après avoir cliqué sur OK, il reviendra dans la boîte de dialogue du service Web. De même, il existe également une "configuration" sur le côté droit du curseur dans le type de client, et le paramètre correspondant doit être effectué. Les étapes sont les mêmes que ci-dessus. Après l'achèvement, Suivant -> Suivant est prêt. En entrant la configuration de Java Bean de service Web AXIS2, nous sélectionnons générer un service par défaut.xml, comme indiqué dans la figure ci-dessous:
(8) Lorsque vous arrivez à la boîte de dialogue de démarrage du serveur, il y a un bouton "Démarrer le serveur" (comme illustré ci-dessous). Cliquez dessus pour démarrer le serveur Tomcat.
(9) Après avoir attendu le démarrage, cliquez sur "Suivant -> Suivant", tout sera fait par défaut, et enfin, cliquez sur Terminer. Enfin, l'interface suivante apparaît: (Web Service Explorer), où nous pouvons tester nos services Web. (Si vous l'ouvrez avec un navigateur, utilisez l'adresse suivante: http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp?org.eclipse.wst.ws.explorer=3). Comme indiqué dans la figure ci-dessous:
Remarque: Ouvrez l'explorateur de services Web dans le navigateur (parfois l'Explorateur WebService est fermé dans Eclipse, qui peut être ouvert de cette manière)
Première adresse de connexion: http://127.0.0.1:19189/wse/wsexplorer/wsexplorer.jsp. Sélectionnez ensuite l'onglet Explorateur du service Web dans le coin supérieur droit de la page Web. Entrez ensuite l'adresse WSDL: http: // localhost: 8080 / webServiceTest1 / Services / CalculaService? WSDL. Cette adresse WSDL est la WSDL que nous venons de publier le service. Cliquez sur aller, comme indiqué dans la figure suivante:
Ensuite, vous pouvez voir l'interface suivante:
(10) Le test est relativement simple. Par exemple, nous sélectionnons une opération "Plus" (doit être calculateservicesoap11binding). La figure suivante apparaît. Entrez 1 dans la zone d'entrée de x, entrez 2 dans la zone d'entrée de Y, et cliquez sur "Go", et le résultat 3.0 sera affiché dans la barre d'état. Les tests d'autres méthodes sont similaires. Les résultats sont présentés dans la figure ci-dessus.
1.5. CalculateService Le client appelle le programme
Nous avons défini les méthodes d'addition, de soustraction, de multiplication et de division et publié ces méthodes comme services. Maintenant, tout ce que nous devons faire est d'appeler ces services. Le programme d'appel client comme indiqué dans le code suivant: CalculeServiceTest.java
package edu.sjtu.webservice.test; Importer javax.xml.namespace.qname; import org.apache.axis2.axisfault; import org.apache.axis2.addressing.endpointreference; import org.apache.axis2.client.options; import org.apache.axis2.rpc.client.rpcServiceClient; classe publique CalculeServiceTest {/ ** * @param args * @throws Axisfault * / public static void main (String [] args) lève Axisfault {// TODO Méthode générée automatiquement Stub // appelle le service Web en utilisant RPC Méthode RPCServiceClient ServiceClient = new RPCServiceClient (); Options Options = ServiceClient.GetOptions (); // Spécifiez l'URL pour appeler WebService EndPoinTreference ciblePR = new EndPoinTreference ("http: // localhost: 8080 / webServiceTest1 / Services / CalculaService"); options.setTo (ciblePR); // Spécifiez la méthode et l'espace de noms du fichier wsdl dans l'ordinateur à appeler: edu.sjtu.webservice. QNAME OPADDENTRY = NOUVEAU QNAME ("http://webservice.sjtu.edu", "plus"); // addqname opaddentryminus = new Qname ("http://webservice.sjtu.edu", "MINUS"); // sous-tractionqname opadventMultiply = New QName ("http://webservice.sjtu.edu", "multiplier"); // multiplier QName opaddentryDivide = new Qname ("http://webservice.sjtu.edu", "divide"); // divide // spécifier les valeurs de paramètre de la méthode plus sont deux, namely l'administrateur et le nombre d'objets ajout opadDentryargs = nouvel objet [] {1,2}; // Spécifiez le type de données de la valeur de retour de la méthode plus classe [] classes = new class [] {float.class}; // Appelez la méthode plus et sortie la valeur de retour de la méthode System.out.println (ServiceClient.InvokeBlocking (opaddentry, opaddentryargs, classes) [0]); System.out.println (ServiceClient.InvokeBlocking (Opaddentryminus, opaddentryargs, classes) [0]); System.out.println (ServiceClient.InvokeBlocking (opaddentryMultiply, opaddentryargs, classes) [0]); System.out.println (ServiceClient.InvokeBlocking (opaddentryDivide, opaddentryargs, classes) [0]); }}Résultats en cours:
3.0
-1.0
2.0
0,5
2. Exemple
2.Helloservice
(1) Définissez d'abord la méthode de service, le code est le suivant:
package edu.sjtu.webservice; classe publique HellOservice {public String SayshellOnew () {return "Hello"; } public String SayShellotOpersonW (String name) {if (name == null) {name = "Nobody"; } return "Hello," + name; } public void updatedata (String data) {System.out.println (données + "Mise à jour."); }} (2) Reportez-vous à l'exemple 1 pour publier cette méthode en tant que service.
(3) Écrivez du code client pour appeler WebService (référence principale [5])
La plus grande différence entre cet exemple et d'autres exemples est ici. D'autres exemples doivent généralement générer un talon client en fonction du service WSDL tout à l'heure, puis appelez le service via le talon. Cette méthode semble relativement simple. Le client doit avoir besoin d'un talon pour accéder au service, ce qui est très injuste. Le client de cet exemple n'utilise pas la méthode Stub, mais implémente une méthode d'appel générale et ne nécessite aucun talon client pour accéder au service. Il vous suffit de spécifier l'adresse de servce Web, le nom de l'opération, le paramètre et le type de retour de fonction. Le code ressemble à ceci:
HelloserviceTest2.Javapackage edu.sjtu.webservice.test; Importer javax.xml.namespace.qname; import org.apache.axis2.axisfault; import org.apache.axis2.addressing.endpointreference; import org.apache.axis2.client.options; import org.apache.axis2.rpc.client.rpcServiceClient; classe publique HelloserviceTest2 {RPCServiceClient ServiceClient; Options privées. Private EndPoinTreference ciblePR; public HelloServiceTest2 (String Endpoint) lève Axisfault {ServiceClient = new RPCServiceClient (); Options = ServiceClient.getOptions (); TargetEPR = new EndPointreference (point de terminaison); options.setTo (ciblePR); } public Object [] invokeop (String TargetNamespace, String Opname, Object [] OPARGS, class <?> [] opreturnType) lance Axisfault, classNotFoundException {// se définit le nom de l'opération QName opqName = new QNAME (TargetNamespace, OpName); // Définissez la valeur de retour // class <?> [] Opreturn = new class [] {opreturnType}; // Les paramètres dans lesquels l'opération doivent être transmis sont déjà donnés dans les paramètres. Ici, nous appelons directement Retour ServiceClient.InvokeBlocking (OpqName, Opargs, OpreturnType); } / ** * @param args * @throws axisfault * @throws classNotFoundException * / public static void main (String [] args) lance Axisfault, classnotfoundException {// todo généré par la méthode générée par le talon final. chaîne finale cibleNamespace = "http://webservice.sjtu.edu"; HellOserviceTest2 Client = new HellOServiceTest2 (endPointreference); String opname = "SayhellotOpersonWew"; Objet [] opargs = nouvel objet [] {"Mes amis"}; Classe <?> [] OpreturnType = new class [] {String []. Class}; Object [] Response = Client.InvokeOP (TargetNamespace, Opname, Opargs, OpreTurnType); System.out.println (((String []) Response [0]) [0]); }}Exécutez le programme et cliquez sur Exécuter l'application Java. Vous pouvez voir que la sortie du port de console est: Bonjour, mes amis, indiquant que l'appel client réussit. La plus grande différence et avantage de cet exemple se reflète dans la méthode d'appel du client, ou en d'autres termes, la façon d'initier des appels de service. Bien qu'il y ait un peu plus de code que le talon de stub du client, cette méthode est unifiée et ne nécessite pas de production de code de stub, qui résout le problème que le client a de nombreuses classes. Si le lecteur résume ces codes, je pense que la méthode d'appel est simple, il suffit de passer des paramètres pertinents, ce qui illustre mieux les avantages des appels de service. De plus, cette méthode est plus simple et plus claire, et vous pouvez dire le sens spécifique en un coup d'œil. Il n'est pas nécessaire de faire des mécanismes de classe Stub.
(4) Réécrire le code du service d'appel client
(3) Le code d'application client mentionné dans ce qui suit est un peu compliqué à écrire. Le client ci-dessus appelant le programme de service est réécrit, ce qui est beaucoup plus simple. Le code est le suivant:
HelloserviceTest.javaimport javax.xml.namespace.qname; import org.apache.axis2.axisfault; import org.apache.axis2.addressing.endpointreference; import org.apache.axis2.client.options; import org.apache.axis2.rpc.client.rpcServiceClient; classe publique HelloserviceTest {public static void main (String args []) lève Axisfault {// Appeler WebService rpcServiceClient en utilisant RPC ServiceClient = new rpcServiceClient (); Options Options = ServiceClient.GetOptions (); // Spécifiez l'URL pour appeler WebService EndPoinTreference ciblePR = new EndPoinTreference ("http: // localhost: 8080 / webServiceTest1 / Services / HellOservice"); options.setTo (ciblePR); // Spécifiez la méthode Sayhellotoperson à appeler et l'espace de noms du fichier wsdl QNAME OPADDENTRY = new QNAME ("http://webservice.sjtu.edu", "SayhellotOpersonW"); // Spécifiez la valeur du paramètre de l'objet de méthode sayhellotoperson [] opaddentryargs = nouvel objet [] {"xuwei"}; // Spécifiez l'objet de classe du type de données selon lequel la méthode SayHellotoperson renvoie la valeur class [] classes = new class [] {string.class}; // Appelez la méthode Sayhellotoperson et sortit la valeur de retour de la méthode System.out.println (ServiceClient.InvokeBlocking (OpadDentry, OpadDentryargs, Classes) [0]); }}Grâce au contenu ci-dessus, je présenterai un exemple de développement simple d'Eclipse + WebService, et j'espère que cela sera utile à tout le monde!