Der Unterschied zwischen diesem Beispiel und dem Referenzartikel ist:
1) Deploy.wsdd wird detaillierter definiert (die Schnittstelle ist für die Serverseite definiert: ICalculate):
Kopieren Sie den Codecode wie folgt:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Calculate"provider="java:RPC" style="rpc" use="literal">
<parameter name="wsdlTargetNamespace" value="http://web.webservice.CalculateService.org" />
<parameter name="wsdlServiceElement" value="Calculate" />
<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="sub hinzufügen" />
<parameter name="scope" value="Request" />
<operation name="add" qname="operNS:add"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="addReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
SoapAction="">
<parameter qname="x" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<parameter qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</operation>
<operation name="sub" qname="operNS:sub"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="subReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
SoapAction="">
<parameter qname="x" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<parameter qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</operation>
</service>
</deployment>
2) Angepasstes AxisServlet: org.calculateservice.core.AxisServlet (kompatibel mit .NET und Entfernen der SOAPACTION-Prüfung);
Der detaillierte Code wird hier nicht veröffentlicht. Wenn Sie interessiert sind, können Sie den vollständigen Beispielcode selbst herunterladen.
3) Die aufrufende Methode besteht darin, eine lokale Klasse zum Aufrufen zu verwenden (es scheint drei Möglichkeiten zu geben, WS in Java aufzurufen. Ich persönlich bin der Meinung, dass die Verwendung einer lokalen Proxy-Klasse zum Aufrufen am sinnvollsten und lesbarsten ist):
Kopieren Sie den Codecode wie folgt:
public static void main(String[] args) löst ServiceException, RemoteException {
Berechnen berechnen = new CalculateLocator();
int result = berechne.getCalculateService().add(1, 2);
System.out.println("[%1 + 2 = " + result + "%]");
}
Hauptschritte zum Veröffentlichen/Aufrufen von WS: 1) Kopieren Sie das Achsenverzeichnis in der Webapp im Installationspaket axis1.4 in der heruntergeladenen Ressource in das Webapp-Verzeichnis in Tomcat.
2) Schreiben Sie den Implementierungscode für den WS-Server.
3) Schreiben Sie die Bereitstellungsdatei „deploy.wsdd“ in das WEB-INF-Verzeichnis.
4) Schreiben Sie das Skript „generate-server-config.bat“, generieren Sie dann „server-config.wsdd“ und veröffentlichen Sie dann den Webservice.
5) Schreiben Sie: wsdl2java.bat-Skript, um lokalen Aufruf-Client-Code zu generieren;
6) Testcode schreiben, um WS aufzurufen;
Codestrukturdiagramm:
Client: Verwenden Sie WSDL2Java, um lokalen Clientcode basierend auf WSDL zu generieren.
Kern: Benutzerdefiniertes AxisServlet, kompatibel mit .NET und entfernt die SOAPACTION-Prüfung;
Dienst: WS-Server-Implementierungscode (hier wird eine einfache Additions- und Subtraktionsrechnung als Beispiel verwendet);
Test: Rufen Sie den Server basierend auf der generierten Client-Klasse auf (die Serveradresse des generierten Codes lautet localhost. Wenn Sie diese Adresse in die Konfiguration ändern müssen, ändern Sie einfach die Zuweisung der Variablen CalculateService_address in der CalculateLocator-Klasse).
Klicken Sie hier, um das vollständige Beispiel herunterzuladen
Die Ressource enthält vollständigen Beispielcode und axis1.4-Installationsdateien