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
72. 72
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 10: Developing a Simple Synchronous
BPEL Program
แบบฝกหัดนี้เปนการออกแบบและทดสอบโปรแกรมประเภท BPEL เพื่อแสดงตัวอยางการเขียน
Business Process แบบ Synchronous โดยจะมีการใช NetBeans ซึ่งเปนฟรีโปรแกรมประเภท IDE
ในการออกแบบโปรแกรมเพื่อสรางไฟล WSDL และไฟล BPEL และใช GlassFish ซึ่งเปน Open Source
Application Server ที่มาพรอมกับ Open ESB ในการทดสอบโปรแกรม โดยโปรแกรม BPEL Process
ที่จะพัฒนาขึ้นในแบบฝกหัดนี้ เปนธุรกรรมเพื่อทําการคัดลอกขอความ ซึ่งมีขั้นตอนในการพัฒนาโปรแกรมดังนี้
1. พัฒนาโปรเจ็ค HelloBPEL
2. พัฒนาไฟล WSDL
3. พัฒนา BPEL Process
4. พัฒนาโปรเจ็ค Composite Application
1. การพัฒนาโปรเจ็ค HelloBPEL
แบบฝกหัดนี้จะทําการสรางโปรเจ็คสําหรับ Service Oriented Architecture ขึ้นมาใหม
โดยจะมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน SOA และ Projects เปน BPEL Module
แลวกด Next
3. กําหนด Project Name เปน HelloBPEL แลวกด Finish
2. การพัฒนาไฟล WSDL
ขั้นตอนถัดไปเปนการสรางไฟล WSDL สําหรับนิยามเว็บเซอรวิสที่จะใชในโปรเจ็ค
โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects ขยายโหนด HelloBPEL แลวคลิ๊กขวาที่โหนด Process Files
จากนั้นเลือกคําสั่ง New > WSDL Document
2. ในไดอะล็อก New WSDL Documentกําหนด File Name: เปน HelloSample เลือก WSDL Types:
เปน Concrete WSDL Document และเลือก Type: เปน RPC Literal ดังแสดงในรูปที่ 1 จากนั้นกด
Next เพื่อไปหนาถัดไป
73. 73
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 1 แสดงการสราง WSDL Document เปนแบบ SOAP
3. ในสวนของ Input: กําหนด Message Part Name เปน inputType (เมื่อใสขอมูลเสร็จแลว ตองกด
Enter หนึ่งครั้งเสมอ) และสวนของOutput: กําหนด Message Part Name เปน resultType
ซึ่งจะไดไดอะล็อกดังแสดงในรูปที่ 2
74. 74
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 2 แสดงผลลัพธที่ไดจากการกําหนดคาใหกับ WSDL Document
4. กด Next > แลวกด Finish จะไดไฟล HelloSample.wsdl ดังรูปที่ 3
75. 75
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 3 แสดงรายละเอียดของไฟล HelloSample.wsdl
3. การพัฒนา BPEL Process
ขั้นตอนนี้เปนการสรางไฟล BPEL สําหรับนิยาม Business Process ที่จะใชในโปรเจ็ค
โดยมีขั้นตอนการพัฒนาดังนี้
1) การเพิ่ม partner link
ดับเบิ้ลคลิ๊กที่ไฟล helloBPEL.bpel แลวลากไอคอน HelloSample.wsdl ในหนาตาง Project
มาไวภายใตหนาตาง design ดังแสดงในรูปที่ 4
รูปที่ 4 แสดงการเพิ่ม PartnerLink เขาไปใน helloBPEL.bpel
78. 78
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 7 แสดงการกําหนดคาของ inputType ไปยัง resultType
3. เมื่อเลือกกลับมาที่แทป Design จะได BPEL Process ดังแสดงในรูปที่ 8
รูปที่ 8 แสดง BPEL Process ของ helloBPEL.pbel
4. กดปุม Save
79. 79
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. การพัฒนาโปรเจ็ค Composite Application
ขั้นตอนนี้เปนการสราง Composite Application เพื่อรัน SampleBPEL บน BPEL Engine
ที่ใชมาตรฐาน JBI โดยมีขั้นตอนดังนี้
1. เลือกเมนู File => New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน SOA และ Projects เปน Composite
Application แลวกด Next
3. กําหนด Project Name เปน HelloApplication แลวกด Finish
4. ใหลากโปรเจค HelloBPEL ที่อยูในหนาตาง Project มาใสใน JBI Modules ที่อยูในหนาตาง Design
ดังแสดงในรูปที่ 9
รูปที่ 9 แสดงเพิ่ม JBI Modules ใน HelloApplication
5. จากนั้นใหทําการคลิ๊กขวาที่ HelloApplication แลวเลือก Clean and Build
จะไดผลลัพธดังแสดงในรูปที่ 10
รูปที่ 10 แสดงผลลัพธที่ไดจากการ Clean and Build โปรเจค HelloApplication
80. 80
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
การทดสอบโปรแกรม
1. คลิ๊กขวาที่โปรเจ็ค HelloApplication แลวเลือก Deploy
2. ในหนาตาง Project เลือกโหนด HelloApplication > Test แลวคลิ๊กขวาเลือก New Test Case
3. ในไดอะล็อก New Test Case ใหกําหนด Test Case Name: เปน TestCase1 แลวกด Next
4. ในหนาถัดไปใหเลือกไฟล WSDL เปน HelloSample.wsdl ที่อยูใน HelloBPEL แลวกด Next
5. ในหนาถัดไปใหเลือก HelloSampleOperation แลวกด Finish
6. หนาตาง Editor จะแสดงไฟล Input.xml ใหแก source code สวน inputType ดังนี้
<inputType>Hello Thana</inputType>
7. เลือกโหนด TestCase1 แลวคลิ๊กขวาเลือก Run
8. จะเห็นผลลัพธปรากฎในไฟล Output.xml ดังแสดงใน Listing ที่ 1 [หมายเหตุการแสดงผลที่เปน Failed
เกิดขึ้นเนื่องจากมีการนําผลลัพธที่ไดไปเปรียบเทียบกับไฟล Output.xml ซึ่งถาไมตรงกัน
ก็จะแสดงผลลัพธเปน Failed ดังนั้นการรันครั้งแรก ซึ่งยังไมมีขอมูลใน Output.xml ใหเปรียบเทียบ
จึงไดผลลัพธเปน Failed แตถาเราเลือก Run ในครั้งถัดไป โดยที่ไมไดเปลี่ยนคาใน Input.xml
จะทําใหไดผลลัพธตรงกับขอมูลใน Output.xml ก็จะไมแสดงผลเปน Failed อีกตอไป
ดังแสดงตัวอยางผลลัพธที่ไดจากการรันในรูปที่ 11
รูปที่ 11 แสดงผลลัพธที่ไดจากการรัน TestCase1
81. 81
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Listing ที่ 1 ผลลัพธที่อยูในไฟล Output.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:HelloSampleOperationResponse
xmlns:m="http://j2ee.netbeans.org/wsdl/HelloBPEL/HelloSample">
<resultType>Hello Thana</resultType>
</m:HelloSampleOperationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
82. 82
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 11: BPEL for Writing to File
แบบฝกหัดนี้เปนการสราง Business Process เพื่อเขียนขอมูลที่ไดรับผูใชงานลงไฟล โดยใชโปรแกรม
BPEL
ขั้นตอนในการพัฒนาโปรแกรม
1. พัฒนาโปรเจ็ค FileBPEL
2. พัฒนาไฟล WSDL สําหรับ SOAPBinding
3. พัฒนาไฟล WSDL สําหรับ FileBinding
4. พัฒนา BPEL Process
5. พัฒนาโปรเจ็ค Composite Application
6. ทดสอบโปรแกรมผาน TestCase
7. ทดสอบโปรแกรมผาน Web Application
1. การพัฒนาโปรเจ็ค FileBPEL
แบบฝกหัดนี้จะทําการสรางโปรเจ็คสําหรับ Service Oriented Architecture ขึ้นมาใหม
โดยจะมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน SOA และ Projects เปน BPEL Module
แลวกด Next
3. กําหนด Project Name เปน FileBPEL แลวกด Finish
2. การพัฒนาไฟล WSDL สําหรับ SOAPBinding
ขั้นตอนถัดไปเปนการสรางไฟล WSDL สําหรับ SOAPBinding สําหรับนิยาม Business Process
ที่จะพัฒนาขึ้น เพื่อใหสามารถเรียกใชเปนเว็บเซอรวิสได โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects คลิ๊กขวาที่โหนด Process Files เลือก New > WSDL Document
2. ในไดอะล็อก New WSDL Document กําหนด File Name: เปน DataIO กําหนด WSDL Type: เปน
Concrete WSDL Document และกําหนด Binding เปน SOAP และ Types เปน RPC Literal
ดังแสดงในรูปที่ 1 แลวกด Next
83. 83
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 1 แสดงการกําหนดคา WSDL Document
3. ในหนาถัดไป สําหรับสวนของ Input: กําหนด Message Part Name เปน id กด Add แลวเพิ่ม input
สําหรับ firstName, lastName, salary (int) และสําหรับสวนของOutput: กําหนด Message Part
Name เปน result ดังแสดงในรูปที่ 2 จากนั้นกด Next แลวกด Finish
84. 84
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 2 แสดงการใสคา Input และ Output Messages
3. การพัฒนาไฟล WSDL สําหรับ FileBinding
ขั้นตอนถัดไปเปนการสรางไฟล WSDL สําหรับ FileBinding เพื่อเขียนลงไฟล
โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects คลิ๊กขวาที่โหนด Process Files ใหเลือก New > WSDL Document
2. ในไดอะล็อก New WSDL Document กําหนด File Name: เปน FileResult ใหเลือก WSDL Type:
เปน Concrete WSDL Document Binding เปน FILE และ Types เปน Write ดังแสดงในรูปที่ 3
จากนั้นกด Next
85. 85
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 3 แสดงการใสคาสําหรับ New WSDL Document
3. ในหนาถัดไป กําหนดคา Path: ไปที่ C:SOAoutput โดยกด Browse เพื่อเลือก Path:
(จะตองทําการสราง folder นี้ขึ้นมากอน) และเลือก File Exists: เปน Append to Existing File
ดังแสดงในรูปที่ 4 จากนั้นกด Finish
86. 86
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 4 แสดงการกําหนดคาสําหรับการเขียนไฟล
4. การพัฒนา BPEL Process
ขั้นตอนนี้เปนการสรางไฟล BPEL สําหรับนิยาม Business Process ที่จะใชในโปรเจ็ค
โดยมีขั้นตอนการพัฒนาดังนี้
4.1 การเพิ่ม partner link
1. ดับเบิ้ลคลิ๊กที่ไฟล fileBPEL.bpel แลวลากไอคอน DataIO.wsdl ในหนาตาง Project
มาไวในแทปเทาทางซายมือภายใตหนาตาง design
2. ดับเบิ้ลคลิ๊กตรงขอความ PartnerLink1 และเปลี่ยนชื่อเปน DataIOPartnerLink
3. ลากไอคอน FileResult.wsdl ในหนาตาง Project มาไวในแทบเทาทางขวามือภายใตหนาตาง
design
4. ดับเบิ้ลคลิ๊กตรงขอความ PartnerLink1 และเปลี่ยนชื่อเปน FilePartnerLink
89. 89
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 6 แสดง Business Rule ระหวาง start และ invokeWriteToFile
หมายเหตุ เราสามารถเพิ่มจํานวนแถวไดโดยการลากเขาไปที่ ของ Concat
จํานวนแถวก็จะถูกเพิ่มใหทันที
3. ในไฟล fileBPEL.bpel เลือกแทป Design แลวลากไอคอน Assign ในหนาตาง Palette
มาไวในหนาตาง design ระหวาง ธุรกรรม invokeWriteToFile กับธุรกรรม end
4. ในหนาตาง Editor เลือกธุรกรรม Assign2 ในหนาตาง BPEL Mapper เลือก String > String Literal
แลวกําหนดคาเปน Success เชื่อมโยงฟลดระหวาง string literal กับ result ที่อยูใน outData
ดังแสดงในรูปที่ 7
รูปที่ 7 แสดงBusiness Rule ระหวาง invokeWriteToFile และ end
5. เราจะไดโปรแกรม BPEL ดังแสดงในรูปที่ 8
90. 90
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 8 แสดง BPEL Process ของทั้งระบบ
6. คลิ๊กขวาที่โหนด FileBPEL เลือก Clean and Build
5. การพัฒนาโปรเจ็ค Composite Application
ขั้นตอนนี้เปนการสราง Composite Application เพื่อที่รัน FileBPEL บน BPEL Engine ที่ใชมาตรฐาน
JBI โดยมีขั้นตอนดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน SOA และ Projects เปน Composite
Application แลวกด Next
3. กําหนด Project Name เปน FileCompositeApp แลวกด Finish
4. ใหลากโปรเจค FileBPEL ที่อยูในหนาตาง Project มาใสใน JBI Modules ที่อยูในหนาตาง Design
5. คลิ๊กขวาที่ FileCompositeApp เลือก Clean and Build จะเห็นผลลัพธดังแสดงในรูปที่ 9
91. 91
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 9 แสดง Service Assembly ของ FileCompositeApp
6. การทดสอบโปรแกรมผาน TestCase
1. ทําการ Deploy โปรเจ็ค FileCompositeApp
2. ในหนาตาง Project เลือกโหนด FileCompositeApp > Test แลวคลิ๊กขวาเลือก New Test Case
3. ในไดอะล็อก New Test Case ใหกําหนด Test Case Name: เปน TestCase1 แลวกด Next
4. หนาถัดไปใน FileBPEL ใหเลือกไฟล WSDL เปน DataIO.wsdl แลวกด Next
5. ในหนาถัดไปใหเลือก DataIOOperation แลวกด Finish
6. หนาตาง Editor จะแสดงไฟล Input.xml ใหแก source code ดังนี้
<id>1234</id>
<firstName>Somjai</firstName>
<lastName>Jaidee</lastName>
<salary>38000</salary>
7. กดปุม Save เลือกโหนด TestCase1 แลวคลิ๊กขวาเลือก Run
8. จะเห็นผลลัพธปรากฎในไฟล Output.xml ดังแสดงในรูปที่ 10
รูปที่ 10 แสดงผลลัพธที่ไดจากการรัน TestCase1
9. และจะไดไฟล output.xml ในไดเร็กทอรี่ c:SOAoutput ซึ่งมีขอมูลดังนี้
Somjai Jaidee => 38000
92. 92
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
7. การพัฒนาโปรแกรมผาน Web Application
ทําการคนหาตําแหนง url ของ soap:address ตามขั้นตอนดังนี้
1. ใน Service Assembly ของ FileCompositeApp ใหคลิ๊กขวาที่ DataIOPort เลือก Clone WSDL to
edit ดังแสดงในรูปที่ 11
รูปที่ 11 แสดงการเลือก Clone WSDL Port to edit ของ DataIOPort
2. จากนั้นใหคลิ๊กขวาที่ DataIOPort อีกครั้งแลวเลือก Properties
3. ในหนาตาง Properties ใหทําการ copy คาของ Location ใน soap:address
4. Location ของ soap:address จะมีคาเปนตัวแปรที่ชื่อ ${HttpDefaultPort} ซึ่งเราสามารถดูคาของ
${HttpDefaultPort} ไดจากการเลือกที่แทป Services โหนด Servers > GlassFish Server 3.1.2 >
JBI > Binding Components > sun-http-binding คลิ๊กขวาแลวเลือก properties จะเห็น Default
HTTP Port Number ซึ่งจะมีคาเปน 9080
5. ทดสอบโดยเปด Web Browser แลว paste คาที่ copy ไว จากนั้นใหทําการเปลี่ยนคาของ URL
ใหเปนดังนี้ http://localhost:9080/DataIOService/DataIOPort?WSDL
พัฒนาโปรแกรม Web Application เพื่อใหผูใชปอนคาขอมูลตางๆ
จากนั้นโปรแกรมจะทําการเขียนขอมูลลงไฟล โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java Web และ Web Application แลวกด Next
3. กําหนด Project Name เปน FileBPUI แลวเลือก Project Location เปน folder
ที่เราตองการจะเก็บProject ไว
4. จากนั้นเลือก Server เปน GlassFish Server 3.1.2 กําหนด Jave EE Version: เปน Java EE 6
แลวกด Finish
5. คลิ๊กขวาที่โหนด FileBPUI จากนั้นเลือกคําสั่ง New > Other ใหเลือก Categories เปน Web
Services และ File Types เปน Web Service Client แลวกด Next
6. ในไดอะล็อก New Web Service Client ใหเลือก WSDL URL: แลวใส URL เปน
http://localhost:9080/DataIOService/DataIOPort?WSDL (ควรจะทําการ copy มาจาก
Web Browser ไมควรที่จะพิมพเอง)
93. 93
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
7. คลิ๊กขวาที่โหนด FileBPUI จากนั้นเลือกคําสั่ง New > HTML
8. กําหนด HTML File Name: เปน employeeInput แลวกด Finish
9. เพิ่มเติม source code ของไฟล employeeInput.html ดังนี้
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="EmployeeServlet" method="post">
ID: <input name="id" /><br>
Firstname: <input name="firstname"/><br>
Lastname: <input name="lastname"/><br>
Salary: <input name="salary"/><br><br>
<input type="submit" value="Insert" />
</form>
</body>
</html>
10. คลิ๊กขวาที่โหนด FileBPUI จากนั้นเลือกคําสั่ง New > Servlet
11. จากนั้นใหกําหนดชื่อเปน EmployeeServlet และ Package: เปน controller แลวกด Finish
12. ภายในเมธอด processRequest ในไฟล EmployeeServlet.java ใหลบ Comment
ทั้งหมดที่อยูภายในเครื่องหมาย /* … */ ระหวางคําสั่ง try และ finally
13. คลิ๊กขวาระหวางคําสั่ง try และ finally แลวเลือก Insert Code จากนั้นใหเลือก Call Web Service
Operation ใหเลือกไปที่ DataIOOperation แลวกด OK
14. จากนั้นใหทําการปรับปรุง Source code ของไฟล EmployeeServlet.java ดังนี้ (แสดงเฉพาะเมธอด
processRequest)
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try { // Call Web Service Operation
org.netbeans.j2ee.wsdl.filebpel.dataio.DataIOPortType port =
service.getDataIOPort();
// TODO initialize WS operation arguments here
java.lang.String id = request.getParameter("id");
java.lang.String firstname = request.getParameter("firstname");
java.lang.String lastname = request.getParameter("lastname");
String tmp = request.getParameter("salary");
int salary = Integer.parseInt(tmp);
// TODO process result here
java.lang.String result = port.dataIOOperation(id, firstname,
lastname, salary);
out.println("Result = "+result);
94. 94
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
} catch (Exception ex) {
out.println(ex);
} finally {
out.close();
}
}
15. คลิ๊กขวาที่ FileBPUI แลวเลือก Clean and Build
16. คลิ๊กขวาที่ employeeInput.html แลวเลือก Run File
17. หลังจากใสขอมูล จะไดผลลัพธดังแสดงในรูปที่ 12
รูปที่ 12 แสดงการใสขอมูล และผลลัพธที่ได
18. และไฟล output.xml ในไดเร็กทอรี่ c:SOAoutput จะมีขอมูลดังนี้
Somjai Jaidee => 38000
Nipa Jingjai => 738000
95. 95
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 12 Simple BPEL Invoking Web Services
แบบฝกหัดนี้เปนการเขียน Business Process เพื่อเรียกใช Internal Web Service ที่พัฒนาขึ้นมาเอง
และ External Web Service ของที่อื่นๆ ที่มีอยู โปรแกรม Web Service ที่จะพัฒนาขึ้นคือ TaxService
ที่มีโอเปอรเรชันที่ชื่อ calculateTax และ External Web Service คือเซอรวิสคํานวณอัตราแลกเปลี่ยนที่อยูที่
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl
ขั้นตอนในการพัฒนาโปรแกรม
1. พัฒนา Web Services
2. พัฒนาโปรเจ็ค WSBPEL
3. พัฒนาไฟล WSDL
4. พัฒนา Business Process สําหรับเรียก Web Service
5. พัฒนาโปรเจ็ค Composite Application
6. ทดสอบโปรแกรมผาน TestCase
7. พัฒนาโปรเจ็ค ExternalWSBPEL
8. กำหนด External WSDL Document
9. พัฒนาไฟล Client WSDL ใหม
10. พัฒนา Business Process ใหมเพื่อเรียก External Web Service
11. พัฒนาโปรแจ็ค Composite Application สําหรับเรียก Business Process ใหม และทําการทดสอบ
การพัฒนา Web Services
ขั้นตอนการพัฒนา Web Service นี้จะเปนการพัฒนา calculateTax Web Service เชนเดียวกับใน
แบบฝกหัดที่ผานมา โดยมี source code ดังนี้
@WebService
public class TaxService {
@WebMethod
public double calculateTax(@WebParam(name = "income") double income) {
return 0.1 * income;
}
}
96. 96
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
การพัฒนาโปรเจ็ค WSBPEL
แบบฝกหัดนี้จะทําการสรางโปรเจ็คสําหรับ Service Oriented Architecture ขึ้นมาใหม
โดยจะมีขั้นตอนการพัฒนาดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน SOA และ Projects เปน BPEL Module แลวกด
Next
3. กําหนด Project Name เปน WSBPEL แลวกด Finish
การพัฒนาไฟล WSDL
ขั้นตอนถัดไปเปนการสรางไฟล WSDL สําหรับนิยาม Business Process ที่จะพัฒนาขึ้น
เพื่อใหสามารถเรียกใชเปนเว็บเซอรวิสได โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects ขยายโหนด WSBPEL แลวคลิ๊กขวาที่โหนด Process Files จากนั้นเลือกคําสั่ง
New > WSDL Document
2. ในไดอะล็อก New WSDL Document กําหนด File Name: เปน WebProcessWSDL กําหนด WSDL
Type: เปน Concrete WSDL Document และกําหนด Binding เปน SOAP และ Types เปน RPC
Literal แลวกด Next
3. ในหนาถัดไป สําหรับสวนของ Input: กําหนด Message Part Name เปน inputData
(เมื่อใสคาเสร็จแลว ตองกดปุม Enter ดวยเสมอ มิฉะนั้นคาจะกลับไปเปน part1 เหมือนเดิม)
และสําหรับสวนของOutput: กําหนด Message Part Name เปน outputData กด Next แลวกด
Finish
การพัฒนา Business Process
ขั้นตอนนี้เปนการสรางไฟล BPEL สําหรับนิยาม Business Process ที่จะใชในโปรเจ็ค
โดยมีขั้นตอนการพัฒนาดังนี้
การเพิ่ม partner link
ขั้นตอนนี้จะทําการกําหนด partner link สําหรับ Web Services สองชุดคือ TaxService และ
WebProcessWSDL โดยมีขั้นตอนดังนี้
97. 97
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
1. ดับเบิ้ลคลิ๊กที่ไฟล WSBPEL.bpel เลือกแทป Design แลวลากไอคอน WebProcessWSDL.wsdl
ในหนาตาง Projects มาไวภายใตหนาตาง design (โดยใหลากไปที่แทบเทาๆ และใสใน )
โปรแกรมจะแสดงไดอะล็อก PartnerLink1 [Partner Link] – Property Editor ใหกําหนดคา Name:
เปน ClientPartnerLink แลวกด OK
2. ในหนาตาง Projects ขยายโหนด TaxWSDemo > Web Services แลวคลิ๊กขวาที่โหนด TaxService
แลวเลือกคําสั่ง Generate and Copy WSDL ...
3. ในไดอะล็อก Generate and Copy WSDL ใหเลือกไดเร็กทอรี่ src ภายใต WSBPEL ดังแสดงในรูปที่
1 จากนั้นกด OK
รูปที่ 1 แสดงไดอะล็อก Generate and Copy WSDL
4. ลาก TaxService.wsdl ไปไวทางดานขวาของหนาตาง design โดยกําหนด Name: เปน
TaxPartnerLink ซึ่งจะไดผลลัพธดังแสดงในรูปที่ 2
รูปที่ 2 แสดง PartnerLink ทั้งหมดของ WSBPEL
100. 100
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. ในหนาตาง Editor เลือกธุรกรรม Assign2 ในหนาตาง BPEL Mapper ทําการโยงโหนด return ในสวน
TaxOut ในหนาตางดานซายเขากับโหนด outputData ในสวน outData ในหนาตางดานขวา
ดังแสดงในรูปที่ 5
รูปที่ 5 แสดง Business Rule ระหวาง invokeWS และ end
5. เราจะไดโปรแกรม BPEL ดังแสดงในรูปที่ 6
รูปที่ 6 แสดง BPEL Process ของทั้งระบบ
6. กดปุม Save และ Clean and Build
101. 101
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
การพัฒนาโปรเจ็ค Composite Application
ขั้นตอนนี้เปนการสราง Composite Application เพื่อที่รัน WSBPEL บน BPEL Engine ที่ใชมาตรฐาน
JBI โดยมีขั้นตอนดังนี้
1. เลือกเมนู File > New Project
2. ในไดอะล็อก New Project ใหเลือก Categories เปน SOA และ Projects เปน Composite
Application แลวกด Next
3. กำหนด Project Name เปน WSCompositeApp แลวกด Finish
4. ในหนาตาง Project เลือกโหนด WSCompositeApp แลวคลิ๊กขวาเลือก Add JBI Module
5. ใหเลือกโปรเจ็ค WSBPEL แลวกดปุม Add Project JAR Files
6. โปรแรม NetBeans จะเพิ่มโหนด WSBPEL.jar ภายใต WSCompositeApp > JBI Module
7. ทำการ Clean and Build โปรเจ็ค WSCompositeApp
8. ดับเบิ้ลคลิ๊กที่ Service Assemblyจะเห็น CASA Editor ดังแสดงในรูปที่ 7 ซึ่ง WSBPEL ที่เปน BPEL
module จะถูกเรียกโดย SOAP request แตไมเห็นTaxPartnerLink เรียกใช Web Service ใด
รูปที่ 7 แสดง CASA Editor ของ WSBPEL
9. เพื่อระบุ Web Service ที่จะเรียกใชใหลากไอคอน soap ที่อยูใน palette มาไวในสวน WSDL Ports
ของ CASA Editor และทำการเชื่อมโยงดังแสดงในรูปที่ 8
102. 102
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 8 แสดงการเชื่อมโยงจาก WSBPELไปยัง SOAP
10. ระบุ endpoint ของ WSDL port โดยการคลิ๊กขวาที่ casaPort1 แลวเลือก Properties แลวกําหนดคา
Location เปน http://localhost:8080/TaxWSDemo/TaxService และ Endpoint Name เปน
TaxService
11. Save และทำการ Deploy โปรเจ็ค WSCompositeApp
การทดสอบโปรแกรมผาน TestCase
1. ในหนาตาง Project เลือกโหนด WSCompositeApp > Test แลวคลิ๊กขวาเลือก New Test Case
2. ในไดอะล็อก New Test Case ใหกําหนด Test Case Name: เปน TestCase1 แลวกด Next
3. หนาถัดไปใน WSBPEL ใหเลือกไฟล WSDL เปน WebProcessWSDL.wsdl แลวกด Next
4. ในหนาถัดไปใหเลือก WebProcessWSDLOperation แลวกด Finish
5. หนาตาง Editor จะแสดงไฟล Input.xml ใหแก source code สวน inputData ดังนี้
<inputData>400000</inputData>
6. กดปุม Save เลือกโหนด TestCase1 แลวคลิ๊กขวาเลือก Run
7. จะเห็นผลลัพธปรากฎในไฟล Output.xml ดังนี้
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:WebProcessWSDLOperationResponse
xmlns:m="http://j2ee.netbeans.org/wsdl/WSBPEL/WebProcessWSDL">
<outputData xmlns="">33500.0</outputData>
</m:WebProcessWSDLOperationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
103. 103
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
หมายเหตุ
กรณีที่ไมสามารถรันได ใหไปที่ GlassFish Server 3.1.2 > JBI > Service Assemblies ดังแสดงในรูปที่ 9
แลวทำการ Undeploy โปรเจ็คอื่นๆ ออกทั้งหมด ใหเหลือเฉพาะโปรเจ็ค WSCompositeApp
แลวลองรันใหมอีกครั้ง
รูปที่ 9 การ Updeploy โปรเจ็คอื่นๆ ที่อยูใน Service Assemblies ออกทั้งหมด
การพัฒนาโปรเจ็ค ExternalWSBPEL
แบบฝกหัดนี้จะทําการสรางโปรเจ็คสําหรับ Service Oriented Architecture ขึ้นมาใหม
โดยจะมีขั้นตอนการพัฒนาดังนี้
4. เลือกเมนู File > New Project
5. ในไดอะล็อก New Project ใหเลือก Categories เปน SOA และ Projects เปน BPEL Module แลวกด
Next
6. กําหนด Project Name เปน ExternalWSBPEL แลวกด Finish
104. 104
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
การพัฒนา External WSDL
ขั้นตอนตอไปจะเปนการทดลองเรียกใช External Web Service สําหรับการคํานวณอัตราแลกเปลี่ยน
โดยขั้นตอนแรกจะตองระบุ WSDL ของ External Web Service ดังกลาว โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects ขยายโหนด ExternalWSBPEL แลวคลิ๊กขวาที่โหนด Process Files
จากนั้นเลือกคําสั่ง New > Other..
2. ในไดอะล็อก New File ใหเลือก Categories เปน XML และ Projects เปน External WSDL
Document(s) แลวกด Next
3. ในหนาถัดไป เลือก Form URL: แลวกําหนดคาเปน
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl แลวกด Finish
4. โปรเจ็ค ExternalWSBPEL จะแสดงโหนด www.webservicex.com ที่มี
CurrencyConvertor.asmx.wsdl ขึ้นมา
5. External WSDL ที่เรียกมาจะมีโครงสรางดังรูปที่ 10 แตเนื่องจาก WSDL นี้จะไมสามารถที่จะ compile
ใน NetBeans 7.1 ได เนื่องจากมี Port Types, Bindings และ Services ที่เปน HttpGet และ HttpPost
อยู ใหทำการลบสวนเหลานั้นออก โดยคลิ๊กขวาที่โหนดที่เกี่ยวของแลวเลือกคําสั่ง Delete
จนเหลือโครงสรางของ WSDL ดังรูปที่ 11
รูปที่ 10 WSDL ที่ทําการเรียกมา
105. 105
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 11 WSDL ที่ถูกตอง
การพัฒนาไฟล Client WSDL ใหม
ขั้นตอนถัดไปเปนการสรางไฟล WSDL สําหรับนิยาม Business Process ที่จะพัฒนาขึ้น
มาใหมเพื่อใหสามารถเรียกใชเปนเว็บเซอรวิสได โดยในกรณีจะกําหนดใหมี input parameter สองตัวคือ
fromCurrency และ toCurrency โดยมี output parameter คือ result โดยมีขั้นตอนการพัฒนาดังนี้
1. เลือกหนาตาง Projects ขยายโหนด WSBPEL แลวคลิ๊กขวาที่โหนด Process Files จากนั้นเลือกคําสั่ง
New > WSDL Document
2. ในไดอะล็อก New WSDL Document กําหนด File Name: เปน ExternalWSProcessWSDL กําหนด
WSDL Type: เปน Concrete WSDL Document และกําหนด Binding เปน SOAP และ Types เปน
RPC Literal แลวกด Next
3. ในหนาถัดไป สําหรับสวนของ Input: กําหนด Message Part Name เปน fromCurrency ใหเปนชนิด
xsd:String และ toCurrency ใหเปนชนิด xsd:String และสําหรับสวนของ Output: กําหนด Message
Part Name เปน result ใหเปนชนิด xsd:String ดังรูปที่ 12 กด Next แลวกด Finish
106. 106
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
รูปที่ 12 การกําหนดคา WSDL Document
การพัฒนา Business Process ใหมเพื่อเรียก External Web Service
ขั้นตอนนี้เปนการสรางไฟล BPEL สําหรับนิยาม Business Process ใหมที่จะใชในการเรียก External
Web Service โดยมีขั้นตอนการพัฒนาดังนี้
107. 107
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
การสราง BPEL Process
1. คลิ๊กขวาที่โหนด WSBPEL จากนั้นเลือกคําสั่ง New > BPEL Process..
2. ในไดอะล็อก New BPEL Process กำหนด Project Name เปน ExternalWSBPEL แลวกด Finish
การเพิ่ม partner link
ขั้นตอนนี้จะทําการกําหนด partner link สําหรับ Web Services สองชุดคือ
ExternalWSProcessWSDL และ CurrencyConvertor.asmx.wsdl โดยมีขั้นตอนดังนี้
1. ดับเบิ้ลคลิ๊กที่ไฟล ExternalWSBPEL.bpel เลือกแทป Design แลวลากไอคอน
ExternalWSProcessWSDL.wsdl ในหนาตาง Projects มาไวภายใตหนาตาง design
โปรแกรมจะแสดงไดอะล็อก PartnerLink1 [Partner Link] – Property Editor ใหกําหนดคา Name:
เปน ClientPartnerLink แลวกด OK
2. ลาก CurrencyConvertor.asmx.wsdlในหนาตาง Projects ไปไวทางดานขวาของหนาตาง design
โดยกําหนด Name: เปน ExternalWSPartnerLink
การเพิ่มธุรกรรม Receive
1. ในไฟล ExternalWSBPEL.bpel เลือกแทป Design แลวลากไอคอน Receive ในหนาตาง Palette
มาไวตรงบล็อกธุรกรรมวางเปลา
2. โปรแกรมจะกําหนดธุรกรรม Receive ที่ชื่อ Receive1 ในหนาตาง Design ใหดับเบิ้ลคลิ๊กธุรกรรม
Receive1
3. ในไดอะล็อก Receive1 [Receive] - – Property Editor ใหกําหนด Name: เปน start และเลือก
Partner Link: เปน ClientPartnerLink
4. ในชอง Input Variable: กดปุม Create เมื่อไดอะล็อก New Input Variable แสดงขึ้น ใหกําหนด
Name: เปน inData แลวกด OK
การเพิ่มธุรกรรม Reply
1. ในไฟล ExternalWSBPEL.bpel เลือกแทป Design แลวลากไอคอน Reply ในหนาตาง Palette
มาไวในหนาตาง design ระหวางธุรกรรม start กับธุรกรรม Process End
2. โปรแกรมจะกําหนดธุรกรรม Reply ที่ชื่อ Reply1 ในหนาตาง Design ใหดับเบิ้ลคลิ๊กธุรกรรม Reply1
3. ในไดอะล็อก Reply1 [Reply] - – Property Editor ใหกําหนด Name: เปน end และเลือก Partner
Link: เปน ClientPartnerLink
4. ในชอง Output Variable: กดปุม Create เมื่อไดอะล็อก New Output Variable แสดงขึ้น ใหกําหนด
Name: เปน outData แลวกด OK