การสร้างเว็บเซอร์วิส
ตอนที่ 1 สร้าง Web Services ด้วยภาษา Java
การสร้าง Web Services
เนื่องจาก Web Services ได้รับการสนับสนุนจากค่ายผู้พัฒนาภาษาโปรแกรมยอดนิยมทั้ง
3 ค่ายใหญ่คือ Sun Java, Microsoft .NET และ PHP ดังนั้น
จึงมีเครื่องมือและไลบรารีช่วยเหลือที่สนับสนุนให้นักพัฒนาโปรแกรมสามารถสร้าง Web
Services ขึ้นเพื่อใช้งานกับแพลตฟอร์มของตนเองได้ทันที
อย่างไรก็ตามพบว่าในบางแพลตฟอร์มเช่น Java
ยังคงมีนักพัฒนาโปรแกรมที่นิยมใช้เครื่องมืออื่นในการสร้าง Web
Services ด้วย เช่น Axis, Apache SOAP, XFire หรือ
CXF เป็นต้น ซึ่งในเอกสารฉบับนี้จะขออ้างอิงวิธีการสร้าง Web
Services ที่เป็นแบบมาตรฐานกลางของแต่ละภาษา
โดยไม่จำเพาะเจาะจงลงไปที่ไลบรารีตัวใดตัวหนึ่ง
เพื่อให้นักพัฒนาโปรแกรมสามารถใช้เครื่องมือพื้นฐานที่มีมาให้กับภาษาโปรแกรมนั้นสร้าง
Web Services ขึ้นใช้งานได้
โดยไม่ต้องยุ่งยากกับการติดตั้งไลบรารีเสริม
1. การสร้าง Web Services ด้วยแพลตฟอร์ม Java
1.1 การสร้าง Workspace และ Project
สตาทร์โปรแกรม Eclipse เมื่อปรากฏหน้าต่างสอบถามตำแหน่งที่วาง
workspace ให้ใส่ตำแหน่ง workspace เป็น
c:\webservice\java\workspace ดังนี้
จะปรากฏ workspace เปล่าที่ยังไม่มี
project อยู่เลย ซึ่งเราจำเป็นต้องสร้าง project สำหรับเขียนโปรแกรมภาษา Java ดังนั้นให้ไปที่เมนู File
à
New à
Project … แล้วทำตามขั้นตอนในภาพต่อไปนี้เพื่อสร้าง project ใหม่โดยตั้งชื่อ project เป็น Employee
สาเหตุที่เราตั้งชื่อ project เป็นคำว่า Employee เนื่องจากเราจะสมมุติว่า Web
Services ตัวนี้ จะทำหน้าที่ช่วยสืบค้นข้อมูลพนักงานภายในองค์กรของเรา
และให้ผลลัพธ์เป็นข้อมูลพนักงาน
1.2 สร้างคลาส Web Services
เราจำเป็นต้องสร้างคลาส (Class) ขึ้นมาเพื่อทำหน้าที่เป็น Web Services และรวบรวมกระบวนการที่เราต้องการ
โดยสมมุติให้คลาสชื่อว่า EmployeeManager และมีกระบวนการสองอย่างคือ
getEmployee และ getEmployees ตามการออกแบบต่อไปนี้
เพื่อความรวดเร็วในการทดลองให้เราก็อปปีซอร์สโค้ดตัวอย่างมาจาก
DVD ชุดฝึกอบรม โดยลากไฟล์ทั้งหมดที่อยู่ในโฟลเดอร์ provider\java
มาวางไว้ที่โฟลเดอร์ src ของโปรเจคเราดังนี้
หลังจากนั้นให้ดับเบิลคลิกที่ไฟล์ Rectangle.java
เพื่อดูตัวอย่างวิธีการเขียนโปรแกรม Web Services แบบ RPC-Style ด้วยภาษา Java หรือดับเบิลคลิกที่ไฟล์
EmployeeManager.java เพื่อดูตัวอย่างวิธีการเขียนโปรแกรม Web
Services แบบ Document-Style ด้วยภาษา Java
1.3 การรัน RPC-Style Web Services
ให้ดับเบิลคลิกที่ไฟล์ Rectangle.java จะพบซอร์สโค้ดดังต่อไปนี้
ซอร์สโค้ด 1 ไฟล์ Rectangle.java
01 package aczept.ws.demo;
02
03 import javax.jws.WebMethod;
04 import javax.jws.WebService;
05 import javax.jws.soap.SOAPBinding;
06 import javax.jws.soap.SOAPBinding.ParameterStyle;
07 import javax.jws.soap.SOAPBinding.Style;
08 import javax.jws.soap.SOAPBinding.Use;
09 import javax.xml.ws.Endpoint;
10
11 @WebService
12 @SOAPBinding(use=Use.LITERAL, style=Style.RPC, parameterStyle=ParameterStyle.WRAPPED)
13 public class Rectangle {
14 @WebMethod
15 public int computeArea(int width, int height) {
16 System.out.println("enter
computeArea [" + width + "], [" + height + "]");
17 return width * height;
18 }
19
20 public static void main(String[] args) {
21 String addr = "http://0.0.0.0:4321/rectangle";
22 Endpoint.publish(addr, new Rectangle());
23 }
24 }
ให้คลิกขวาที่ไฟล์ Rectangle.java แล้วเลือกคำสั่ง Run As à Java Application
โปรแกรม Rectangle.java จะทำงานอยู่ที่เน็ตเวิร์คพอร์ตหมายเลข
4321 และท่านสามารถเปิดดูไฟล์ WSDL ได้โดยใช้เว็บเบราเซอร์
เบราซ์ไปที่ตำแหน่ง URL http://localhost:4321/rectangle?WSDL
ดังนี้
1.4 การรัน Document-Style Web Services
ให้ดับเบิลคลิกที่ไฟล์ EmployeeManager.java
จะพบซอร์สโค้ดภาษา Java ที่แสดงถึงวิธีการสร้าง
Web Services ในรูปแบบ Document-Style และหากต้องการรันโปรแกรม
EmployeeManager.java นี้ให้คลิกขวาที่ไฟล์ EmployeeManager.java
แล้วเลือกคำสั่ง Run As à Java Application เช่นเดียวกับการรัน Rectangle.java ที่ทำผ่านมา
ซอร์สโค้ด 2 ไฟล์ EmployeeManager.java
01 package aczept.ws.emp;
02
03 import java.util.ArrayList;
04 import java.util.Date;
05 import java.util.List;
06
07 import javax.jws.WebMethod;
08 import javax.jws.WebService;
09 import javax.jws.soap.SOAPBinding;
10 import javax.jws.soap.SOAPBinding.ParameterStyle;
11 import javax.jws.soap.SOAPBinding.Style;
12 import javax.jws.soap.SOAPBinding.Use;
13 import javax.xml.ws.Endpoint;
14
15 @WebService
16 @SOAPBinding(use=Use.LITERAL, style=Style.DOCUMENT,
parameterStyle=ParameterStyle.BARE)
17 public class EmployeeManager {
18
19 @WebMethod
20 public Employee
getEmployee(Identifier id) {
21 Employee emp = new Employee();
22 emp.setFirstName("Sorapong");
23 emp.setLastName("Ruanmanee");
24 emp.setIdentifier(id);
25 return emp;
26 }
27
28 @WebMethod
29 public Employees
getUpdatedEmployees(String userId) {
30 Employees employees = new Employees();
31 List<Employee> emps = new ArrayList<Employee>();
32
33 Identifier id1 = new Identifier();
34 id1.setKey("100");
35 id1.setLicense("ABC");
36 Employee emp1 = new Employee();
37 emp1.setFirstName("Sorapong");
38 emp1.setLastName("Ruanmanee");
39 emp1.setIdentifier(id1);
40 emps.add(emp1);
41
42 Identifier id2 = new Identifier();
43 id2.setKey("200");
44 id2.setLicense("XYZ");
45 Employee emp2 = new Employee();
46 emp2.setFirstName("Natthapong");
47 emp2.setLastName("Ruanmanee");
48 emp2.setIdentifier(id2);
49 emps.add(emp2);
50
51 employees.setEmployee(emps);
52 return employees;
53 }
54
55 @WebMethod
56 public Employees
getEmployees(String userId) {
57 Employees employees = new Employees();
58 List<Employee> emps = new ArrayList<Employee>();
59
60 Identifier id1 = new Identifier();
61 id1.setKey("100");
62 id1.setLicense("ABC");
63 Employee emp1 = new Employee();
64 emp1.setFirstName("Sorapong");
65 emp1.setLastName("Ruanmanee");
66 emp1.setIdentifier(id1);
67 emps.add(emp1);
68
69 Identifier id2 = new Identifier();
70 id2.setKey("200");
71 id2.setLicense("XYZ");
72 Employee emp2 = new Employee();
73 emp2.setFirstName("Natthapong");
74 emp2.setLastName("Ruanmanee");
75 emp2.setIdentifier(id2);
76 emps.add(emp2);
77
78 employees.setEmployee(emps);
79 return employees;
80 }
81
82 @WebMethod
83 public Result
saveEmployee(Employees employees) {
84 System.out.println("saveEmployee
[" + new Date() + "]");
85 Result result = new Result();
86 result.setSuccess(true);
87 return result;
88 }
89
90 public static void main(String[] args) {
91 String addr = "http://0.0.0.0:5544/employee";
92 Endpoint.publish(addr, new EmployeeManager());
93 }
94 }
เมื่อรัน EmployeeManager แล้วเปิดไปที่ตำแหน่ง
URL http://localhost:5544/employee?WSDL
จะพบเนื้อหาของไฟล์ WSDL ของเว็บเซอร์วิสตัวนี้
คล้ายดังภาพต่อไปนี้
เมื่อมาถึงขั้นตอนนี้เราจะมี Web
Services ที่สร้างขึ้นด้วยภาษา Java รันค้างไว้เพื่อรอรับบริการ
อยู่ 2 ตัว
และพร้อมสำหรับการทดสอบและลงทะเบียนเว็บเซอร์วิสกับระบบ Web Services
Helper System ได้ต่อไป
ความคิดเห็น
แสดงความคิดเห็น