La différence entre cet exemple et l'article de référence est :
1) déployer.wsdd est défini plus en détail (l'interface est définie côté serveur : ICalculate) :
Copiez le code comme suit :
<déploiement xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Calculate" supplier="java:RPC" style="rpc" use="literal">
<parameter name="wsdlTargetNamespace" value="http://web.webservice.CalculateService.org" />
<parameter name="wsdlServiceElement" value="Calculer" />
<parameter name="wsdlServicePort" value="CalculateService" />
<parameter name="wsdlPortType" value="ICalculate" />
<parameter name="className" value="org.calculateservice.service.CalculateImp" />
<parameter name="typeMappingVersion" value="1.2" />
<parameter name="allowedMethods" value="add sub" />
<parameter name="scope" value="Request" />
<nom de l'opération="ajouter" qname="operNS:ajouter"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="addReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
savonAction="">
<paramètre qname="x" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<paramètre qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</opération>
<nom de l'opération="sub" qname="operNS:sub"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="subReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
savonAction="">
<paramètre qname="x" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<paramètre qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</opération>
</service>
</déploiement>
2) AxisServlet personnalisé : org.calculateservice.core.AxisServlet (compatible avec .NET et supprimant la vérification SOAPACTION) ;
Le code détaillé n'est pas publié ici. Si vous êtes intéressé, vous pouvez télécharger vous-même l'exemple de code complet ;
3) La méthode d'appel consiste à utiliser une classe locale pour appeler (il semble y avoir trois façons d'appeler WS en Java. Personnellement, je pense que l'utilisation d'une classe proxy locale pour appeler est la plus raisonnable et la plus lisible) :
Copiez le code comme suit :
public static void main(String[] args) lance ServiceException, RemoteException {
Calculer calculer = new CalculateLocator();
int result = calculate.getCalculateService().add(1, 2);
System.out.println("[%1 + 2 = " + résultat + "%]");
}
Principales étapes pour publier/appeler WS : 1) Copiez le répertoire axis dans la webapp dans le package d'installation axis1.4 dans la ressource téléchargée dans le répertoire webapp dans Tomcat ;
2) Écrire le code d'implémentation du serveur WS ;
3) Écrivez le fichier de déploiement déployer.wsdd dans le répertoire WEB-INF ;
4) Écrivez : le script generate-server-config.bat, puis générez : server-config.wsdd, puis publiez le service Web ;
5) Écrivez : script wsdl2java.bat pour générer le code client appelant local ;
6) Écrivez le code de test pour appeler WS ;
Diagramme de structure du code :
client : utilisez WSDL2Java pour générer du code client local basé sur wsdl ;
noyau : Custom AxisServlet, compatible avec .NET et supprime la vérification SOAPACTION ;
service : code d'implémentation du serveur WS (un simple calcul d'addition et de soustraction est utilisé comme exemple ici) ;
test : Appelez le serveur en fonction de la classe client générée (l'adresse du serveur du code généré est localhost. Si vous devez changer cette adresse en configuration, modifiez simplement l'affectation de la variable CalculateService_address dans la classe CalculateLocator) ;
Cliquez pour télécharger l'exemple complet
La ressource contient un exemple de code complet et des fichiers d'installation axis1.4