Java Web Services
แบบฝึกหัดในบทนี้เป็นการพัฒนาโปรแกรม Web Services สำหรับ Java EE โดยใช้ชุดคำสั่ง JAX-WS ซึ่งจะเป็นการพัฒนาบน Server ที่รันบน Java EE โดยชุดคำสั่ง JAX-WS จะช่วยทำให้การสร้างและเรียกใช้ Web Services ด้วยภาษา Java เป็นไปได้ง่ายขึ้น
การพัฒนา Web Services จะแบ่งเป็นสองส่วนคือ Web Service Provider (Server) และ Web Service Requester (Client) แบบฝึกหัดนี้จะเริ่มจากการพัฒนา Web Service ซึ่งสามารถทำได้ 2 วิธีคือ
Web Services ที่รันบน Web Server โดยใช้ Java Servlet
Web Services ที่รันบน Application Server โดยใช้ Session Bean
แบบฝึกหัดนี้จะแสดงขั้นตอนการใช้ NetBeans สร้าง Web Service ที่ชื่อ calculateTax โดยใช้ Servlet ซึ่งจะรันอยู่บน GlassFish V2 Server เพื่อแสดง Web Services การส่ง SOAP message และ WSDL ของ Services
การพัฒนา calculateTax Web Service
แบบฝึกหัดนี้จะสร้าง Web Application Project ขึ้นใหม่ เพื่อใช้ในการเก็บ Web Service โดยมีขั้นตอนการพัฒนาดังนี้
เลือกเมนู File > New Project
ในไดอะล็อก New Project ให้เลือก Categories เป็น Web และ Web Application แล้วกด Next
กำหนด Project Name เป็น TaxWSDemo แล้วเลือก Project Location เป็น folder ที่เราต้องการจะเก็บไฟล์ไว้ จากนั้นเลือก Server เป็น GlassFish V2 กำหนด Jave EE Version: เป็น Java EE 5 แล้วกด Finish
คลิ๊กขวาที่โหนด TaxWSDemo จากนั้นเลือกคำสั่ง New > Other ให้เลือก Categories เป็น Web Services และ Web Service แล้วกด Next
ในไดอะล็อก New Web Service กำหนด Web Service Name: เป็น TaxServices และ Package: เป็น ws ดังรูป แล้วกด Finish

หน้าต่าง Editor จะแสดงไฟล์ที่ชื่อ TaxServices.java ดังรูป ให้คลิ๊กที่ปุ่ม Add Operation

ในไดอะล็อก Add Operation กำหนด Method เป็น calculateTax ชนิดของ Return Type เป็น double และ เพิ่ม Input parameter หนึ่งตัวคือ income ชนิด double ดังรูป แล้วกด OK

โหมด Design ของไฟล์ Taxservices.java จะแสดงดังรูป

คลิ๊กที่แทป Source ของ TaxServices.java และปรับปรุงเมธอด calculateTax ดังนี้
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService()
public class TaxServices {
@WebMethod
public double calculateTax(@WebParam(name = "income") double income) {
if (income < 70000) {
return 0;
} else if (income < 100000) {
return (income - 70000) * 0.05;
} else if (income < 500000) {
return (income - 100000) * 0.1 + 3500;
} else {
return (income - 500000) * 0.2 + 43500;
}
}
}
คลิ๊กขวาที่โหนด TaxWSDemo จากนั้นเลือกคำสั่ง Clean and Build จากนั้นคลิ๊กขวาที่โหนด TaxWSDemo อีกครั้ง แล้วเลือก Undeploy and Deploy
การทดสอบ Web Service
โปรแกรม Web Service จะถูกติดตั้งบน GlassFish V2 และสามารถเรียกดูได้การใช้ System Admin Console โดยการเปิด Web Browser และเรียก url ที่ http://localhost:4848 โดยกำหนด user เป็น admin และ password เป็น adminadmin
โปรแกรมจะแสดง Applications และ Web Services ดังแสดงในรูปที่ 1

รูปที่ 1 แสดงรายละเอียดใน GlassFish V2 (Sun Java Application Server)
เราสามารถที่จะทดสอบ Web Service นี้ผ่านทาง Admin Console ได้โดยกดปุ่ม Test หรือทดสอบจาก Netbeans โดยคลิ๊กขวาที่ TaxServices ใน Web Services ดังแสดงในรูปที่ 2

รูปที่ 2 แสดงวิธีการทดสอบ Web Service ใน Netbeans
โ
ปรแกรมจะแสดงหน้าจอเพื่อให้เราป้อนข้อมูลอินพุต
ซึ่งคือจำนวนเงินที่ต้องการคำนวณภาษี ในที่นี้จะใส่ตัวเลขเป็น 730000
ดังแสดงในรูปที่
3
รูปที่ 3 แสดงหน้าต่างสำหรับให้ทดสอบเรียก Web Service
แล้วกดปุ่ม calculateTax โปรแกรมจะเรียกใช้ Web Services และจะแสดงผลลัพธ์ที่ได้ พร้อมทั้งแสดงค่า SOAP Request ดังแสดงในรูปที่ 4
ร
ูปที่
4
แสดงผลลัพธ์ที่ได้จากการเรียกใช้
Web
Service และแสดง
SOAP
Request
เราสามารถที่จะแสดงคำสั่ง WSDL ของ Web Service นี้โดยการเลือก WSDL File โปรแกรมจะทำการเรียก url ชื่อ http://localhost:8080/TaxWSDemo/TaxServicesService?WSDL และจะได้ผลลัพธ์ดังแสดงในรูปที่ 5

รูปที่ 5 แสดงรายละเอียดของ WSDL
การพัฒนา Desktop Web Service Client
เราจะสร้าง Java Desktop Application เพื่อที่จะเรียกใช้ Web Service ที่ชื่อ calculateTax โดยจะมีขั้นตอนการพัฒนาดังนี้
เลือกเมนู File => New Project..
ในไดอะล็อก New Project ให้เลือก Categories เป็น General และ Projects เป็น Java Application แล้วกด Next
กำหนด Project Name เป็น WSDesktopClient แล้วกด Finish
เลือกหน้าต่าง Projects แล้วคลิ๊กขวาที่โหนด WSDesktopClientจากนั้นเลือกคำสั่ง New => Web Service Clientแล้วกด Next
ในไดอะล็อก New Web Service Clientเลือก WSDL URL: โดยกำหนดเป็นhttp://localhost:8180/WSDemo/TaxServicesService?WSDLและ Package เป็น ws กด Finish
โปรแกรมจะแสดง Web Service Reference โดยมี Service ชื่อ calculateTax ดังรูป

ในหน้าต่าง Projectsลากโหนด calculateTax ลงในไฟล์ Main.java ของหน้าต่าง Editor โปรแกรมจะเพิ่ม source code ให้อัตโนมัติ ให้แก้ไขค่า double1 เป็น730000 และจะได้ source code ดังนี้
public static void main(String[] args) {
try { // Call Web Service Operation
ws.TaxServicesService service = new ws.TaxServicesService();
ws.TaxServices port = service.getTaxServicesPort();
// TODO initialize WS operation arguments here
double income = 730000.0;
// TODO process result here
double result = port.calculateTax(income);
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
} // TODO code application logic here
}
ทดลองรันโปรแกรมจะเห็นค่าผลลัพธ์เป็น Result = 89500.0
Java Web Services Thanachart Numnonda and Thanisa Kruawaisayawan