Perbedaan antara contoh ini dan artikel referensi adalah:
1) deploy.wsdd didefinisikan secara lebih rinci (antarmuka didefinisikan untuk sisi server: ICalculate):
Copy kode kodenya sebagai berikut:
<penerapan xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<nama layanan="Hitung" penyedia="java:RPC" style="rpc" use="literal">
<parameter name="wsdlTargetNamespace" value="http://web.webservice.CalculateService.org" />
<parameter name="wsdlServiceElement" value="Hitung" />
<parameter nama="wsdlServicePort" value="CalculateService" />
<nama parameter="wsdlPortType" value="ICalculate" />
<parameter name="className" value="org.calculateservice.service.CalculateImp" />
<nama parameter="typeMappingVersion" value="1.2" />
<nama parameter="allowedMethods" value="tambahkan sub" />
<parameter nama="lingkup" nilai="Permintaan" />
<nama operasi="tambahkan" qname="operNS:tambahkan"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="addReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
sabunAksi="">
<parameter qname="x" tipe="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<parameter qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</operasi>
<nama operasi="sub" qname="operNS:sub"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName="subReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
sabunAksi="">
<parameter qname="x" tipe="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<parameter qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</operasi>
</layanan>
</penerapan>
2) AxisServlet yang Disesuaikan: org.calculateservice.core.AxisServlet (kompatibel dengan .NET dan menghapus centang SOAPACTION);
Kode detailnya tidak diposting di sini. Jika Anda tertarik, Anda dapat mendownload sendiri contoh kode lengkapnya;
3) Metode pemanggilannya adalah dengan menggunakan kelas lokal untuk menelepon (sepertinya ada tiga cara untuk memanggil WS di Java. Secara pribadi, saya merasa menggunakan kelas proxy lokal untuk menelepon adalah yang paling masuk akal dan mudah dibaca):
Copy kode kodenya sebagai berikut:
public static void main(String[] args) melempar ServiceException, RemoteException {
Hitung hitung = new HitungLocator();
int hasil = hitung.getCalculateService().add(1, 2);
System.out.println("[%1 + 2 = " + hasil + "%]");
}
Langkah-langkah utama untuk mempublikasikan/memanggil WS: 1) Salin direktori axis di webapp dalam paket instalasi axis1.4 di sumber daya yang diunduh ke direktori webapp di Tomcat;
2) Tulis kode implementasi server WS;
3) Tulis file penerapan deploy.wsdd di direktori WEB-INF;
4) Tulis: skrip generate-server-config.bat, lalu generate: server-config.wsdd, lalu publikasikan layanan web;
5) Tulis: skrip wsdl2java.bat untuk menghasilkan kode klien panggilan lokal;
6) Tulis kode pengujian untuk memanggil WS;
Diagram struktur kode:
klien: Gunakan WSDL2Java untuk menghasilkan kode klien lokal berdasarkan wsdl;
inti: AxisServlet Khusus, kompatibel dengan .NET dan menghapus centang SOAPACTION;
layanan: kode implementasi server WS (perhitungan penambahan dan pengurangan sederhana digunakan sebagai contoh di sini);
tes: Panggil server berdasarkan kelas klien yang dihasilkan (alamat server dari kode yang dihasilkan adalah localhost. Jika Anda perlu mengubah alamat ini ke konfigurasi, cukup ubah penugasan variabel CalculService_address di kelas HitungLocator);
Klik untuk mengunduh contoh lengkapnya
Sumber daya berisi contoh kode lengkap dan file instalasi axis1.4