Hand on Exercises Java Web Services and SOA using GlassFish ESB and NetBeans
1. 1
Hand-on
Exercises
Java Web Services
and
Service Oriented Architecture
Using GlassFish ESB
and NetBeans
Assoc.Prof.Dr.Thanachart Numnonda
and
Asst Prof.Thanisa Kruawaisayawan
August 2010
Thanachart Numnonda / Thanisa Kruawaisayawan
2. 2
สารบญ
Exercise 1 Java RMI...........................................................................................................................4
Exercise 2 Web Services Using JAX-RPC ........................................................................................8
Exercise 3 การพฒนาโปรแกรม Web Services Client...........................................................................17
Exercise 4 การพฒนาโปรแกรม Web Services Provider.......................................................................26
Exercise 5 Axis2 Web Services.........................................................................................................31
Exercise 6 Java Web Services from Entity Class .............................................................................36
Exercise 7 การพฒนาโปรแกรมโดยใช JAXP .......................................................................................40
Exercise 8 การพฒนาโปรแกรม RESTful Web Services .....................................................................45
Exercise 9 การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API....................51
Exercise 10 การพฒนาโปรแกรมเพอเรยกใช Google Map Web Services .............................................64
Exercise 11 การพฒนาโปรแกรม Hello BPEL......................................................................................70
Exercise 12 BPEL for Writing to File...............................................................................................82
Exercise 13 BPEL for Writing to Database.......................................................................................96
Exercise 14 BPEL for Sending Message to a JMS Queue ............................................................105
Exercise 15 Simple BPEL Invoking Web Services ........................................................................116
Exercise 16 Advance BPEL Invoking Web Services .....................................................................134
Exercise 17 BPEL : Structured Activities.......................................................................................167
Thanachart Numnonda / Thanisa Kruawaisayawan
3. 3
บทนา
เอกสารนใชในการประกอบการสอนวชา Java 401 : Java Web Services and SOA ของหลกส"ตร
Mini Master of Java Technology คณะเทคโนโลยสารสนเทศ สถาบนพระจอมเกลาเจาค+ณทหารลาดกระบง
โดยมจ+ดประสงค,เพอใหผ"เรยนไดเขาใจถ/งการพฒนา Service Oriented Archtecture ทงนแบบฝ1กหดนอางองกบ
เครองมอพฒนาโปรแกรมจาวา NetBeans 6.7.1 และ โปรแกรม GlassFish v2.1 Application Server
thananum@gmail.com
twitter.com/thanachart
www.facebook.com/thanachart
www.thaijavadev.com
Thanachart Numnonda / Thanisa Kruawaisayawan
4. 4
Exercise 1 Java RMI
แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมแบบกระจาย (Distributed) โดยใช Java RMI ในการเคลอน
ยาย Object ซ/งมขนตอนในการพฒนาโปรแกรมดงน
1. สราง Java Project
2. พฒนาโปรแกรม Server Interface
3. พฒนาโปรแกรม Server Implementation
4. พฒนาโปรแกรม Server Application
5. พฒนาโปรแกรม Client Application
1.1 การสราง Java Project
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java และ Projects เป2น Java Application
แลวกด Next
3. ก5าหนด Project Name เป2น RMIDemo แลวเลอก Project Location เป2น folder ทเราตองการจะเก4บ
ไฟล,ไว จากนนเลอกตรง Create Main Class ออก แลวกด Finish
1.2 การพฒนาโปรแกรม Server Interface
ในขนตอนนจะเป2นการสราง Server Interface เพอประกาศเมธอดทตองการใหบรการ โดย Server
Interface นจะตอง extends Interface ทชอ Remote และท+กๆ เมธอดจะตอง throws ขอผดพลาดประเภท
RemoteException ซ/งตองมไฟล,นอย":ทงในฝ;<ง Server และฝ;<ง Client ขนตอนการพฒนาเป2นดงน
1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RMIDemo จากนนเลอกค5าสง New > Other…
2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Java เลอก File Types: เป2น Java Interface แลว
กด Next
3. ก5าหนด Class Name: เป2น Hello และ Package: เป2น rmi แลวกด Finish
4. เขยน source code ของไฟล, Hello.java ตาม Listing ท 1.1
Listing ท 1.1 โปรแกรม Hello.java
Java RMI Thanachart Numnonda / Thanisa Kruawaisayawan
5. 5
package rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
String sayHello() throws RemoteException;
}
1.3 การพฒนาโปรแกรม Server Implementation
ในขนตอนนจะเป2นการสราง Server Implementation โดยคลาสนจะตอง extends คลาสทชอ
UnicastRemoteObject และ implements Server Interface (Hello) เพอเขยนค5าสงในเมธอดทประกาศไวใน
Server Interface และตองมการเพม constructor ท throws RemoteException ดวย ซ/งมขนตอนการพฒนา
ดงน
1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RMIDemo จากนนเลอกค5าสง New > Java Class แลว
กด Next
2. ก5าหนด Class Name: เป2น HelloImpl จากนนเลอก Package: เป2น rmi แลวกด Finish
3. เขยน source code ของไฟล, HelloImpl.java ตาม Listing ท 1.2
Listing 1.2 โปรแกรม HelloImpl.java
package rmi;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class HelloImpl extends UnicastRemoteObject implements Hello {
public HelloImpl() throws RemoteException { }
public String sayHello() throws RemoteException {
return "Hello from xxx"; // ใหใสชอของผพฒนาแทนท xxx
}
}
1.4 การพฒนาโปรแกรม Server Application
ในขนตอนนจะเป2นการสราง Server Application เพอ start rmiregistry และลงทะเบยนชอ Object ท
Java RMI Thanachart Numnonda / Thanisa Kruawaisayawan
7. 7
Listing ท 1.4 โปรแกรม HelloClient.java
package rmi;
import java.rmi.Naming;
public class HelloClient {
public static void main(String[] args) {
try {
Hello obj = (Hello) Naming.lookup("rmi://localhost/hello");
System.out.println(obj.sayHello());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
1.6 การทดสอบโปรแกรม
1. คล=กขวาตรง RMIDemo เพอท5าการ Clean and Build
2. Run โปรแกรม HelloServer.java
3. Run โปรแกรม HelloClient.java
4. จะไดผลลพธ,เป2นขอความ Hello from xxx กลบมาจาก Server
5. ทดลองเปลยนจาก localhost เป2น IP Address ของเครองอนๆ
Java RMI Thanachart Numnonda / Thanisa Kruawaisayawan
8. 8
Exercise 2 Web Services Using JAX-RPC
เนอหาทตองศกษากอน Entity Bean Using EJB 2.1
แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ J2EE 1.4 โดยใชช+ดค5าสง JAX-
RPC (JSR 101) โดยจะเป2นการพฒนาบน Server ทรนบน J2EE 1.4 การพฒนา Web Services Provider
สามารถท5าไดสองวธคอ
• Web Services ทรนบน Web Server โดยใช Java Servlet
• Web Services ทรนบน Application Server โดยใช Session Bean
การพฒนาบน Application Server จะท5าใหรองรบจ5านวนผ"ใชไดมากกว:า และเหมาะกบการท5า Web
Service ในทางปฏบตทตองการท5า Web Service เพอขยายโอกาสทางธ+รกจและคาดว:าน:าจะมผ"เขามาใช Service
จ5านวนมากข/น ท5าให Web Server อาจไม:เหมาะสมกบการรองรบจ5านวนผ"ใชจ5านวนมาก ดงนนผ"พฒนา Java
Web Services จ/งควรทจะมความร"ในการพฒนา Application Server โดยใช EJB
แบบฝ1กหดจะแสดงขนตอนการใช NetBeans สราง Web Services ทชอ calculateTax โดยใช Servlet
และสราง Web Services ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Entity Bean
Using EJB 2.1 โดย Service นจะเป2นการคนหาหนงสอจาก table ทชอ book ในฐานขอม"ล MySql
ขนตอนในการพฒนาโปรแกรม
1. พฒนา calculateTax Web Service
2. พฒนา Desktop Web Service Client
3. พฒนา findBook Web Service
4. พฒนา Web Application เพอเรยกใช Web Service
2.1 การพฒนา calculateTax Web Service
แบบฝ1กหดนจะสราง Web Application Project ข/นใหม: เพอใชในการเก4บ Web Service โดยมขน
ตอนการพฒนาดงนดงน
1. เลอกเมน" File => New Project..
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ Projects เป2น Web Application
แลวกด Next
3. ก5าหนด Project Name เป2น WSApp แลวเลอก Project Location เป2น Director ทเราตองการจะเก4บ
ไฟล,ไว จากนนเลอก Server เป2น Sun Java System Application Server 9 ก5าหนด Jave EE
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
9. 9
Version: เป2น J2EE 1.4 และไม:เลอกช:อง Set Source Level to 1.4 แลวกด Finish
โปรแกรม NetBeans จะม Wizard เพอสราง Web Service โดยมขนตอนดงน
1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSApp จากนนเลอกค5าสง New > File/Folder
2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web
Service แลวกด Next
3. ในไดอะล4อก New Web Service ก5าหนด Web Service Name: เป2น TaxServices และ Packgae:
เป2น ws แลวกด Finish
4. โปรแกรมจะประกาศ Web Services ทชอ TaxServices ในโหนด Web Services ของหนาต:าง
Project และหนาต:าง Editor จะแสดงไฟล,ทชอ TaxServicesImpl.java
5. ในหนาต:าง Projects ขยายโหนด WSApp > Web Services แลวคล=กขวาทโหนด TaxServices เลอก
ค5าสง Add Operation..
6. ในไดอะล4อก Add Operation ก5าหนด Method เป2น caluclateTax ชนดของ Return Type เป2น
double และ เพม Input parameter หน/งตวคอ income ชนด double ดงร"ปท 2.1
รปท 2.1 การเพม Operation
7. โปรแกรมจะเพมเมธอด calculateTax ใน source code ของไฟล, TaxServicesImpl.java ใหปรบปร+ง
source code ดงน
public double calculateTax(double income) throws java.rmi.RemoteException {
if (income < 70000) {
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
10. 10
return 0;
} else if (income < 100000) {
return (income - 70000) * 0.05;
} else if (income < 500000) {
return (income - 10000) * 0.1 + 3500;
} else {
return (income - 500000) * 0.2 + 43500;
}
}
8. กดป+@ม Save แลวท5าการ Deploy Project
9. Web Service จะถ"กตดตงบน Sun Java Application Server และสามารถเรยกด"ไดการใช System
Admin Console โดยการเปAด Web Browser และเรยก url ท http://localhost:4848 โดยก5าหนด user
เป2น admin และ password เป2น adminadmin
10. โปรแกรมจะแสดง Applications และ Web Services ดงร"ปท 2.2
รปท 2.2 Admin Console ของ GlassFish ทแสดง Web Services
2.2 การพฒนา Desktop Web Service Client
เราจะสราง Java Desktop Application เพอทจะเรยกใช Web Service ทชอ calculateTax โดยจะมขน
ตอนการพฒนาดงน
1. เลอกเมน" File => New Project..
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น General และ Projects เป2น Java Application
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
11. 11
แลวกด Next
3. ก5าหนด Project Name เป2น WSDesktop แลวกด Finish
4. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSDesktop จากนนเลอกค5าสง New => File/Folder.
5. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web
Service Client แลวกด Next
6. ในไดอะล4อก New Web Service Client เลอก WSDL URL: โดยก5าหนด
เป2น http://localhost:2160/WSApp/TaxServices?WSDL และ Package เป2น ws ดงแสดงในร"ปท
2.3
รปท 2.3 การก#าหนด WSDL ของ Web Service Client
7. กด Finish โปรแกรมจะแสดง Web Service Reference โดยม Service ชอ calculateTax ดงร"ปท 2.4
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
12. 12
รปท 2.4 ผลทไดจากการอางอง Web Service Client
8. ในหนาต:าง Projects ลากโหนด calculateTax ลงในไฟล, Main.java ของหนาต:าง Editor โปรแกรมจะ
เพม source code ใหอตโนมต ใหแกไขค:า double1 เป2น 350000
9. ทดลองรนโปรแกรมจะเห4นค:าผลลพธ,เป2น Result = 37500.0
2.3 การพฒนาโปรแกรม findBook Web Service
ขนตอนนจะสราง Web Service ทชอ findBook จาก Stateless Session Bean ทชอ
BooksFacade.java ทพฒนาจากแบบฝ1กหด Entity Bean Using EJB 2.1 โโดยจะมขนตอนการพฒนาดงน
1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด EJBBookApp-ejb จากนนเลอกค5าสง New >
File/Folder
2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web
Service แลวกด Next
3. ในไดอะล4อก New Web Service ก5าหนด Web Service Name: เป2น BookServices เลอก Package:
เป2น ws และเลอก Delegated to Existing Session Enterprise Bean แลวเลอก BooksFacadeSB ดง
ร"ปท 2.5
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
13. 13
รปท 2.5 การก#าหนดคา Web Service
4. กด Finish โปรแกรมจะประกาศ Web Services ทชอ BookServices ในโหนด Web Services ของ
หนาต:าง Project และหนาต:าง Editor จะแสดงไฟล,ทชอ BookServicesBean.java
5. โปรแกรม NetBeans จะก5าหนดให Web Services ทสรางข/นเป2น documentliteral ในกรณเราตองการ
ใหเปBน RPC ดงนนตองท5าการแกไขค+ณสมบต โดยการคล=กขวาทโหนด EJBBookApp-ejb เลอก
properties
6. ในไดอะล4อก Project Properties เลอก JAX-RPC Web Services แลวยกเลกการเลอกช:อง
documentliteral, strict และ useonewayoperations ดงร"ปท 2.6
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
14. 14
รปท 2.6 การก#าหนด Property ของ Web Service
7. ในหนาต:าง Projects ขยายโหนด WSApp > Web Services แลวคล=กขวาทโหนด DBBookServices
เลอกค5าสง Add Operation..
8. ในไดอะล4อก Add Operation ก5าหนด Method เป2น findBook ชนดของ Return Type เป2น
model.Book และ เพม Input parameter หน/งตวคอ isbn ชนด String
9. โปรแกรมจะเพมเมธอด findBook ใน source code ของไฟล, DBBookServicesBean.java ให
ปรบปร+ง source code ดงน
public Book findBook(String isbn) throws java.rmi.RemoteException {
BooksFacadeLocal bk = lookupBooksFacadeBean();
return bk.find(isbn);
}
10. กดป+@ม Save แลวท5าการ Deploy Project
2.4 การพฒนาโปรแกรม Web Application เพอเรยกใช Web Service
ขนตอนนจะเป2นการพฒนา Web Application บน Sun Java Application Server 9 เพอเรยกใช Web
Service ทชอ findBook โดยมขนตอนการพฒนาดงน
1. เลอกเมน" File => New Project..ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ
Projects เป2น WebApplication แลวกด Next
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
15. 15
2. ก5าหนด Project Name เป2น WSClient จากนนเลอก Server เป2น Sun Java System Application
Server 9 ก5าหนด Jave EE Version: เป2น J2EE 1.4 และไม:เลอกช:อง Set Source Level to 1.4 แลว
กด Finish
3. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSClient จากนนเลอกค5าสง New => File/Folder.
4. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web
Service Client แลวกด Next
5. ในไดอะล4อก New Web Service Client เลอก Project: โดยก5าหนดเป2น EJBBookApp-EJB >
BookServices และ Package เป2น ws
6. กด Finish โปรแกรมจะแสดง Web Service Reference โดยม Service ชอ findBook
7. ในหนาต:าง Projects เลอกโหนด WSClient แลวเลอก New Servlet
8. ก5าหนด Servlet Name: เป2น WSClientServlet แลวกด
9. ในหนาต:าง Editor ของไฟล, WSClientServlet.java เลอกเมธอด processRequest แลวคล=กขวาเลอก
Web Service Client Resources > Call Web Service Operation แลวเลอก findBook
10. โปรแกรม NetBeans จะเพม source code ในการเรยก Web Services โดยอตโนมต ใหปรบปร+ง
source code เพอใหไดเมธอด processRequest ดงน
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Test EJB Web Service</title>");
out.println("</head>");
out.println("<body>");
try { // This code block invokes the find operation on web service
String isbn = request.getParameter("isbn");
Book book = getBKServicesSEIPort().findBook(isbn);
out.println("ISBN: " + isbn + "<br>");
out.println("Title: " + book.getTitle() + "<br>");
out.println("Author: " + book.getAuthor() + "<br>");
out.println("Price: " + book.getPrice() + "<br>");
} catch(java.rmi.RemoteException ex) {
out.println(ex);
} catch(Exception ex) {
out.println(ex);
}
11. กดป+@ม Save
2.5 การทดสอบโปรแกรม
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
16. 16
1. ท5าการ Build และ Deploy โปรเจ4ค EJBBookApp และ WsClient
2. Run โปรแกรม WSClientServlet
3. เลอก URL ของ Web Browser เป2น http://localhost:8080/EJBBookApp-war/WSClientServlet ?
isbn=123 โดยท 123 คอหมายเลข isbn ทมอย":ในฐานขอม"ล
4. โปรแกรมจะแสดงผลเป2นรายละเอยดของหนงสอในฐานขอม"ล
หมายเหต
โปรแกรม JAX-RPC จะไม:สามารถท5างานใน JDK 6 หากตองการพฒนา Web Services ส5าหรบ JDK
6 ใหเลอกใช JAX-WS API ทจะกล:าวถ/งในแบบฝ1กหดถดไป
Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
17. 17
Exercise 3 การพฒนาโปรแกรม Web Services Client
แบบฝกหดในบทนเปนการพฒนาโปรแกรมเพอเรยกใช Web Services ทมอย()แลว ซ-งจะเลอกมา 2
บร2การดงน
การทดลองท 1 ราคาน4ามนล)าส6ดของ ปตท.
การทดลองท 2 อตราแลกเปลยนเง2นตราระหว)างประเทศ
โดยจะใช soapUI, NetBeans และ GlassFish Server
3.1 การทดสอบ Web Services โดยใช soapUI
โปรแกรม soapUI เป2นโปรแกรม Open Source ทสามารถใชเป2นเครองมอในการทดสอบเว4บเซอร,วสท
นยมใชกนอย:างกวางขวาง เราสามารถทจะไปดาวน,โหลดโปรแกรมนไดท www.soapui.org โดยเมอตดตงแลว
ใหท5าการทดสอบเรยกใชเว4บเซอร,วสในการทดลองทงสองขางตน ตามขนตอนดงน
1. ในโปรแกรม soapUI เลอกเมน" File > New WSDL Project ในช:อง Project Name ใหใส: PTT
ส:วนในช:อง Initial WSDL ใหใส: http://www.pttplc.com/pttinfo.asmx?wsdl จะไดไดอะล4อกดงร"ป
ท 3.1
รปท 3.1 การสราง WSDL Project ใน soapUI
2. โปรแกรมจะสรางโปรเจ4คนข/นมา ขยายโหนด PTTInfoSoap แลวเลอกโอเปอร,เรชน
การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
21. 21
รปท 3.5 ตวอยางผลลพธ*การรน SoapUI
3.2 การพ%ฒนา Web Service Client
แบบฝ1กหดนจะสราง Web Application Project ข/นใหม: เพอใชในการเรยก Web Services โดยมขน
ตอนการพฒนาดงน
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และ Web Application แลวกด
Next
3. ก5าหนด Project Name เป2น ExternalWSDemo แลวเลอก Project Location เป2น folder ทเรา
ตองการจะเก4บไฟล,ไว
4. จากนนเลอก Server เป2น GlassFish v2.1 ก5าหนด Jave EE Version: เป2น Java EE 5 แลวกด
Finish
3.3 การเรยกใช Web Services เพอด!ราคาน#ามน
ขนตอนนเป2นการพฒนาโปรแกรม Web Service Client เพอทดสอบเรยกใช Web Services ของ
ปตท.เพอเรยกด"ราคาน5ามนล:าส+ด โดยมขนตอนดงน
1. คล=กขวาทโหนด ExternalWSDemo จากนนเลอกค5าสง New > Other… ใหเลอก Categories เป2น
Web Services และ Web Service Client แลวกด Next
2. ในไดอะล4อก New Web Service Client ใหเลอก WSDL URL: แลวใส: URL เป2น
http://www.pttplc.com/pttinfo.asmx?wsdl ดงแสดงในร"ปท 3.6 แลวกด Finish
การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
22. 22
รปท 3.6 แสดงไดอะล/อก New Web Service Client
3. ในหนาต:าง Projects จะม Folder ทชอ Web Service References ข/นมา ซ/งเมอขยายโหนดดงกล:าวจะ
เห4นรายชอเซอร,วสต:างๆ ของ PTTInfo
4. คล=กขวาท ExternalWSDemo แลวเลอก Servlet... จากนนใหก5าหนดชอเป2น PTTServlet และ
Package: เป2น servlets แลวกด Finish
5. คล=กขวาภายในเมธอด processRequest ในไฟล, PTTServlet.java แลวเลอก Insert Code... > Call
Web Service Operation
6. เลอก ExternalWSDemo > pttinfo > PTTInfo > PTTInfoSoap > CurrentOilPrice ดงแสดงใน
ร"ปท 3.7 แลวกด OK
การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
24. 24
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet PTTServlet</title>");
out.println("</head>");
out.println("<body>");
try { // Call Web Service Operation
com.pttplc.ptt_webservice.PTTInfoSoap port = service.getPTTInfoSoap();
// TODO initialize WS operation arguments here
java.lang.String language = "TH";
// TODO process result here
java.lang.String result = port.currentOilPrice(language);
out.println("Result = " + result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
3.4 การเรยกใช Web Services เพอด!อตราแลกเปลยน
ขนตอนนเป2นการพฒนาโปรแกรม Web Service Client เพอทดสอบเรยกใช Web Services เพอเรยกด"
อตราแลกเปลยนเงนตรา โดยมขนตอนดงน
1. คล=กขวาทโหนด ExternalWSDemo จากนนเลอกค5าสง New > Web Service Client แลวกด Next
2. ในไดอะล4อก New Web Service Client ใหเลอก WSDL URL: แลวใส: URL เป2น
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl
3. คล=กขวาท ExternalWSDemo แลวเลอก Servlet... จากนนใหก5าหนดชอเป2น CurrencyServlet และ
Package: เป2น servlets แลวกด Finish
4. คล=กขวาภายในเมธอด processRequest ในไฟล, CurrencyServlet.java แลวเลอก Insert Code .. >
Call Web Service Operation
5. เลอก ExternalWSDemo > CurrencyConvertor > CurrencyConvertor >
CurrencyConvertorSoap > ConversionRate แลวกด OK
6. แกไขไฟล, CurrencyServlet.java ดงน
net.webservicex.Currency fromCurrency = net.webservicex.Currency.USD;
net.webservicex.Currency toCurrency = net.webservicex.Currency.THB;
การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
25. 25
7. ท5าการ Build/Deploy แลว Run ไฟล, CurrencyServlet.java โปรแกรมจะแสดงอตราแลกเปลยนเงน
ตรา ดงแสดงในร"ปท 3.9
รปท 3.9 แสดงผลลพธ*ทไดจากการเรยกใช Web Service Operation: ConversionRate
การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
26. 26
Exercise 4 การพฒนาโปรแกรม Web Services Provider
แบบฝ1กหดนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ Java EE โดยใชช+ดค5าสง JAX-WS ซ/งจะ
เป2นการพฒนา Web Services Provider บน Java EE Server ทงนช+ดค5าสง JAX-WS จะช:วยท5าใหการสราง
และเรยกใช Web Services ดวยภาษา Java เป2นไปไดง:ายข/น
การพฒนา Web Services จะแบ:งเป2นสองส:วนคอ Web Service Provider (Server) และ Web
Service Requester (Client) แบบฝ1กหดนจะเป2นการพฒนา Web Service Provider ซ/งสามารถเลอกพฒนา
ได2 ร"ปแบบคอ
1. Web Services ทรนบน Web Server โดยใช Java Servlet
2. Web Services ทรนบน Application Server โดยใช Session Bean
แบบฝ1กหดนจะเลอกพฒนาโดยใช Java Servlet โดยจะแสดงขนตอนการใช NetBeans ในการสราง
Web Service ทชอ calculateTax ซ/งจะรนอย":บน GlassFish V2.1 Server
4.1 การพฒนา calculateTax Web Service
แบบฝ1กหดนจะสราง Web Application Project ข/นใหม: เพอใชในการเก4บ Web Service โดยมขนตอน
การพฒนาดงน
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และ Projects เป2น Web
Application แลวกด Next
3. ก5าหนด Project Name เป2น TaxWSDemo แลวเลอก Project Location เป2น folder ทเราตองการจะ
เก4บไฟล,ไว
4. จากนนเลอก Server เป2น GlassFish V2.1 ก5าหนด Jave EE Version: เป2น Java EE 5 แลวกด
Finish
5. คล=กขวาทโหนด TaxWSDemo จากนนเลอกค5าสง New > Other… ใหเลอก Categories เป2น Web
Services และ Web Service แลวกด Next
6. ในไดอะล4อก New Web Service ก5าหนด Web Service Name: เป2น TaxServices และ Package:
เป2น ws แลวกด Finish
7. โปรแกรมจะประกาศ Web Services ทชอ TaxServices ในโหนด Web Services ของหนาต:าง Project
และหนาต:าง Editor จะแสดงไฟล,ทชอ TaxServices.java
การพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
27. 27
8. ในหนาต:าง Projects ขยายโหนด TaxWSDemo > Web Services แลวคล=กขวาทโหนด TaxServices
เลอกค5าสง Add Operation…
9. ในไดอะล4อก Add Operation ก5าหนด Method เป2น calculateTax ชนดของ Return Type เป2น
double และ เพม Input parameter หน/งตวคอ income ชนด double แลวกด OK
10. คล=กทแทป 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;
}
}
}
11. คล=กขวาทโหนด TaxWSDemo จากนนเลอกค5าสง Clean and Build จากนนคล=กขวาทโหนด
TaxWSDemo อกครง แลวเลอก Deploy
4.2 การทดสอบ Web Service
โปรแกรม Web Service จะถ"กตดตงบน GlassFish V2.1 และสามารถเรยกด"ไดการใช System
Admin Console โดยการเปAด Web Browser และเรยก url ท http://localhost:4848 โดยก5าหนด user เป2น
admin และ password เป2น adminadmin
1. โปรแกรมจะแสดง Applications และ Web Services ดงแสดงในร"ปท 4.1
การพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
28. 28
รปท 4.1 แสดงรายละเอยดใน GlassFish V2.1
2. เราสามารถทจะทดสอบ Web Service นผ:านทาง Admin Console ไดโดยกดป+@ม Test หรอทดสอบ
จาก Netbeans โดยคล=กขวาท TaxServices ใน Web Services ดงแสดงในร"ปท 4.2
รปท 4.2 แสดงวธการทดสอบ Web Service ใน Netbeans
3. โปรแกรมจะแสดงหนาจอเพอใหเราปBอนขอม"ลอนพ+ต ซ/งคอจ5านวนเงนทตองการค5านวณภาษ ในทนจะใส:
ตวเลขเป2น 73000 ดงแสดงในร"ปท 4.3
การพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
29. 29
รปท 4.3 แสดงหนาตางส#าหรบใหทดสอบเรยก Web Service
4. แลวกดป+@ม calculateTax โปรแกรมจะเรยกใช Web Services และจะแสดงผลลพธ,ทได พรอมทงแสดง
ค:า SOAP Request ดงแสดงในร"ปท 4.4
รปท 4.4 แสดงผลลพธ*ทไดจากการเรยกใช Web Service และแสดง SOAP Request
การพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
34. 34
รปท 5.5 การ Config คาส#าหรบ Tomcat Axis2
5.3 การพฒนา Axis2 Web Service
ขนตอนนจะเป2นการพฒนา Axis2 Web Service F ดยมขนตอนการพฒนาดงน
1. เลอกเมน" File => New Project..
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java และ Java Application แลวกด Next
3. ก5าหนด Project Name เป2น Axis2Demo แลวเลอก Project Location เป2น Director ทเราตองการจะ
เก4บไฟล,ไว แลวกด Finish
4. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด Axis2Demo จากนนเลอกค5าสง New > Other
5. ในไดอะล4อก New File ใหเลอก Categories เป2น Web Services และ Axis2 Service from Java
แลวกด Next
6. เลอกช:อง Create Empty Web Service แลวกด Next
7. ในไดอะล4อกถดไป ก5าหนดชอ Class Name เป2น TaxServices และ Package เป2น ws แลวกด Finish
8. ปรบปร+ง source code เพอเพมเมธอดทชอ calculateTax ดง Listing ท
9. ท5าการ Deploy Web Services โดยการคล=กขวาทโหนด Axis Web Server ทอย":ภายใตโหนด
Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
35. 35
Axis2Demo แลวเลอกค5าสง Deploy to Server
10. ทดสอบเว4บเซอร,วสได รนโปรแกรม Browser และการเลอก url ทชอ http://localhost:8084/axis2/
แลวคล=ก Services จะเห4นเว4บเซอร,วสทชอ TaxServices อย":
Listing ท 5.1 โปรแกรม TaxServices.java
package ws;
public class TaxServices {
public double calculateTax(double income) {
return 0.1 * income;
}
}
Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
36. 36
Exercise 6 Java Web Services from Entity Class
แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ Java EE โซ/งจะเป2นการพฒนาบน
Server ทรนบน Java EE โดยช+ดค5าสง JAX-WS ซ/งในกรณนจะแสดงขนตอนการใช NetBeans สราง Web
Services ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Enterprise Java Bean โดย
Service นจะเป2นการคนหาหนงสอจาก table ทชอ book ในฐานขอม"ล MySQL
6.1 การสราง Enterprise Application Project
เราจะก5าหนดใหโปรแกรมนเป2นโปรแกม Enterprise Application ซ/งมทง EJB Module และ Web
Module ขนตอนแรกจะเป2นการสราง Project ใหม:ขนมาใน NetBeans ซ/งมขนตอนดงน
/
1. เลอกเมน" File => New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java EE และเลอก Enterprise เป2น
Enterprise Application แลวกด Next
3. ก5าหนด Project Name เป2น BookAppWS แลวเลอก Project Location เป2น folder ทเราตองการจะ
เก4บไฟล,ไว แลวกด Next
4. เลอก Server เป2น GlassFish V2.1 ก5าหนด Jave EE Version: เป2น และใหเลอกช:อง Create
EJB Module: และ Create Web Application Module: ดงแสดงในร"ป แลวกด Finish
รปท 6.1 การ Config คาส#าหรบ Tomcat Axis2
Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
37. 37
6.2 การพฒนา Entity Class และ Session Bean
ขนตอนนจะเป2นการสราง Entity Class และ Session Bean เพอตดต:อกบ table ทชอ books ใน
MySQL โดยมขนตอนการพฒนาเช:นเดยวกบแบบฝ1กหดการพฒนา Enterprise Java Bean ซ/งเราจะได Entity
Class ทชอ Books และ Session Bean ทชอ BooksFacade ซ/งมเมธอด findBook ดงร"ปท
รปท 6.2 แสดงไฟล*ของโปรแกม BookAppWS-ejb ทถกสรางขน
6.3 การพฒนา findBook' Web Service
ขนตอนนจะสราง Web Service ทชอ findDBook จาก Stateless Session Bean ทชอ
BooksFacade.java ทพฒนาจากแบบฝ1กหด Enterprise Java Bean โดย Services นจะใชในการคนหาหนงสอ
จากฐานขอม"ลจากหมายเลข isbn ทปBอนเขา และมขนตอนการพฒนาดงน
1. เลอกไฟล, BooksFacade.java แลวเปลยน source code โดยเพมค5าสง annotation เพอประกาศให
session bean นเป2น Web Service และเมธอด find เป2น Web Service โดยมค5าสงดงน
@WebService
@Stateless
public class BooksFacade implements BooksFacadeLocal {
...
@WebMethod(operationName=”findBook”)
public Books find(Object pk) {
return (Books) em.find(Books.class, pk);
}
...
}
2. กด Alt-Shift-F เพอท5าการ import class ทเกยวของแลวกดป+@ม Save
3. ท5าการ Deploy Project
Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
38. 38
6.4 การพฒนาโปรแกรม Web Application เพอเรยกใช Web Service
ขนตอนนจะเป2นการพฒนา Web Application บน GlassFishV2 เพอเรยกใช Web Service ทชอ
findBook โดยมขนตอนการพฒนาดงน
1. เลอกเมน" File => New Project..
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ Projects เป2น Web Application
แลวกด Next
3. ก5าหนด Project Name เป2น WSServletClient จากนนเลอก Server เป2น GlassFish V2 ก5าหนด
Jave EE Version: เป2น Java EE 5 แลวกด Finish
4. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSServletClient จากนนเลอกค5าสง New => Other..
5. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web
Service Client แลวกด Next
6. ในไดอะล4อก New Web Service Client เลอก Project โดยก5าหนด BooksFacadeService โปรแกรม
จะแสดงค:า wsdl ดงร"ปท
รปท 6.3 การก#าหนดคา WSDL
7. กด Finish โปรแกรมจะแสดง Web Service Reference โดยม Service ชอ findDBook
Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
39. 39
8. ในหนาต:าง Projects เลอกโหนด WSServletClient แลวเลอก New > Servlet..
9. ก5าหนด Servlet Name: เป2น BookServlet แลวกด Finish
10. ในหนาต:าง Projects ลากโหนด findBook ลงในไฟล, BookServlet.java ของหนาต:าง Editor
โปรแกรมจะเพม source code ใหอตโนมต ใหปรบปร+ง source code ในส:วนทเรยกใช Web
Service ดงน
try { // Call Web Service Operation
entity.BooksFacade port = service.getBooksFacadePort();
java.lang.Object arg0 = request.getParameter("isbn");
entity.Books book = port.find(arg0);
out.println("Title = "+ book.getTitle() + "<br>");
out.println("Author = "+ book.getAuthor() + "<br>");
out.println("Price = "+ book.getPrice() + "<br>");
} catch (Exception ex) {
// TODO handle custom exceptions here
}
11. กดป+@ม Save
6.5 การทดสอบโปรแกรม
1. ท5าการ Build และ Deploy โปรเจ4ค WSServletClient
2. Run โปรแกรม WSServletClient
3. เลอก URL ของ Web Browser เป2น http://localhost:8080/WSServletClient/BookServlet?
isbn=123 โดยท 123 คอหมายเลข isbn ทมอย":ในฐานขอม"ล
4. โปรแกรมจะแสดงผลเป2นรายละเอยดของหนงสอในฐานขอม"ล
Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
40. 40
Exercise 7 การพฒนาโปรแกรมโดยใช JAXP
แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมทเกยวของกบไฟล,ประเภท XML โดยใชช+ดค5าสง JAX-P
(Java API for XML Processing) ซ/งเป2นช+ดค5าสงภาษาจาวาเพอด/งขอม"ลจากไฟล,ประเภท XML
ขนตอนในการพฒนาโปรแกรม
1. สราง Java Project
2. สราง XML Document
3. พฒนาโปรแกรม XML Parser โดยใช JAXP
7.1 การสราง Java Project
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java และ Java Application แลวกด Next
3. ก5าหนด Project Name เป2น JAXPB แลวเลอก Project Location เป2น folder ทเราตองการจะเก4บไฟล,
ไว จากนนเลอกตรง Create Main Class ออก แลวกด Finish
7.2 การสราง XML Document
1. คล=กขวาทโหนด JAXPB จากนนเลอก New > Other...
2. ในหนาต:าง New File ใหเลอก Categories ทชอ XML เลอก File Types: เป2น XML Document
แลวกด Next
3. ในหนาต:าง New XML Document ใหตงชอ File Name: เป2น Books และเลอก Folder:ไปท src
แลวกด Next
4. ใหเลอก Select Document Type เป2นแบบ Well-formed Document แลวกด Finish
5. ใหคดลอกขอม"ลของ XML Document ใน Listing ท 7.1 ไปใส:ในไฟล, Books.xml
Listing ท 7.1 ขอม"ลส5าหรบไฟล, Books.xml
<?xml version='1.0' encoding='UTF-8'?>
<books>
<book>
<isbn>111</isbn>
<title>SOA</title>
<author>Bill</author>
<price>2000.0</price>
</book>
<book>
<isbn>222</isbn>
การพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
43. 43
public void characters(char[] ch, int start, int length) throws SAXException {
String content = new String(ch,start,length);
if (!content.trim().equals("")) {
System.out.println("characters: ("+content+")");
}
}
@Override
public void endDocument() throws SAXException {
System.out.println("End Document");
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("End Element: "+localName);
}
@Override
public void startDocument() throws SAXException {
System.out.println("Start Document");
}
@Override
public void startElement(String uri, String localName, String qName, Attributes atts) throws
SAXException {
System.out.println("Start Element: "+localName);
}
}
7. จากนนใหท5าการเพมเตม source code ในเมธอด main ของคลาส JAXPDemo ดง Listing ท 7.4
Listing ท 7.4 คลาส JAXPDemo
public class JAXPDemo {
public static void main(String[] args) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
SAXParser saxParser = factory.newSAXParser();
XMLReader xmlReader = saxParser.getXMLReader();
การพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
44. 44
xmlReader.setContentHandler(new XMLHandler());
InputSource is = new InputSource(new FileInputStream("Books.xml"));
xmlReader.parse(is);
} catch (Exception ex) {
System.out.println(ex);
}
}
}
8. คล=กขวาในหนา Editor เพอท5าการ Fix Imports
9. จากนนใหคล=กขวาทโหนด JAXPB แลวเลอก Properties ตรง Categories ใหเลอก Run จากนนตรง
Working Directory ให Browse เลอกไปท folder src กด Open และกด OK
10. Run โปรแกรม JAXPDemo.java
การพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
45. 45
Exercise 8 การพฒนาโปรแกรม RESTful Web Services
เนอหาทตองศกษากอน Enterprise Java Bean
แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม RESTful Web Services โดยใชช+ดค5าสง JAX-RS เพอ
สราง Web Services ทจะเรยกด"ขอม"ลจากฐานขอม"ล MySQL ผ:านช+ดค5าสง Java Persistence API (JPA)
ขนตอนในการพฒนาโปรแกรม
1. สราง Web Application Project
2. พฒนา Entity Class
3. พฒนา RESTful Web Service จาก Entity Class
4. ทดสอบ RESTful Web Service
5. พฒนา RESTful Web Service Client Stubs
8.1 การสราง Web Application Project
เราจะก5าหนดใหโปรแกรมนเป2นโปรแกม Web Application ขนตอนแรกจะเป2นการสราง Project ใหม:
ข/นมาใน NetBeans ซ/งมขนตอนดงน
1. เลอกเมน" File => New Project..
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และเลอก Project เป2น Web
Application แลวกด Next
3. ก5าหนด Project Name เป2น RestfulWS แลวเลอก Project Location เป2น Director ทเราตองการจะ
เก4บไฟล,ไว กด Next
4. จากนนเลอก Server เป2น GlassFishV2.1 และ Java EE 5 แลวกด Finish
8.2 การพฒนา Entity Class
ขนตอนนจะเป2นการสราง Entity Class เพอตดต:อกบ table ทชอ books ใน MySQL โดยมขนตอนการ
พฒนาเช:นเดยวกบแบบฝ1กหดการพฒนา Enterprise Java Bean ซ/งเราจะได Entity Class ทชอ Books และ
Persistence Unit
ท5าการแกไขเพอเพม property ของ ไฟล, persistence.xml ดงน
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
46. 46
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="RestfulWSPU" transaction-type="JTA">
<jta-data-source>jdbc/test</jta-data-source>
<properties>
<property name="toplink.jdbc.user" value="root" />
<property name="toplink.jdbc.password" value="adminadmin" />
</properties>
</persistence-unit>
</persistence>
8.3 การพฒนา Restful Web Service จาก Entity Class
ขนตอนนจะเป2นการพฒนา Restful Web Services เพอใหสามารถตดต:อกบฐานขอม"ลโดยผ:าน Entity
Class ทพฒนาข/นได โดยจะมขนตอนการพฒนาดงน
1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RestfulWS จากนนเลอกค5าสง New > Other...
2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น RESTful
Web Services from Entity Class แลวกด Next
3. ในไดอะล4อก New RESTful Web Services from Entity Class ใหเลอก Books (entity Books) ดง
ร"ปท 8.1 กด Add > แลวกด Next
รปท 8.1 การเลอก Entity Class ส#าหรบ RESTful Web Service
4. โปรแกรม NetBeans จะสราง class ต:างๆ ดงร"ปท 8.2
การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
47. 47
รปท 8.2 การก#าหนดคา Entity Class
5. กดป+@ม Finish
8.4 การทดสอบ RESTful Web Service จาก Entity Class
ขนตอนนจะเป2นการทดสอบ RESTful Web Services ทพฒนาข/นโดยจะมขนตอนดงน
1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RestfulWS จากนนเลอกค5าสง Test RESTful Web
Services
2. โปรแกรม Browser จะแสดง uri ของ RESTful Web Services ใหเลอกโหนด bookss และคล=กท
{isbn} ใส:ค:า isbn ของหนงสอทตองการด"รายละเอยด จากนนกด Test ดงร"ปท 8.3 ซ/งจะไดผลลพธ,ดง
แสดงในร"ปท 8.4
รปท 8.3 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด GET
การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
48. 48
รปท 8.4 ผลลพธ*ทไดจากการเรยกใชเมธอด GET
3. ทดลองเปลยน method เป2น PUT, DELETE และ POST (ตองกดเลอกไปทโหนด bookss) เพอ
ท5าการแกไข ลบ และเพมขอม"ลในตาราง books ดงแสดงในร"ปท 8.5, 8.7 และ 8.9 ซ/งจะไดผลลพธ,ดง
แสดงในร"ปท 8.6, 8.8 และ 8.10 ตามล5าดบ
รปท 8.5 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด PUT
การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
49. 49
รปท 8.6 ผลลพธ*ทไดจากการเรยกใชเมธอด PUT
รปท 8.7 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด DELETE
รปท 8.8 ผลลพธ*ทไดจากการเรยกใชเมธอด DELETE
การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
50. 50
รปท 8.9 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด POST
ร"ปท 8.10 ผลลพธ,ทไดจากการเรยกใชเมธอด POST
การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
51. 51
Exercise 9
การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google
Calendar API
แบบฝ1กหดในบทนเป2นตวอย:างการใช Web Services ทมอย":ใน Social Networks โดยจะใช Web
Services ของ Twitter เพอเขยนโปรแกรม update status ของ Twitter ส:วนตว จาก Web Application ท
พฒนาข/น จากนนจะเขยนโปรแกรมตดต:อกบ Google Calendar โดยใช Java API ของ Google เพอเรยกด"
ก5าหนดนดหมายของผ"ใชในวนป;จจ+บน จากนนจะสามารถเลอกนดหมายทแสดงข/นเพอส:งผ:านไปยง Twitter โดย
การเรยกใช Web Services ซ-งมขนตอนในการพฒนาโปรแกรมดงน
1. สราง User Account ส5าหรบ Twitter และ Google Calendar
2. สราง JSF Web Application ส5าหรบ Twitter
3. สราง Web Application ส5าหรบส:งนดหมายใน Google Calendar ไปยง Twitter
9.1 การสราง User Account สาหรบ Twitter และ Google Calendar
แบบฝ1กหดนจะเรยกใชเว4บไซต, Social Network สองเว4บคอ Twitter และ Google Calendar
• เว4บ Twitter เป2นบรการส5าหรบใหเราสามารถทจะเชอมต:อกบ เพอน สมาชกในครอบครว และ
เพอนร:วมงานไดอย":ตลอดเวลา โดยการตอบค5าถามสนๆ อย:างบ:อยครงว:า What are you doing?
เราสามารถทจะลงทะเบยนเว4บนไดท twitter.com และเมอท5าการล4อกอนเขาไปแลวจะได
ตวอย:างเว4บดงร"ปท 9.1
การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API
Thanachart Numnonda / Thanisa Kruawaisayawan
52. 52
รปท 9.1 ตวอยางเว/บ Twitter
• เว4บ Google Calendar เป2นเว4บทใหผ"ใชจดการก5าหนดการนดหมายต:างๆ ไดโดยสามารถสราง
แสดง แกไข และลบไดผ:านโปรแกรมเว4บเบราว,เซอร, โดยขอม"ลการนดหมายจะถ"กเก4บไวท
Google ท5าใหผ"ใชสามารถเรยกผ:านเว4บจากเครองใดๆ ก4ได เราสามารถทจะลงทะเบยนเว4บนไดท
www.google.com/calendar และเมอท5าการล4อกอนเขาไปแลวจะไดตวอย:างเว4บดงร"ปท 9.2
รปท 9.2 ตวอยางเว/บ Google Calendar
• กรณทผ"ใชม account อย":ใน Facebook เราสามารถทจะให status update ของ Twitter ถ"กส:ง
การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API
Thanachart Numnonda / Thanisa Kruawaisayawan
53. 53
ผ:านมายงเว4บไซต, Facebook ของเราไดโดยอตโนมตโดยการเลอก Facebook Application ชอ
http://apps.facebook.com/twitter/ ดงตวอย:างในร"ป 9.3
รปท 9.3 การเชอมโยงระหวาง Facebook กบ Twitter
9.2 การสราง JSF Web Application สาหรบ Twitter
ขนตอนนจะเป2นการสราง Web Application โดยใช JSF Visual Web Framework เพอท5าการส:ง
ขอความตอบค5าถาม What are you doing? จากโปรแกรมทพฒนาข/นไปยง Twitter โดยเรยกใช Web
Services ซ/งมขนตอนดงน
1. เลอกเมน" File > New Project..
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และเลอก Projects เป2น Web
Application แลวกด Next
3. ก5าหนด Project Name เป2น TwitterJSF แลวเลอก Project Location เป2น Director ทเราตองการจะ
เก4บไฟล,ไว จากนนเลอก Server เป2น GlassFish V2.1 จากนนกด Next
4. ในช:อง Frameworks ใหเลอก Visual Web JavaServer Faces จากนนกด Finish
หมายเหต กรณทไม:ม Visual JSF Frameworks ใหไปทเมน" Tools > Plugins แลวเลอกไปทแทป Available
Plugins จากนนกด Install ดงแสดงในร"ปท 9.4 และเมอเสร4จสนการตดตงแลว ตอง restart IDE
การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API
Thanachart Numnonda / Thanisa Kruawaisayawan