ความแตกต่างระหว่างตัวอย่างนี้กับบทความอ้างอิงคือ:
1) ปรับใช้.wsdd ถูกกำหนดไว้ในรายละเอียดเพิ่มเติม (อินเทอร์เฟซถูกกำหนดไว้สำหรับฝั่งเซิร์ฟเวอร์: ICalculate):
คัดลอกรหัสรหัส ดังต่อไปนี้:
<ปรับใช้ xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<ชื่อบริการ = "คำนวณ" ผู้ให้บริการ = "java:RPC" style = "rpc" use = "ตัวอักษร">
<ชื่อพารามิเตอร์ =ค่า "wsdlTargetNamespace" = "http://web.webservice.CalculateService.org" />
<parameter name="wsdlServiceElement" value="คำนวณ" />
<parameter name="wsdlServicePort" value="CalculateService" />
<ชื่อพารามิเตอร์ =ค่า wsdlPortType = "ICalculate" />
<parameter name="className" value="org.calculateservice.service.CalculateImp" />
<ชื่อพารามิเตอร์ =ค่า "typeMappingVersion" = "1.2" />
<ชื่อพารามิเตอร์ =ค่า "allowedMethods" = "เพิ่มย่อย" />
<ชื่อพารามิเตอร์ = "ขอบเขต" ค่า = "คำขอ" />
<ชื่อการดำเนินงาน = "เพิ่ม" qname = "operNS: เพิ่ม"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName = "addReturn" returnType = "rtns:int" xmlns:rtns = "http://www.w3.org/2001/XMLSchema"
สบู่แอคชั่น="">
<พารามิเตอร์ qname="x" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<พารามิเตอร์ qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</การดำเนินงาน>
< ชื่อการดำเนินงาน = "ย่อย" qname = "operNS: sub"
xmlns:operNS="http://web.webservice.CalculateService.org"
returnQName = "subReturn" returnType = "rtns:int" xmlns:rtns = "http://www.w3.org/2001/XMLSchema"
สบู่แอคชั่น="">
<พารามิเตอร์ qname="x" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
<พารามิเตอร์ qname="y" type="tns:int"
xmlns:tns="http://www.w3.org/2001/XMLSchema" />
</การดำเนินงาน>
</บริการ>
</ปรับใช้>
2) AxisServlet ที่กำหนดเอง: org.calculateservice.core.AxisServlet (เข้ากันได้กับ .NET และลบการตรวจสอบ SOAPACTION)
โค้ดโดยละเอียดไม่ได้โพสต์ไว้ที่นี่ หากคุณสนใจ คุณสามารถดาวน์โหลดโค้ดตัวอย่างแบบเต็มได้ด้วยตัวเอง
3) วิธีการเรียกคือการใช้คลาสท้องถิ่นในการโทร (ดูเหมือนว่าจะมีสามวิธีในการเรียก WS ใน Java โดยส่วนตัวแล้วฉันรู้สึกว่าการใช้คลาสพร็อกซีในเครื่องเพื่อโทรนั้นสมเหตุสมผลและอ่านง่ายที่สุด):
คัดลอกรหัสรหัส ดังต่อไปนี้:
โมฆะคงที่สาธารณะ main (String [] args) พ่น ServiceException, RemoteException {
คำนวณคำนวณ = ใหม่ CalculateLocator();
ผลลัพธ์ int = คำนวณ.getCalculateService().เพิ่ม(1, 2);
System.out.println("[%1 + 2 = " + ผลลัพธ์ + "%]");
-
ขั้นตอนหลักในการเผยแพร่/โทร WS: 1) คัดลอกไดเร็กทอรีแกนใน webapp ในแพ็คเกจการติดตั้ง axis1.4 ในทรัพยากรที่ดาวน์โหลดไปยังไดเร็กทอรี webapp ใน Tomcat
2) เขียนโค้ดการใช้งานเซิร์ฟเวอร์ WS;
3) เขียนไฟล์การปรับใช้ Deploy.wsdd ในไดเร็กทอรี WEB-INF
4) เขียน: สคริปต์ create-server-config.bat จากนั้นสร้าง: server-config.wsdd จากนั้นเผยแพร่บริการเว็บ
5) เขียน: สคริปต์ wsdl2java.bat เพื่อสร้างรหัสไคลเอ็นต์การโทรในเครื่อง
6) เขียนรหัสทดสอบเพื่อเรียก WS;
แผนภาพโครงสร้างรหัส:
ลูกค้า: ใช้ WSDL2Java เพื่อสร้างรหัสลูกค้าท้องถิ่นตาม wsdl;
แกนหลัก: AxisServlet แบบกำหนดเอง เข้ากันได้กับ .NET และลบการตรวจสอบ SOAPACTION
บริการ: รหัสการใช้งานเซิร์ฟเวอร์ WS (ใช้การคำนวณการบวกและการลบอย่างง่ายเป็นตัวอย่างที่นี่)
ทดสอบ: เรียกเซิร์ฟเวอร์ตามคลาสไคลเอนต์ที่สร้างขึ้น (ที่อยู่เซิร์ฟเวอร์ของรหัสที่สร้างขึ้นคือ localhost หากคุณต้องการเปลี่ยนที่อยู่นี้เป็นการกำหนดค่า เพียงแก้ไขการกำหนดตัวแปร CalculateService_address ในคลาส CalculateLocator)
คลิกเพื่อดาวน์โหลดตัวอย่างที่สมบูรณ์
ทรัพยากรประกอบด้วยโค้ดตัวอย่างที่สมบูรณ์และไฟล์การติดตั้ง axis1.4