1. 1
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Hand-on
Exercises
Java Web Services
and SOA
Using NetBeans IDE with Open ESB
GlassFish Server and MySQL
Database
Assoc.Prof.Dr. Thanachart Numnonda
and
Assist.Prof.Dr. Thanisa Kruawaisayawan
April 2013
2. 2
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercises
Exercise 1: Calling Existing Web Services 3
Exercise 2: Java Web Services 11
Exercise 3: Axis2 Web Services 16
Exercise 4: การเชื่อมตอกับ MySQL Database 22
Exercise 5: Java Web Services from Session Bean (1) 29
Exercise 6: Java Web Services from Session Bean (2) 40
Exercise 7: RESTful Web Services 53
Exercise 8: Google Map Web Services 57
Exercise 9: การพัฒนาโปรแกรมเว็บเพื่อติดตอฐานขอมูล MongoDB 64
Exercise 10: Developing a Simple Synchronous BPEL Program 72
Exercise 11: BPEL for Writing to File 82
Exercise 12: Simple BPEL Invoking Web Services 95
3. 3
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 1: Calling Existing Web Services
แบบฝกหัดในบทนี้เปนการพัฒนาโปรแกรมเพื่อเรียกใช Web Services ที่มีอยูแลว ซึ่งจะเลือกมา 3
บริการดังนี้
การทดลองที่ 1 อัตราแลกเปลี่ยนเงินตราระหวางประเทศ
การทดลองที่ 2 เลขประจําตัวประชาชนของ กรมสรรพากร
การทดลองที่ 3 ราคาน้ํามันลาสุดของ ปตท.
โดยจะใช soapUI, NetBeans และ GlassFish Server
การทดลองที่ 1
การทดสอบ Web Services โดยใช soapUI
โปรแกรม soapUI เปนโปรแกรม Open Source ที่สามารถใชเปนเครื่องมือในการทดสอบเว็บเซอรวิส
ซึ่งเปนที่นิยมใชกันอยางกวางขวาง เราสามารถที่จะไปดาวนโหลดโปรแกรมนี้ไดที่ www.soapui.org
โดยเมื่อติดตั้งแลว ใหทําการทดสอบเรียกใชเว็บเซอรวิส ตามขั้นตอนดังนี้
1. ในโปรแกรม soapUI เลือกเมนู File > New soapUI Project
2. ในชอง Initial WSDL ใหใส
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl ดังแสดงในรูปที่ 1
4. 4
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 1 แสดงการสราง soapUI Project ใน soapUI
3. จากนั้นกดปุม OK โปรแกรมจะทําการสรางโปรเจ็คนี้ขึ้นมา
4. ขยายโหนด ConversionRate ของ CurrencyConvertorSoap แลวดับเบิ้ลคลิ๊กที่ Request1
5. ในหนาตาง Editor จะแสดงคาของ SOAP Request ที่จะสงไป ใหใสคาดังนี้
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.webserviceX.NET/">
<soapenv:Header/>
<soapenv:Body>
<web:ConversionRate>
<web:FromCurrency>USD</web:FromCurrency>
<web:ToCurrency>THB</web:ToCurrency>
</web:ConversionRate>
</soapenv:Body>
</soapenv:Envelope>
6. 6
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<CheckingResult diffgr:id="CheckingResult1"
msdata:rowOrder="0" diffgr:hasChanges="inserted">
<ID>3605699082386</ID>
<DigitOk>true</DigitOk>
</CheckingResult>
<Message diffgr:id="Message1" msdata:rowOrder="0"
diffgr:hasChanges="inserted">
<Code>W00000</Code>
<Description>การทํางานเสร็จสมบูรณ<br> Success
"</Description>
</Message>
</NewDataSet>
</diffgr:diffgram>
:
การทดลองที่ 3
การพัฒนา Web Service Client
แบบฝกหัดนี้จะสราง Web Application Project ขึ้นใหม เพื่อใชในการเรียก Web Services
โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java Web และ Projects เปน Web
Application แลวกด Next
3. กําหนด Project Name เปน ExistingWSDemo แลวเลือก Project Location เปน folder
ที่เราตองการจะเก็บ Project ไว แลวกด Next
4. เลือก Server เปน GlassFish Server 3.1.2 กําหนด Jave EE Version: เปน Java EE 6 Web
ดังแสดงในรูปที่ 2 แลวกด Finish
7. 7
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 2 แสดงไดอะล็อก New Web Application
5. คลิ๊กขวาที่โหนด ExistingWSDemo จากนั้นเลือกคําสั่ง New > Other… ใหเลือก Categories เปน
Web Services และ File Types เปน Web Service Client แลวกด Next
6. ในไดอะล็อก New Web Service Client ใหเลือก WSDL URL: แลวใส URL เปน
http://www.pttplc.com/webservice/pttinfo.asmx?wsdl ดังแสดงในรูปที่ 3 แลวกด Finish
8. 8
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 3 แสดงไดอะล็อก New Web Service Client
7. ในหนาตาง Projects จะมี Folder ที่ชื่อ Web Service References ขึ้นมา
8. คลิ๊กขวาที่ ExistingWSDemo แลวเลือก New > Servlet จากนั้นใหกําหนดชื่อเปน PTTServlet และ
Package: เปน servlets แลวกด Finish
9. ภายในเมธอด processRequest ในไฟล PTTServlet.java ใหลบ sourcecode ที่อยูระหวางคําสั่ง try
และ finally
10. คลิ๊กขวาระหวางคําสั่ง try และ finally แลวเลือก Insert Code จากนั้นใหเลือก Call Web Service
Operation ดังแสดงในรูปที่ 4
รูปที่ 4 แสดงการเรียกใช operation ของ Web Service
11. เลือก CurrentOilPrice ดังแสดงในรูปที่ 5 แลวกด OK
9. 9
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 5 แสดงการเรียกใช Operation: CurrentOilPrice ของปตท.
12. เพิ่ม code ภายในเมธอด processRequest ในไฟล PTTServlet.java ดังนี้
@WebServlet(name = "PTTServlet", urlPatterns = {"/PTTServlet"})
public class PTTServlet extends HttpServlet {
@WebServiceRef(wsdlLocation = "WEB-INF/wsdl/www.pttplc.com/pttinfo.asmx.wsdl")
private com.pttplc.ptt_webservice.PTTInfo service;
protected void processRequest(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.print(currentOilPrice("TH"));
} finally {
out.close();
}
}
:
private String currentOilPrice(java.lang.String language) {
com.pttplc.ptt_webservice.PTTInfoSoap port = service.getPTTInfoSoap();
return port.currentOilPrice(language);
}
}
13. คลิ๊กขวาที่ ExistingWSDemo แลวเลือก Clean and Build
10. 10
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
14. คลิ๊กขวาที่ PTTServlet.java แลวเลือก Run File แลวกด OK จะไดผลลัพธเปนราคาน้ํามันลาสุด
ดังแสดงในรูปที่ 6
รูปที่ 6 แสดงผลลัพธที่ไดจากการเรียกใช Web Service Operation: CurrentOilPrice ของปตท.
11. 11
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 2: Java Web Services
แบบฝกหัดนี้เปนการพัฒนาโปรแกรม Web Services สําหรับ Java EE โดยใชชุดคําสั่ง JAX-WS
ซึ่งจะเปนการพัฒนา Web Services Provider บน Java EE Server ทั้งนี้ชุดคําสั่ง JAX-WS
จะชวยทําใหการสรางและเรียกใช Web Services ดวยภาษา Java เปนไปไดงายขึ้น
การพัฒนา Web Services จะแบงไดเปนสองสวนคือ Web Service Requester (Client) และ Web
Service Provider (Server) ซึ่งการพัฒนา Web Service Provider สามารถทําได 2 วิธีคือ
1. Web Services ที่รันบน Web Server โดยใช Java Servlet
2. Web Services ที่รันบน Application Server โดยใช Session Bean
แบบฝกหัดนี้จะแสดงขั้นตอนการใช NetBeans สราง Web Service ที่ชื่อ calculateTax โดยใช Servlet
ซึ่งจะรันอยูบน GlassFish Server 3.1.2 Server เพื่อแสดง Web Services การสง SOAP message และ
WSDL ของ Services
การพัฒนา calculateTax Web Service
แบบฝกหัดนี้จะสราง Web Application Project ขึ้นใหม เพื่อใชในการเก็บ Web Service
โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java Web และ Projects เปน Web
Application แลวกด Next
3. กําหนด Project Name เปน TaxWSDemo แลวเลือก Project Location เปน folder
ที่เราตองการจะเก็บ Project ไว
4. จากนั้นเลือก Server เปน GlassFish Server 3.1.2 กําหนด Jave EE Version: เปน Java EE 6
Web แลวกด Finish
5. คลิ๊กขวาที่โหนด TaxWSDemo จากนั้นเลือกคําสั่ง New > Other… ใหเลือก Categories เปน Web
Services และเลือก File Types เปน Web Service แลวกด Next
6. ในไดอะล็อก New Web Service กําหนด Web Service Name: เปน TaxService และ Package:
เปน ws แลวกด Finish
7. โปรแกรมจะประกาศ Web Services ที่ชื่อ TaxService ในโหนด Web Services ของหนาตาง Project
และหนาตาง Editor จะแสดงไฟลที่ชื่อ TaxService.java
8. ในหนาตาง Projects ขยายโหนด TaxWSDemo > Web Services แลวคลิ๊กขวาที่โหนด TaxService
เลือกคําสั่ง Add Operation…
9. ในไดอะล็อก Add Operation กําหนด Method เปน calculateTax ชนิดของ Return Type เปน
12. 12
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
double และกดปุม Add เพื่อเพิ่ม Input parameter โดยกําหนด Name เปน income และ Type
เปนชนิด double แลวกด OK
10. คลิ๊กที่แทป Source ของ TaxService.java และปรับปรุงเมธอด calculateTax ดังนี้
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService()
public class TaxService {
@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 จากนั้นเลือกคําสั่ง Clean and Build จากนั้นคลิ๊กขวาที่โหนด
TaxWSDemo อีกครั้ง แลวเลือก Deploy
การทดสอบ Web Service
1. คลิ๊กขวาที่ TaxService ใน Web Services แลวเลือก Test Web Service ดังแสดงในรูปที่ 1
รูปที่ 1 แสดงวิธีการทดสอบ Web Service ใน Netbeans
2. โปรแกรมจะแสดงหนาจอเพื่อใหเราปอนขอมูลอินพุต ซึ่งคือจํานวนเงินที่ตองการคํานวณภาษี
ในที่นี้จะใสตัวเลขเปน 730000 และกดปุม calculateTax ดังแสดงในรูปที่ 2
13. 13
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 2 แสดงหนาตางสําหรับใหทดสอบเรียก Web Service
3. โปรแกรมจะเรียกใช Web Services และจะแสดงผลลัพธที่ได พรอมทั้งแสดงคา SOAP Request และ
SOAP Response ดังแสดงตัวอยางในรูปที่ 3
14. 14
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 3 แสดงผลลัพธที่ไดจากการเรียกใช Web Service พรอมทั้ง SOAP Request และ SOAP Response
4. หลังจากกด Back กลับมาที่หนาเดิมแลว เราสามารถที่จะดูรายละเอียดของไฟล WSDL ของ Web
Service นี้ได โดยการคลิ๊กเลือกที่ WSDL File ดังแสดงในรูปที่ 4
รูปที่ 4 แสดงการคลิ๊กเพื่อเรียกดูรายละเอียดของไฟล WSDL
15. 15
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
5. โปรแกรมจะทําการเรียก url ชื่อ http://localhost:8080/TaxWSDemo/TaxServiceService?WSDL
และจะไดผลลัพธดังแสดงในรูปที่ 5
รูปที่ 5 แสดงรายละเอียดของ WSDL
6. โปรแกรม Web Service จะถูกติดตั้งบน GlassFish Server 3.1.2 สามารถดูไดจากการคลิ๊กขวาที่
GlassFish Server 3.1.2 ในแทป Services และเลือก View Admin Console ดังแสดงในรูปที่ 6
หรือโดยการเปด Web Browser และเรียก url ที่ http://localhost:4848 โดยมี user เปน admin
และ password เปน adminadmin
รูปที่ 6 แสดงการเรียกดู Admin Console
16. 16
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 3: Axis2 Web Services
แบบฝกหัดนี้เปนการติดตั้ง Axis2 Web Services บน Tomcat Web Server แลัวทดลองพัฒนา Web Service
โดยใชโปรแกรม NetBeans
การติดตั้ง Axis2 บน Tomcat
ขั้นตอนนี้จะเปนการติดตั้งโมดูล Axis2 เพื่อทําให Tomcat เปน Web Service Provider ที่ทํางานภายใต Axis2
Framework โดย Axis2 มีขอดีเหนือ JAX-WS API ในแงที่วา Axis2 มี WS-Security
และสามารถทํางานไดเร็วกวา ซึ่งการพัฒนามีขั้นตอนดังนี้
1. ทําการดาวนโฟล axis2.war จาก http://ws.apache.org/axis2/
2. คัดลอกไฟล axis2.war ภายใตในไดเร็กทอรี่ที่ชื่อ webapps ที่อยูใน CATALINA_BASE ของ Tomcat
3. กรณีที่ไมทราบไดเร็กทอรี่ของ Catalina Base เราสามารถคนหาไดโดยเปดโปรแกรม NetBeans
เลือกหนาตาง Services ขยายโหนด Servers แลวคลิ๊กขวาเลือกคําสั่ง Properties ของ Apache
Tomcat โดยไดอะล็อก Server จะแสดงไดเร็กทอรี่ของ Catalina Base ดังรูปที่ 1
รูปที่ 1 การหาตําแหนงไดเร็กทอรี่ของ Catalina Base
4. จะไดไดเร็กทอรี่ภายใต webapps ดังรูปที่ 2
17. 17
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 2 แสดงโครงสรางไดเร็กทอรี่ของ webapps ภายหลังจากคัดลอกไฟล axis2.war
5. ทําการ Start/Restart Tomcat แลวทดสอบ Axis2 โดยการเลือก url ที่ชื่อ http://localhost:8084/axis2/
จะไดผลลัพธดังรูปที่ 3 โดยภายใน Services จะมีเว็บเซอรวิสตัวอยางชื่อ Version รันอยู
รูปที่ 3 หนาจอของ Tomcat Axis2
19. 19
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 4 การ Config คาสําหรับ Tomcat Axis2
การพัฒนา Axis2 Web Service
ขั้นตอนนี้จะเปนการพัฒนา Axis2 Web Service โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project..
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java และ Java Application แลวกด Next
3. กําหนด Project Name เปน Axis2Demo แลวเลือก Project Location เปน Director
ที่เราตองการจะเก็บไฟลไว แลวกด Finish
4. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด Axis2Demo จากนั้นเลือกคําสั่ง New > Other
5. ในไดอะล็อก New File ใหเลือก Categories เปน Web Services และ Axis2 Service from Java
แลวกด Next
20. 20
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
6. เลือกชอง Create Empty Web Service แลวกด Next
7. ในไดอะล็อกถัดไป กําหนดชื่อ Class Name เปน TaxServices และ Package เปน ws แลวกด
Finish
8. ปรับปรุง source code เพื่อเพิ่มเมธอดที่ชื่อ calculateTax ดังนี้
package ws;
public class TaxServices {
public double calculateTax(double income) {
return 0.1 * income;
}
}
9. ทําการ Deploy Web Services โดยการคลิ๊กขวาที่โหนด Axis Web Services ที่อยูภายใตโหนด
Axis2Demo แลวเลือกคําสั่ง Deploy to Server ดังรูปที่ 5
รูปที่ 5 แสดงการ Deploy Axis Web Services to Server
10. ทดสอบเว็บเซอรวิสไดโดยรันโปรแกรม Web Browser และพิมพ URL: http://localhost:8084/axis2/
จากนั้นคลิ๊ก Services จะเห็นเว็บเซอรวิสที่ชื่อ TaxServices อยู ดังรูปที่ 6
21. 21
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 6 แสดง TaxServices ภายใน Services
11. เราสามารถที่จะทดสอบเว็บเซอรวิสนี้โดยใชโปรแกรมเชน Soap UI โดยอางอิงถึง WSDL ที่
http://localhost:8084/axis2/services/TaxServices?wsdl ได
12. โดยหลังจากการดับเบิ้ลคลิ๊กที่ Request1 และใสคา income เสร็จแลว จะตองทําการเปลี่ยน port จาก
8080 เปน 8084 กอนการรัน ดังแสดงในรูปที่ 7 และ 8
รูปที่ 7 แสดงการเลือก edit current.. เพื่อเปลี่ยน Port ของ axis2
รูปที่ 8 แสดงการเปลี่ยน Port ของ axis2 จาก 8080 เปน 8084 กอนการรัน
22. 22
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 4: การเชื่อมตอกับ MySQL Database
แบบฝกหัดนี้เปนการเริ่มตนใชงาน Database Tool เพื่อเชื่อมตอกับ Table test ในฐานขอมูล MySQL
สําหรับเปนตัวชวยใหทํางานไดเร็วขึ้น เชนปกติถาจะ create table ก็ตองเขียน SQL แต Tool นี้มี GUI มาชวย
ทําใหลดขอผิดพลาด และ สะดวกในการทํางานมากขึ้น ทั้งนี้การทําแบบฝกหัดนี้จะตองมีการ download
และติดตั้งโปรแกรม MySQL และ MySQL Workbench โดยสามารถทําการ download ไดจากเว็บ
http://dev.mysql.com/
การเชื่อมตอ MySQL โดยโปรแกรม MySQL Workbench
1. ใหเปดโปรแกรม MySQL Workbench ดังรูปที่ 1 จากนั้นทําตามขั้นตอนดังนี้
รูปที่ 1 การเรียกใชงาน Program MySQL Workbench
2. ดับเบิ้ลคลิ๊กที่ Connection Name ใส Password ที่กําหนดไวในตอนติดตั้งโปรแกรม
MySQLซึ่งจะมีคาเปน root ดังรูปที่ 2
รูปที่ 2 การแสดงการเชื่อมตอ Connection เพื่อเขาไปจัดการ Database
23. 23
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
การสรางตาราง books
ขั้นตอนนี้จะเปนการสราง Table ที่ชื่อ books โดยใหอยูภายใต Schema ที่ชื่อ test โดย Table
นี้กําหนดใหมี Column ตางๆ ดังตารางที่ 1
ตารางที่ 1 Table books
ชื่อColumn ชนิด ขนาด Primary Key Index
isbn varchar 20 Y Y
title varchar 70 - -
author varchar 50 - -
price float - - -
เราจะใชโปรแกรม MySQL WorkBench ในการที่จะสราง Tableนี้โดยมีขั้นตอนตางๆ ดังนี้
1. คลิ๊กที่ icon ชื่อAdd Table... แลวใสชื่อtable และ ชื่อ field ตามตารางที่ 1 ดังรูปที่ 3 แลวกดปุม Apply
24. 24
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 3 การเลือกคําสั่งสรางตาราง
2. หรือใชคําสั่ง SQL Statement ก็ได โดยนําไปใสที่หนาตาง Query1 แลว กด icon
สายฟาสีเหลืองเพื่อรัน
CREATE TABLE BOOKS (
ISBN VARCHAR(20) NOT NULL ,
TITLE VARCHAR(70) NULL ,
AUTHOR VARCHAR(50) NULL ,
PRICE FLOAT NULL ,
PRIMARY KEY (ISBN) );
3. เปด Tables books จะเห็น Column ตางๆ ดังรูปที่ 4
25. 25
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 4 ผลลัพธจากการสรางตาราง
การใชคําสั่ง SQL ใน MySQL WorkBench
ภายหลังจากที่มีการสราง Table ที่ชื่อ books เราสามารถใชคําสั่ง SQL เพื่อที่จะติดตอกับฐานขอมูล
ในที่นี้จะแสดงการเพิ่มขอมูลลงใน Table โดยมีขั้นตอนตางๆดังนี้
1. ดับเบิ้ลคลิ๊กที่ Table books ดานขวา จะได SQL Editor ใหปอนคําสั่ง SQL เปน
INSERT INTO books VALUES ('123', 'JAVA', 'Numnonda', 2500.00);
INSERT INTO books VALUES ('456', 'SOA', 'Numnonda', 3000.00) ;
31. 31
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 4 แสดงการ Restart GlassFish Server
การสราง Enterprise Application Project
เราจะกําหนดใหโปรแกรมนี้เปนโปรแกม Enterprise Application ซึ่งมีทั้ง EJB Module และ Web
Module ขั้นตอนแรกจะเปนการสราง Project ใหมขึ้นมาใน NetBeans ซึ่งมีขั้นตอนดังนี้
1. เลือกเมนู File => New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java EE และเลือก Enterprise เปน Enterprise
Application แลวกด Next
3. กําหนด Project Name เปน BookApp แลวเลือก Project Location เปน folder ที่เราตองการจะเก็บ
project ไว กด Next
4. จากนั้นเลือก Server เปน GlassFish Server 3.1.2 โดยกําหนด Jave EE Version: เปน Java EE 6
และใหเลือกชอง Create EJB Module: และ Create Web Application Module: ดังแสดงในรูปที่ 5
32. 32
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 5 แสดงการสรางโปรเจ็ค Enterprise Application
5. กด Finish
การพัฒนาโปรแกรม Entity Class
โปรแกรม EJB 3.0 จะใชคลาสประเภท Entity เพื่อเปนออปเจ็คที่สอดคลองกับตารางในฐานขอมูล
ในที่นี้เราจะสราง Entity Class ที่ชื่อ Books.java จากตารางที่ชื่อ books ซึ่งมีการสรางมากอนแลว
โดยมีขั้นตอนการพัฒนาโปรแกรมนี้มีดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BookApp-ejb จากนั้นเลือกคําสั่ง New > Other...
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Entity
Classes from Database แลวกด Next
3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: เปน New Data Source…
โดยใสชื่อ JNDI Name: jdbc/test และเลือกเชื่อมตอไปยังฐานขอมูล test ดังแสดงในรูปที่ 6
33. 33
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 6 แสดงการสราง Data Source
4. กด OK จากนั้นกด Add All >> เพื่อเลือกตารางที่ตองการนํามาสราง Entity Class ซึ่งจะได Selected
Tables: เปน books กด Next ดังแสดงในรูปที่ 7
34. 34
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 7 แสดงการสราง Entity Class จาก Data Source
5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity และใหตรวจสอบวา Crate Persistence Unit
ไดถูกเลือกไว ซึ่ง Persistence Unit จะเปนตัวกําหนดให EJB Container ของ Application Server
รูไดวา Entity Class จะถูกควบคุมดวย Entity Manager ตัวใด และเปนตัวกําหนด Data Source
ที่จะใชกับ Entity Manager นี้
6. ไมจําเปนตองเปลี่ยนคาใดๆ จากนั้นกด Next ดังแสดงในรูปที่ 8
35. 35
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 8 แสดงการสราง Entity Class
7. เมื่อกด Finish โปรแกรมจะสรางไฟลที่ชื่อ persistence.xml ใน package: Configuration Files
และสรางไฟลที่ชื่อ Books.java ใน package: entity
การพัฒนาโปรแกรม Session Bean
โปรแกรม EJB จะใช Session Bean ในการติดตอกับโปรแกรมอื่นๆ ภายนอก EJB Container
โดยโปรแกรมเหลานั้นจะติดตอกับ Entity Class โดยผาน Session Bean แบบฝกหัดนี้จะสราง Session Bean
ที่ชื่อ BooksFacade.java ที่มี Business method ในการสราง แกไข ลบ และเรียกดูขอมูลของตารางที่ชื่อ
books โดยใช Entity Class ที่ชื่อ Books.java และ EntityManager โดยจะมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BookApp-ejb จากนั้นเลือกคําสั่ง New > Other…
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Session
Beans for Entity Classes แลวกด Next
3. จากนั้นกด Add All >> แลวกด Next
4. ในไดอะล็อกถัดไปใหระบุ Package: เปน sb และเลือก local ดังแสดงในรูปที่ 9 แลวกด Finish
36. 36
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 9 แสดงการสราง Session Bean
5. โปรแกรมจะสรางไฟลที่ชื่อ BooksFacade.java และ BooksFacadeLocal.java ใน package ที่ชื่อ sb
การพัฒนาโปรแกรม Web Application
โปรแกรม EJB จะเปนสวนของ Business Logic เทานั้น การพัฒนาสวนของ Presentation
จะตองใชโปรแกรม Web Application หรือ Java SE แบบฝกหัดนี้จะพัฒนาโปรแกรม Web Application
เพื่อใหผูใชปอน isbn ของหนังสือในหนาเว็บ findBook.html แลวโปรแกรมจะเรียกโปรแกรม Servlet ที่ชื่อ
ShowBook.java เพื่อแสดงรายละเอียดของหนังสือดังกลาวออกมา โดยมีขั้นตอนการพัฒนาดังนี้
1. การพัฒนาโปรแกรม findBook.html
โปรแกรม findBook.html เปนเว็บเพจที่ใชแสดงฟอรมสําหรับใหผูใชปอน isbn ของหนังสือ
โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BookApp-war จากนั้นเลือกคําสั่ง New > Other…
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Web เลือก File Types: เปน HTML แลวกด Next
3. กําหนด HTML File Name: เปน findBook แลวกด Finish
4. เขียน source code ของไฟล findBook.html ตาม Listing ที่ 1 โดยเราสามารถที่จะลาก icon ประเภท
HTML Forms ที่อยูในหนาตาง Palette เพื่อสามารถใหเขียนโปรแกรมไดงายขึ้น
37. 37
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Listing 1 โปรแกรม findBook.html
<html>
<head>
<title></title>
</head>
<body>
<form action="ShowBook" method="POST">
<h2>Search Book from ISBN </h2>
Enter ISBN <input type="text" name="isbn" value="" />
<input type="submit" value="Find" />
</form>
</body>
</html>
2. การพัฒนาโปรแกรม ShowBook.java
โปรแกรม ShowBook.java เปนโปรแกรม Java Servlet ที่จะอานหมายเลข ISBN
ที่ผูใชปอนมาจากหนา findBook.html และจะเรียกเมธอด find() ของ session bean ที่ชื่อ BooksFacade
เพื่อแสดงรายละเอียดของหนังสือ โดยมีขั้นตอนการพัฒนาโปรแกรมดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BookApp-war จากนั้นเลือกคําสั่ง New > Other...
2. ในไดอะล็อก New Fileใหเลือก Categories ที่ชื่อ Web เลือก File Types: เปน Servlet แลวกด Next
3. กําหนด File Name: เปน ShowBook และ Package: เปน servlets กด Next แลวกด Finish
4. ในหนาตาง Editor ใหคลิ๊กขวาภายในเมธอด processRequest แลวเลือก Insert Code… > Call
Enterprise Bean…
5. ในไดอะล็อก Call Enterprise Bean เลือก BooksFacade ที่อยูใน BookApp-ejb แลวกด OK
6. โปรแกรมจะเพิ่ม Source code ในการเรียก EJB ดังนี้
@EJB
private BooksFacadeLocal booksFacade;
7. ใหปรับปรุง 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>Servlet ShowBook</title>");
38. 38
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
out.println("</head>");
out.println("<body>");
String isbn = request.getParameter("isbn");
Books book = booksFacade.find(isbn);
out.println("Title: " + book.getTitle()+ "<BR>");
out.println("Author: " + book.getAuthor() + "<BR>");
out.println("Price: " + book.getPrice() + "<BR>");
out.println("</body>");
out.println("</html>");
out.close();
}
9. คลิ๊กขวาแลวเลือก Fix Imports เพื่อทําการ import คลาสตางๆ แลว Save โปรแกรม
การทดสอบโปรแกรม
1. ทําการคลิ๊กขวาตรง BookApp เพื่อทําการ Clean and Build
2. Run โปรแกรม BookApp (ไมใช BookApp-ejb หรือ BookApp-war)
3. เลือก URL ของ Web Browser เปน http://localhost:8080/BookApp-war/findBook.html
ใหเราทดลองใสขอมูล
4. เมื่อกดปุม Find โปรแกรมก็จะแสดงรายละเอียดของหนังสือดังแสดงในรูปที่ 10
รูปที่ 10 แสดงตัวอยางผลลัพธที่ไดจากการรันโปรแกรม
การพัฒนา Java Web Services จาก Session Bean
1. เราสามารถเพิ่มชองทางการใหบริการของ Stateless Session Bean ไปเปน Web Services
ไดโดยการแกไขไฟล BooksFacade.java ที่อยูในโหนด BookApp-ejb ดังนี้
39. 39
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
@WebService
@Stateless
public class BooksFacade extends AbstractFacade<Books> implements
BooksFacadeLocal {
@PersistenceContext(unitName = "BookApp-ejbPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public BooksFacade() {
super(Books.class);
}
@WebMethod
public Books findBookDetailsByIsbn(String isbn) {
Query query =
em.createNamedQuery("Books.findByIsbn").setParameter("isbn", isbn);
return (Books) query.getSingleResult();
}
}
2. คลิ๊กขวาแลวเลือก Fix Imports เพื่อทําการ import คลาสตางๆ (javax.jws.WebService,
javax.jws.WebMethod และ javax.persistence.Query) แลว Save โปรแกรม
3. ลองทดสอบเรียกใช Web Service จากใน NetBeans (โดยการใช Test Web Service และเขียน code)
และโดยใช Soap UI
4. ใหทดลองเพิ่มเมธอดที่ตองการใหบริการเปน Web Services เชน findBookDetailsByTitle
40. 40
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 6: Java Web Services from Session Bean (2)
แบบฝกหัดในบทนี้เปนการพัฒนาโปรแกรม Web Services สําหรับ Java EE ซึ่งจะเปนการพัฒนาบน
Server ที่รันบน Java EE โดยชุดคําสั่ง JAX-WS ซึ่งในกรณีนี้จะแสดงขั้นตอนการใช NetBeans สราง Web
Services Method ที่ชื่อ findEmployeeDetails จาก Session Bean โดย Service นี้จะเปนการคนหาขอมูลของ
employee จาก table ที่ชื่อ employees และ departments ในฐานขอมูล MySQL ซึ่งมีขั้นตอนในการพัฒนา
โปรแกรมดังนี้
1. สราง Table ที่ชื่อ employees และ departments
2. สราง EJB Module
3. พัฒนาโปรแกรม Entity Class
4. พัฒนาโปรแกรม Session Bean
5. สราง Web Application
1. การสราง Table ที่ชื่อ employees และ departments
ขั้นตอนแรกจะเปนการสราง table โดยใชโปรแกรม NetBeans ใหทําการคัดลอก script ตอไปนี้
แลวใสใน SQL Command Editor ของ NetBeans จากนั้นใหทําการ Run SQL ดังแสดงในรูปที่ 1
create table `test`.DEPARTMENTS
(
DEPARTMENT_ID INT not null primary key,
DEPARTMENT_NAME VARCHAR(30) not null
);
insert into departments values(90,'Executive');
create table `test`.EMPLOYEES
(
EMPLOYEE_ID INT not null primary key,
FIRST_NAME VARCHAR(20),
LAST_NAME VARCHAR(25) not null,
DEPARTMENT_ID INT,
FOREIGN KEY (DEPARTMENT_ID) REFERENCES DEPARTMENTS(DEPARTMENT_ID) ON UPDATE
CASCADE
);
insert into employees values(100,'Steven','King',90);
insert into employees values(101,'Neena','Kochhar',90);
41. 41
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 1 แสดงการสราง Run SQL เพื่อสรางตาราง
โดยเมื่อตรวจสอบดูใน tables ของ test จะพบ table ที่ชื่อ employees และ departments ดังแสดงในรูปที่ 2
รูปที่ 2 แสดงตารางที่ถูกสรางขึ้นมา
การสราง EJB Module
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java EE และเลือก Enterprise เปน EJB
Module ดังแสดงในรูปที่ 3 แลวกด Next
42. 42
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 3 แสดงการสราง EJB Module
3. กําหนด Project Name เปน EmployeeWS แลวเลือก Project Location เปน folder
ที่เราตองการจะเก็บไฟลไว แลวกด Next
4. เลือก Server เปน GlassFish Server 3.1.2 กําหนด Jave EE 6 แลวกด Finish
การพัฒนา Employees and Departments Entity Classes
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด EmployeeWS จากนั้นเลือกคําสั่ง New > Other
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Entity Classes
from Database แลวกด Next
3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: เปน jdbc/test
เพื่อเลือกการเชื่อมตอไปยังตาราง test ในฐานขอมูล MySQL
43. 43
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. จากนั้นใหเลือกไปที่ตาราง EMPLOYEES แลวกด Add > และคงการเลือก Include Related Tables
ไวตาราง EMPLOYEES และ DEPARTMENTS จะถูกยายมาอยูใน Selected Tables: ดังแสดงในรูปที่
4 แลวกด Next
รูปที่ 4 แสดงการสราง Entity Class สําหรับ EMPLOYEES และ DEPARTMENTS
5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity ดังแสดงในรูปที่ 5 จากนั้นกด Next และ Finish
44. 44
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 5 แสดงการระบุ Package สําหรับ Entity Classs ที่สรางขึ้นมา
การพัฒนาโปรแกรม Session Bean
โปรแกรมNetBeans จะมี Wizard เพื่อสราง Session Bean จาก Entity Class เพื่อสราง Business method
ในการสราง แกไข ลบ และเรียกดูขอมูลของ tableที่สอดคลองกับ Entity Class โดยจะมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด EmployeeWS จากนั้นเลือกคําสั่ง New > Other...
2. ในไดอะล็อก New Fileใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Session
Beans for Entity Classes แลวกด Next
3. ในไดอะล็อก New Session Beans for Entity Classes กด Add All >> แลวคงการเลือก Include
Referenced Class ไว ดังแสดงในรูปที่ 6 จากนั้นกด Next
45. 45
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 6 แสดงการสราง Session Beans For Entity Classes
4. ในไดอะล็อกถัดไปใหระบุ Package: เปน sb และเลือก local ดังแสดงในรูปที่ 7 แลวกด Finish
รูปที่ 7 แสดงการสราง Session Bean
46. 46
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
ซึ่งเราจะได Entity Class ที่ชื่อ Employees, Departments และ Session Bean ที่ชื่อ AbstractFacade,
EmployeesFacade, EmployeesFacadeLocal โดยเมื่อทําการ Clean and Build โปรเจ็คแลว
จะมีโครงสรางของโปรเจ็ค ดังแสดงในรูปที่ 8
รูปที่ 8 แสดงโครงสรางของโปรเจ็ค EmployeeWS ที่ถูกสรางขึ้น
การพัฒนา Web Service Methods: findEmployeeDetails
ขั้นตอนนี้จะสราง Web Services Method ที่ชื่อ findEmployeeDetails ใน Session Bean ที่ชื่อ
EmployeesFacade.java ที่พัฒนาจากแบบฝกหัด Enterprise Java Bean โดย Services นี้จะคืนคา
first_name, last_name และ department_name ของ employee โดยการคนหาจาก employee_id
ที่ปอนเขามา ซึ่งมีขั้นตอนการพัฒนาดังนี้
1. เลือกไฟล EmployeesFacade.java แลวคลิ๊กขวาเลือก Insert Code… > Add Business
Method…จากนั้นใหทําการใสขอมูลดังแสดงในรูปที่ 3
47. 47
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 3 แสดงการเพิ่มเมธอดใน Session Bean
2. เพิ่ม source code โดยเพิ่มคําสั่ง annotation เพื่อประกาศให session bean นี้เปน Web Service
และเมธอด findEmployeeDetails เปน Web Services Method โดยมีคําสั่งดังนี้
@WebService
@Stateless
public class EmployeesFacade extends AbstractFacade<Employees> implements
EmployeesFacadeLocal {
@PersistenceContext(unitName = "EmployeeWSPU")
private EntityManager em;
protected EntityManager getEntityManager() {
return em;
48. 48
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
}
public EmployeesFacade() {
super(Employees.class);
}
@WebMethod
public List<String> findEmployeeDetails(int employee_id) {
ArrayList<String> result = new ArrayList<String>();
Employees employee = em.find(Employees.class, employee_id);
result.add("First name: " + employee.getFirstName());
result.add("Last name: " + employee.getLastName());
Departments department = employee.getDepartmentId();
result.add("Department name: " + department.getDepartmentName());
return result;
}
}
2. คลิ๊กขวาเลือก Fix Imports กด OK แลวกดปุม Save
3. ทําการ Clean and Build และ Deploy Project
4. จากนั้นใหคลิ๊กขวาที่ EmployeeFacade ใน Web Services แลวเลือก Test Web Service
5. กด WSDL File ในหนา Web Browser จากนั้นใหทําการ copy URL ของ WSDL File ไว เชน
http://localhost:8080/EmployeesFacadeService/EmployeesFacade?WSDL
49. 49
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
การพัฒนาโปรแกรม Web Application เพื่อเรียกใช Web Service
ขั้นตอนนี้จะเปนการพัฒนา Web Application บน Apache Tomcat เพื่อเรียกใช Web Service ที่ชื่อ
findEmployeeDetails โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project..
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Web และ Projects เปน Web Application
แลวกด Next
3. กําหนด Project Name เปน EmployeeWSClient จากนั้นเลือก Server เปน Apache Tomcat
7.0.14.0 กําหนด Jave EE Version: เปน Java EE 6 แลวกด Finish
4. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด EmployeeWSClient จากนั้นเลือกคําสั่ง New > Other..
5. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Web Services เลือก File Types: เปน Web
Service Client แลวกด Next
6. ในไดอะล็อก New Web Service Client เลือก WSDL URL: และใสคา
http://localhost:8080/EmployeesFacadeService/EmployeesFacade?WSDL
7. กด Finish โปรแกรมจะแสดง Web Service Reference โดยมี Service ชื่อ EmployeesFacade
8. คลิ๊กขวาที่โหนด EmployeeWSClient แลวเลือก New > Servlet..
9. กําหนด Servlet Name: เปน EmployeeServlet ใสใน Package: servlets กด Next
10. กําหนด URL Pattern(s): เปน /findEmployee แลวกด Finish
11. ในหนาตาง Projects ลากโหนด findEmployeeDetails ลงในไฟล EmployeeServlet.java ของหนาตาง
Editor โปรแกรมจะเพิ่ม source code ใหอัตโนมัติ ใหปรับปรุง source code ในสวนที่เรียกใช Web
Service ดังนี้
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String id = request.getParameter("id");
int employee_id = Integer.parseInt(id);
List<String> result = findEmployeeDetails(employee_id);
50. 50
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
for (String s : result) {
out.print(s + "<BR>");
}
} finally {
out.close();
}
}
private static java.util.List<java.lang.String>
findEmployeeDetails(int arg0) {
sb.EmployeesFacadeService service = new
sb.EmployeesFacadeService();
sb.EmployeesFacade port = service.getEmployeesFacadePort();
return port.findEmployeeDetails(arg0);
}
12. กดปุม Save
การทดสอบโปรแกรม
1. ทําการ Build และ Deploy โปรเจ็ค EmployeeWSClient
2. Run โปรแกรม EmployeeServlet โดยใหใสคาของ URI เปน /findEmployee?id=100 ดังแสดงในรูปที่
4 จะไดผลลัพธดังแสดงในรูปที่ 5
51. 51
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 4 แสดงการกําหนดคา id
รูปที่ 5 แสดงผลลัพธของ employee id=100
3. ทดลองเปลี่ยน URL ของ Web Browser เปน
http://localhost:8084/EmployeeWSClient/findEmployee?id=101 จะไดผลลัพธดังแสดงในรูปที่ 6
52. 52
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 6 แสดงแสดงผลลัพธของ employee id=101
4. อาจทําการสรางไฟล findEmployee.html เพื่อรับคา employee id จากผูใช โดยกําหนดให
findEmployee.html เรียกใช EmployeeServlet ซึ่งจะเรียกใช Web Service เพื่อแสดงผลลัพธอีกที
53. 53
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 7: RESTful Web Services
แบบฝกหัดในบทนี้เปนการพัฒนาโปรแกรม RESTful Web Services โดยใชชุดคําสั่ง JAX-RS
เพื่อสราง Web Services ที่จะเรียกดูขอมูลจากฐานขอมูล MySQL ผานชุดคําสั่ง Java Persistence API (JPA)
ขั้นตอนในการพัฒนาโปรแกรม
1. สราง Web Application Project
2. พัฒนา Entity Class
3. พัฒนา RESTful Web Service จาก Entity Class
4. ทดสอบ RESTful Web Service จาก Entity Class
1. การสราง Web Application Project
เราจะกําหนดใหโปรแกรมนี้เปนโปรแกม Web Application ขั้นตอนแรกจะเปนการสราง Project
ใหมขึ้นมาใน NetBeans ซึ่งมีขั้นตอนดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java Web และเลือก Project เปน Web
Application แลวกด Next
3. กําหนด Project Name เปน RestfulWS แลวเลือก Project Location เปน Directory
ที่เราตองการจะเก็บ Project ไว กด Next
4. จากนั้นเลือก Server เปน GlassFish Server 3.1.2 และ Java EE 6 Web แลวกด Finish
2. การพัฒนา Entity Class
ขั้นตอนนี้จะเปนการสราง Entity Class ที่ชื่อ Employees.java
ซึ่งจะเปนออปเจ็คที่สอดคลองกับตารางที่ชื่อ employees ใน Oracle โดยมีขั้นตอนการพัฒนาโปรแกรมดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด RestfulWS จากนั้นเลือกคําสั่ง New > Other
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Entity
Classes from Database แลวกด Next
3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: เปน jdbc/test
54. 54
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. กด OK จากนั้นเลือกเฉพาะ books แลวกด Add >
5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity และกด Finish
3. การพัฒนา Restful Web Service จาก Entity Class
ขั้นตอนนี้จะเปนการพัฒนา Restful Web Services เพื่อใหสามารถติดตอกับฐานขอมูลโดยผาน Entity Class
ที่พัฒนาขึ้นได โดยจะมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด RestfulWS จากนั้นเลือกคําสั่ง New > Other
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Web Services เลือก File Types: เปน RESTful
Web Services from Entity Classes แลวกด Next
4. ในไดอะล็อก New RESTful Web Services from Entity Class กด Add All >>
จะไดผลลัพธดังแสดงในรูปที่ 1 แลวกด Next จากนั้นกด Finish
รูปที่ 1 การเลือก Entity Class สําหรับ RESTful Web Service
55. 55
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. การทดสอบ RESTful Web Service จาก Entity Class
ขั้นตอนนี้จะเปนการทดสอบ RESTful Web Services ที่พัฒนาขึ้นโดยจะมีขั้นตอนดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด RestfulWS จากนั้นเลือกคําสั่ง Test Restful Web
Services
2. โปรแกรม Browser จะแสดง uri ของ RESTful Web Services ใหคลิ๊กที่โหนด entity.books
และคลิ๊กปุม Test จะไดผลลัพธดังรูปที่ 2
รูปที่ 2 แสดงผลลัพธของหนังสือทั้งหมดที่มีอยู
56. 56
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
3. ใหคลิ๊กที่ {id} และทดลองปอนขอมูล id เปน 111 แลวกดปุม Test จะไดผลลัพธตัวอยางดังรูปที่ 3
รูปที่ 3 แสดงผลลัพธของหนังสือที่มี id (isbn) เทากับ 111
4. ทดลองเปลี่ยน methodเปน DELETE เพื่อทดลองทําการลบขอมูลออกจากตาราง books
57. 57
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 8: Google Map Web Services
แบบฝกหัดในบทนี้เปนตัวอยางการพัฒนา Web Services และใช Web Application
เรียกเพื่อแสดงรายละเอียดของโรงพยาบาลที่เก็บที่อยูในฐานขอมูล ซึ่งมีขั้นตอนในการพัฒนาโปรแกรมดังนี้
1. สรางฐานขอมูลโรงพยาบาล
2. สราง Enterprise Application Project
3. พัฒนาโปรแกรม Entity Class
4. พัฒนาโปรแกรม BkkHospitalFacade (Session Bean)
5. พัฒนาโปรแกรม HospitalSelector.java
6. พัฒนาโปรแกรม DisplayLocation.java
1. การสรางฐานขอมูลโรงพยาบาล
ขั้นตอนแรกจะเปนการสราง table และเตรียมขอมูลเพื่อใชในแบบฝกหัด โดยใชโปรแกรม NetBeans
เพื่อสราง Table ที่ชื่อ bkk_hospital ในฐานขอมูล Oracle โดยใหทําการรันไฟล bkk_hospital.sql
เพื่อสรางตารางและใสขอมูลลงในตารางดังนี้
CREATE TABLE `test`.`bkk_hospital` (
`hospital_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(60) NOT NULL,
`address` VARCHAR(100) NOT NULL,
`city` VARCHAR(30) NOT NULL,
`zipcode` VARCHAR(5) NOT NULL,
PRIMARY KEY(`hospital_id`)
) ENGINE = InnoDB;
58. 58
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
INSERT INTO bkk_hospital(name,address,city,zipcode) VALUES('Siriraj Hospital',
'2 Prannok road Siriraj Bangkoknoi', 'Bangkok', '10700');
INSERT INTO bkk_hospital(name,address,city,zipcode) VALUES('Vibhavadi Hospital',
'51/3 Ngamwongwan Road Ladyao Jatujak', 'Bangkok', '10900');
INSERT INTO bkk_hospital(name,address,city,zipcode) VALUES('Rajavithi Hospital',
'Phaya Thai Road, Phaya Thai', 'Bangkok', '10400');
2. การสราง Enterprise Application Project
แบบฝกหัดนี้จะสราง Project ที่เปน Enterprise Application โดยมี Entity Class ที่ชื่อ BkkHospital
เพื่อทํา ORM (Obeject Relational Mapping) กับ table ที่ชื่อ bkk_hospital และมีโปรแกรม Java Servlet
ในการแสดงรายชื่อโรงพยาบาลที่อยูในฐานขอมูลใหผูใชเลือก เพื่อแสดงตําแหนงของโรงพยาบาลจากใน
Google Map โดยมีขั้นตอนการสรางโปรเจ็คดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java EE และเลือก Projects เปน Enterprise
Application Project แลวกด Next
3. กําหนด Project Name: เปน BkkHospitalGoogleMap แลวเลือก Project Location: เปน Directory
ที่เราตองการจะเก็บ Project ไว จากนั้นเลือก Server เปน GlassFish Server 3.1.2 แลวกด Finish
3. การพัฒนาโปรแกรม Entity Class
ขั้นตอนนี้จะเปนการสราง Entity Class จาก table ที่ชื่อ bkk_hospital ซึ่งมีการสรางมากอนแลว
โดยมีขั้นตอนการพัฒนาโปรแกรมดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap จากนั้นเลือกคําสั่ง New >
Other
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Entity
Classes from Database แลวกด Next
3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: jdbc/test
4. เลือก bkk_hospital จากนั้นกด Add เพื่อเลือกใหเปน Selected Tables: แลวกด Next
5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity แลวกด Finish
59. 59
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. การพัฒนาโปรแกรม BkkHospitalFacade (Session Bean)
โปรแกรม BkkHospitalFacade จะเปน Session Bean เพื่อสราง Business method ในการสราง แกไข
ลบ และเรียกดูขอมูลของ table ที่สอดคลองกับ Entity Class โดยจะมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap-ejb จากนั้นเลือกคําสั่ง New
> Other
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Session
Beans for Entity Classes แลวกด Next
3. ในไดอะล็อก New Session Beans for Entity Classes กด Add All > > แลวกด Next
4. ในไดอะล็อกถัดไปใหระบุ Package: เปน sb สวนคาอื่นๆ เปนตามที่ตั้งไว แลวกด Finish
5. การพัฒนาโปรแกรม HospitalSelector.java
โปรแกรม HospitalSelector.java เปนโปรแกรมจาวา Servlet เพื่อแสดงรายชื่อโรงพยาบาลที่ถูกจัดเก็บ
อยูในฐานขอมูล โดยจะแสดงในรูปของ radio เพื่อใหผูใชเลือก และเมื่อผูใชเลือกโรงพยาบาลแลวโปรแกรมนี้
จะเรียกใชโปรแกรม Servlet ที่ชื่อ DisplayLocation.java เพื่อแสดงตําแหนงของโรงพยาบาลโดยใช Google
Map Web Services
เราสามารถที่จะพัฒนาโปรแกรม HospitalSelector.java ตามขั้นตอนในการพัฒนา Java Servlet ดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap-war จากนั้นเลือกคําสั่ง New
> Other
2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Web เลือก File Types: เปน Servlet แลวกด Next
3. กําหนด Class Name: เปน HospitalSelector และ Package เปน controller แลวกด Finish
4. ในหนาตาง Editor ภายในเมธอด processRequest ใหลบ Comment ทั้งหมดที่อยูภายในเครื่องหมาย
/* … */ ระหวางคําสั่ง try และ finally
5. คลิ๊กขวาระหวางคําสั่ง try และ finally แลวเลือก Insert Code จากนั้นใหเลือก Call Enterprise Bean
แลวเลือก BkkHospitalFacade ที่อยูใน BkkHospitalGoogleMap-ejb แลวกด OK
6. เพิ่มเติม source code ใหเปนดังนี้
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
61. 61
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
6. การพัฒนาโปรแกรม DisplayLocation.java
โปรแกรม DisplayLocation.java เปนโปรแกรม Servlet ที่เรียกใชเว็บเซอรวิสของ Google Map
เพื่อแสดงแผนที่ของโรงพยาบาลที่เลือกจาก HospitalSelector.java โดยมีขั้นตอนการพัฒนาโปรแกรมดังนี้
1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap-war จากนั้นเลือกคําสั่ง New
> Other
2. ในไดอะล็อก New Fileใหเลือก Categories ที่ชื่อ Web เลือก File Types: เปน Servlet แลวกด Next
3. กําหนด Class Name: เปน DisplayLocation และเลือก Package เปน controller แลวกด Finish
4. ในหนาตาง Editor คลิ๊กขวาภายในเมธอด processRequest() แลวเลือกคําสั่ง Insert Code.. > Call
Enterprise Bean ...แลวเลือก BkkHospitalFacade ที่อยูใน BkkHospitalGoogleMap-ejb
5. เลือกหนาตาง Services แลวขยายโหนด Web Services > Google > Map Service
6. ลากเซอรวิส getGoogleMap มาใสไวในหนาตาง Editor ที่แสดง source code ของไฟล
DisplayLocation.java แลวแกไข source code ในเมธอด processRequest() ดังนี้
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
Object id = (Object) new
Integer(request.getParameter("hospital_id"));
BkkHospital hospital = bkkHospitalFacade.find(id);
String address = hospital.getName() + ", " +
hospital.getCity();
java.lang.Integer zoom = 15;
String iframe = "false";
out.println("<h1>Google Map for " + hospital.getName() +
"</h1>");
RestResponse result = GoogleMapService.getGoogleMap(address,
zoom, iframe);
out.println(result.getDataAsString());
} finally {
out.close();
}
62. 62
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
7. โปรแกรมนี้จะเรียกใชเว็บเซอรวิสของ Google Map ซึ่งเราจะตองทําการลงทะเบียนที่ url ที่ชื่อ
http://code.google.com/apis/maps/signup.html โดยกําหนดคา My web site URL เปน
http://localhost:8080 แลวกดปุม Generate API Key
8. ทําการก็อบปคา API Key ที่ไดไปใสในไพลที่ชื่อ googlemapservices.properties ที่อยูภายในโหนด
BkkHospitalGoogleMap-war > Source Packages > org.netbeans.saas.google ดังตัวอยางเชน
api_key=ABQIAAAAMB8Fi4WQk4tMcbmiA9JGFhTwM0brOpm-
All5BF6PoaKBxRWWERSQ1U63ApJ18ThqyosJ6592jq20Bg
การทดสอบโปรแกรม
1. คลิ๊กขวาที่ BkkHospitalGoogleMap เพื่อทําการ Build และ Deploy
2. คลิ๊กขวาที่ BkkHospitalGoogleMap เพื่อทําการ Run
3. พิมพ URL ของ Web Browser เปน http://localhost:8080/BkkHospitalGoogleMap-
war/HospitalSelector และใหเลือกโรงพยาบาลเพื่อดูตําแหนงจากใน Google Map ดังแสดงในรูปที่ 2
63. 63
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 2 ผลลัพธในการแสดงตําแหนงของโรงพยาบาลจากใน Google Map
64. 64
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 9: การพัฒนาโปรแกรมเว็บเพื่อติดตอฐานขอมูล
MongoDB
แบบฝกหัดนี้จะเปนการพัฒนาโปรแกรม Web Application โดยใช Java Servlet เพื่อเชื่อมตอกับ
ฐานขอมูลที่เปน NoSQL อยาง MongoDB ซึ่งเปนฐานขอมูลที่เก็บขอมูลแบบ Document ในรูปแบบของ JSON
และมีความสามารถในการเก็บขอมูลขนาดใหญได
ขั้นตอนในการพัฒนาโปรแกรม
1. ติดตั้ง MongoDB
2. ทดลองใช MongoDB
3. เขียนโปรแกรม Java Servlet เพื่อเชื่อมตอกับ MongoDB
1. การติดตั้ง MongoDB
โปรแกรมฐานขอมูล MongoDB สามารถทํางานในระบบปฎิบัติการที่หลากหลายทั้ง Windows, Mac
OS หรือ Linux สําหรับบนระบบปฎิบัติการ Windows สามารถติดตั้งไดโดยการดาวนโหลดไฟล Binary
จากเว็บไซต http://www.mongodb.org/downloads ซึ่งเมื่อทําการดาวนโหลดไฟลดังกลาวแลว ใหทําการ unzip
เก็บไฟลไวในไดเร็กทอรี่ที่ตองการ โดยเราจะมีไฟลตางๆ ดังรูปที่ 1
65. 65
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 1 ไฟลไบนารี่ตางๆ ของ MongoDB
ซึ่งไฟลที่สําคัญก็คือ
• mongod.exe ที่เปน Database Server
• mongo.exe ที่เปนหนาจอของ admin
โดย Default MongoDB จะเก็บขอมูลไวที่ไดเร็กทอรี่ datadb ซึ่งเราจะตองไปสรางไดเร็กทอรี่ดังกลาว
ภายใต Drive C
2. การทดลองใช MongoDB
เราสามารถที่จะทดลองการใชงาน MongoDB โดยการเปดโปรแกรม Mongo.exe ซึ่งก็จะเปนโปรแกรม
command shell ของ administrator และโดย Default ก็จะกําหนดใชฐานขอมูลที่ชื่อ test ซึ่งเราสามารถที่จะ
แสดงฐานขอมูลที่ใชอยูได โดยการพิมพคําสั่ง
> db