1. 1
Hand-on
Exercises
Java Web Services
and
Service Oritened Architecture
Using GlassFish ESB
and NetBeans 6.5
Dr.Thanachart Numnonda
and
Asst Prof.Thanisa Kruawaisayawan
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
2. 2
Exercises
Exercise 1: Calling External Web Services
Exercise 2: Java Web Service
Exercise 3: RESTful Web Services
Exercise 4: Twitter Web Services and Google
Calendar API
Exercise 5: Google Map Web Services
Exercise 6: Developing a Simple Synchronous BPEL
program
Exercise 7: BPEL for writing to file
Exercise 8: BPEL for Writing to Database
Exercise 9: BPEL for Sending Message to a JMS
Queue
Exercise 10: BPEL Invoking Web Services
Exercise 11: BPEL : Structured Activities
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
3. 3
Exercise 1: Calling External Web Services
แบบฝกหดในบทนเปนการพฒนาโปรแกรมเพอเรยกใช Web Services ทมอย()แลว ซ-งจะเลอกมา 3
บร2การดงน
การทดลองท 1 ราคาน4ามนล)าส6ดของ ปตท.
การทดลองท 2 อตราแลกเปลยนเง2นตราระหว)างประเทศ
การทดลองท 3 ราคาห6น
โดยจะใช NetBeans และ GlassFish V2 Server
การพ#ฒนา Web Service Client
แบบฝกหดนจะสราง Web Application Project ข-นใหม) เพอใชในการเรยก Web Services โดยมขน
ตอนการพฒนาดงน
1. เลอกเมน( File > New Project
2. ในไดอะลMอก New Project ใหเลอก Categories เปน Java Web และ Web Application แลวกด
Next
3. ก4าหนด Project Name เปน ExternalWSDemo แลวเลอก Project Location เปน folder ทเรา
ตองการจะเกMบไฟลWไว
4. จากนนเลอก Server เปน GlassFish V2 ก4าหนด Jave EE Version: เปน Java EE 5 แลวกด
Finish
การทดลองท 1
1. คล2[กขวาทโหนด ExternalWSDemo จากนนเลอกค4าสง New > Other… ใหเลอก Categories เปน
Web Services และ Web Service Client แลวกด Next
2. ในไดอะลMอก New Web Service Client ใหเลอก WSDL URL: แลวใส) URL เปน
http://www.pttplc.com/pttinfo.asmx?wsdl ดงแสดงในร(ปท 1 แลวกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
4. 4
ร5ปท 1 แสดงไดอะลMอก New Web Service Client
3. ในหนาต)าง Projects จะม Folder ทชอ Web Service References ข-นมา
4. คล2[กขวาท ExternalWSDemo แลวเลอก Servlet จากนนใหก4าหนดชอเปน PTTServlet และ
Package: เปน servlets แลวกด Finish
5. คล2[กขวาภายในเมธอด processRequest ในไฟลW PTTServlet.java แลวเลอก Web Service Client
Resources > Call Web Service Operation ดงแสดงในร(ปท 2
ร5ปท 2 แสดงการเรยกใช operation ของ Web Service
6. เลอก CurrentOilPrice ดงแสดงในร(ปท 3 แลวกด OK
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
5. 5
ร5ปท 3 แสดงการเรยกใช Operation: CurrentOilPrice ของปตท.
7. ภายในไฟลW PTTServlet.java ใหใส) language เปน TH แลว Run ไฟลW จะแสดงราคาน4ามนล)าส6ด ดง
แสดงในร(ปท 4
ร5ปท 4 แสดงผลลพธWทไดจากการเรยกใช Web Service Operation: CurrentOilPrice ของปตท.
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
6. 6
การทดลองท 2
1. คล2[กขวาทโหนด ExternalWSDemo จากนนเลอกค4าสง New > Web Service Client แลวกด Next
2. ในไดอะลMอก New Web Service Client ใหเลอก WSDL URL: แลวใส) URL เปน
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl
3. คล2[กขวาท ExternalWSDemo แลวเลอก Servlet จากนนใหก4าหนดชอเปน CurrencyServlet และ
Package: เปน servlets แลวกด Finish
4. คล2[กขวาภายในเมธอด processRequest ในไฟลW CurrencyServlet.java แลวเลอก Web Service
Client Resources > Call Web Service Operation เลอก ConversionRate แลวกด OK
5. แกไขไฟลW CurrencyServlet.java ดงน
6. Run ไฟลW CurrencyServlet.java จะแสดงอตราแลกเปลยนเง2นตรา ดงแสดงในร(ปท 5
ร5ปท 5 แสดงผลลพธWทไดจากการเรยกใช Web Service Operation: ConversionRate
การทดลองท 3
1. คล2[กขวาทโหนด ExternalWSDemo จากนนเลอกค4าสง New > Web Service Client แลวกด Next
2. ในไดอะลMอก New Web Service Client ใหเลอก WSDL URL: แลวใส) URL เปน
http://www.webservicex.com/stockquote.asmx?WSDL
3. คล2[กขวาท ExternalWSDemo แลวเลอก Servlet จากนนใหก4าหนดชอเปน StockServlet และ
Package: เปน servlets แลวกด Finish
4. คล2[กขวาภายในเมธอด processRequest ในไฟลW StockServlet.java แลวเลอก Web Service Client
Resources > Call Web Service Operation เลอก GetQuote แลวกด OK
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
7. 7
5. แกไขไฟลW StockServlet.java โดยใส) symbol เปน request.getParameter("symbol");
6. Run ไฟลW
7. ทดสอบโปรแกรมโดยใส) ?symbol=java ต)อทาย URL ดงน
http://localhost:8080/ExternalWSDemo/StockServlet?symbol=java ไดผลลพธWดงแสดงในร(ปท 6
ร5ปท 6 แสดงผลลพธWทไดจากการเรยกใช Web Service Operation: GetQuote เมอปsอน symbol เปน java
8. ทดสอบโปรแกรมโดยใส) ?symbol=goog ต)อทาย URL ดงน
http://localhost:8080/ExternalWSDemo/StockServlet?symbol=goog ไดผลลพธWดงแสดงในร(ปท 7
ร5ปท 7 แสดงผลลพธWทไดจากการเรยกใช Web Service Operation: GetQuote เมอปsอน symbol เปน goog
การทดสอบ Web Services โดยใชM SoapUI
โปรแกรม SoupUI เปนโปรแกรม Open Source ทสามารถใชเปนเครองมอในการทดสอบเวMบเซอรWว2ส
ทน2ยมใชกนอย)างกวางขวาง เราสามารถทจะไปดาวนWโหลดโปรแกรมนไดท www.soupui.org และท4าการ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
8. 8
ทดสอบเวMบเซอรWว2สในการทดลองทงสามขางตน นอกจากนเรายงสามารถต2ดตงโปรแกรม SoapUI ภายใน
NetBeans ไดโดยการดาวนWโหลด SoupUI NetBeans Plugin (ไฟลW com-eviware-soapui-netbeans-module-
2.5.1.nbm) และท4าการต2ดตงตามขนตอนดงน
1. ในโปรแกรม NetBeans เลอกเมน( Tools > Plugins
2. ในไดอะลMอก Plugins เลอกแทป Downloaded แลวกดป6zม Add Plugins..แลวเลอกไฟลW com-eviware-
soapui-netbeans-module-2.5.1.nbm ซ-งท4าการดาวนWโหลดมาก)อนหนาน จะไดไดอะลMอกดงร(ป
3. กดป6zม Install แลวกดป6zม Next จนท4าการต2ดตงเสรMจแลวเลอกให Restart โปรแกรม NetBeans ข-นมา
ใหม)
เราสามารถทดสอบการใชงาน SoupUI ทต2ดตงข-นมาใน NetBeans เพอทดสอบเวMบเซอรWว2สด(อตรา
แลกเปลยนตามขนตอนดงน
1. เลอกเมน( File > New Project
2. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Web Services Testing Project
แลวกด Next
3. ก4าหนด Project Name เปน CurrencyExcangeWSTestProject แลวเลอก Project Location เปน
folder ทเราตองการจะเกMบไฟลWไว
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
10. 1
Exercise 2: Java Web Services
แบบฝกหดในบทนเปนการพฒนาโปรแกรม Web Services ส4าหรบ Java EE โดยใชช6ดค4าสง
JAX-WS ซ-งจะเปนการพฒนาบน Server ทรนบน Java EE โดยช6ดค4าสง JAX-WS จะช)วยท4าใหการสรางและ
เรยกใช Web Services ดวยภาษา Java เปนไปไดง)ายข-น
การพฒนา Web Services จะแบ)งเปนสองส)วนคอ Web Service Provider (Server) และ Web
Service Requester (Client) แบบฝกหดนจะเร2มจากการพฒนา Web Service ซ-งสามารถท4าได 2 ว2ธคอ
1. Web Services ทรนบน Web Server โดยใช Java Servlet
2. Web Services ทรนบน Application Server โดยใช Session Bean
แบบฝกหดนจะแสดงขนตอนการใช NetBeans สราง Web Service ทชอ calculateTax โดยใช Servlet
ซ-งจะรนอย()บน GlassFish V2 Server เพอแสดง Web Services การส)ง SOAP message และ WSDL ของ
Services
การพ#ฒนา calculateTax Web Service
แบบฝกหดนจะสราง Web Application Project ข-นใหม) เพอใชในการเกMบ Web Service โดยมขนตอน
การพฒนาดงน
1. เลอกเมน( File > New Project
2. ในไดอะลMอก New Project ใหเลอก Categories เปน Java Web และ Projects เปน Web
Application แลวกด Next
3. ก4าหนด Project Name เปน TaxWSDemo แลวเลอก Project Location เปน folder ทเราตองการจะ
เกMบไฟลWไว
4. จากนนเลอก Server เปน GlassFish V2 ก4าหนด Jave EE Version: เปน Java EE 5 แลวกด Finish
5. คล2[กขวาทโหนด TaxWSDemo จากนนเลอกค4าสง New > Other… ใหเลอก Categories เปน Web
Services และ Web Service แลวกด Next
6. ในไดอะลMอก New Web Service ก4าหนด Web Service Name: เปน TaxServices และ Package:
เปน ws แลวกด Finish
7. โปรแกรมจะประกาศ Web Services ทชอ TaxServices ในโหนด Web Services ของหนาต)าง
Project และหนาต)าง Editor จะแสดงไฟลWทชอ TaxServices.java
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
11. 2
8. ในหนาต)าง Projects ขยายโหนด TaxWSDemo > Web Services แลวคล2[กขวาทโหนด TaxServices
เลอกค4าสง Add Operation…
9. ในไดอะลMอก Add Operation ก4าหนด Method เปน calculateTax ชน2ดของ Return Type เปน
double และ เพ2ม Input parameter หน-งตวคอ income ชน2ด double แลวกด OK
10. คล2[กทแทป Source ของ TaxServices.java และปรบปร6งเมธอด calculateTax ดงน
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService()
public class TaxServices {
@WebMethod
public double calculateTax(@WebParam(name = "income") double income) {
if (income < 70000) {
return 0;
} else if (income < 100000) {
return (income - 70000) * 0.05;
} else if (income < 500000) {
return (income - 100000) * 0.1 + 3500;
} else {
return (income - 500000) * 0.2 + 43500;
}
}
}
TaxWSDemo จากนนเลอกค4าสง Clean and Build จากนนคล2[กขวาทโหนด
11. คล2[กขวาทโหนด
TaxWSDemo อกครง แลวเลอก Deploy
การทดสอบ Web Service
โปรแกรม Web Service จะถ(กต2ดตงบน GlassFish V2 และสามารถเรยกด(ไดการใช System
Admin Console โดยการเป~ด Web Browser และเรยก url ท http://localhost:4848 โดยก4าหนด user เปน
admin และ password เปน adminadmin
1. โปรแกรมจะแสดง Applications และ Web Services ดงแสดงในร(ปท 1
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
12. 3
ร5ปท 1 แสดงรายละเอยดใน GlassFish V2 (Sun Java Application Server)
2. เราสามารถทจะทดสอบ Web Service นผ)านทาง Admin Console ไดโดยกดป6zม Test หรอทดสอบ
จาก Netbeans โดยคล2[กขวาท TaxServices ใน Web Services ดงแสดงในร(ปท 2
ร5ปท 2 แสดงว2ธการทดสอบ Web Service ใน Netbeans
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
13. 4
3. โปรแกรมจะแสดงหนาจอเพอใหเราปsอนขอม(ลอ2นพ6ต ซ-งคอจ4านวนเง2นทตองการค4านวณภาษ ในทนจะ
ใส)ตวเลขเปน 730000 ดงแสดงในร(ปท 3
ร5ปท 3 แสดงหนาต)างส4าหรบใหทดสอบเรยก Web Service
4. แลวกดป6zม calculateTax โปรแกรมจะเรยกใช Web Services และจะแสดงผลลพธWทได พรอมทงแสดง
ค)า SOAP Request ดงแสดงในร(ปท 4
ร5ปท 4 แสดงผลลพธWทไดจากการเรยกใช Web Service และแสดง SOAP Request
5. เราสามารถทจะแสดงค4าสง WSDL ของ Web Service นโดยการเลอก WSDL File โปรแกรมจะท4าการ
เรยก url ชอ http://localhost:8080/TaxWSDemo/TaxServicesService?WSDL และจะไดผลลพธWดง
แสดงในร(ปท 5
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
14. 5
ร5ปท 5 แสดงรายละเอยดของ WSDL
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
15. 6
Exercise 3: RESTful Web Services
เนอหาทตองศกษากอน Enterprise Java Bean
แบบฝกหดในบทนเปนการพฒนาโปรแกรม RESTful Web Services โดยใชชดคาสง JAX-RS เพ"อ
สราง Web Services ทจะเรยกด&ขอม&ลจากฐานขอม&ล MySQL ผ+านชดคาสง Java Persistence API (JPA)
ขนตอนในการพฒนาโปรแกรม
1. การต-ดตงโมด&ล RESTful Web Services
2. สราง Web Application Project
3. พฒนา Entity Class
4. พฒนา RESTful Web Service จาก Entity Class
5. ทดสอบ RESTful Web Service
6. พฒนา RESTful Web Service Client Stubs
การตดตงโมดล RESTful Web Services
ขนตอนนจาเปนเฉพาะโปรแกรม NetBeans เวอร0ชน 6.0 ซ2งไม+ไดต-ดตงโมด&ลนมา แต+สาหรบผ&ใช
โปรแกรม NetBeans 6.1 ข2นไปสามารถขามขนตอนนไปได สาหรบขนตอนการต-ดตงโมด&ลนมดงน
1. เล"อกเมน& Tools => Plugin
2. ในไดอะล5อก Plugins เล"อกแทป Available Plugins แลวเล"อกช+อง RESTful Web Services
3. กดป6ม Install แลวทาการต-ดตงโดยการกดป6ม OK และยอมรบเง"อนไขของล-ขส-ทธ-8โปรแกรม
การสราง Web Application Project
เราจะกาหนดใหโปรแกรมนเปนโปรแกม Web Application ขนตอนแรกจะเปนการสราง Project ใหม+
ข2นมาใน NetBeans ซ2งมขนตอนดงน
1. เล"อกเมน& File => New Project..
2. ในไดอะล5อก New Project ใหเล"อก Categories เปน Java Web และเล"อก Project เปน Web
Application แลวกด Next
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
16. 7
3. กาหนด Project Name เปน RestfulWS แลวเล"อก Project Location เปน Director ทเราตองการจะ
เก5บไฟล0ไว กด Next
4. จากนนเล"อก Server เปน GlassFishV2 แลวกด Finish
การพฒนา Entity Class
ขนตอนนจะเปนการสราง Entity Class เพ"อต-ดต+อกบ table ทช"อ books ใน MySQL โดยมขนตอนการ
พฒนาเช+นเดยวกบแบบฝกหดการพฒนา Enterprise Java Bean ซ2งเราจะได Entity Class ทช"อ Books และ
Persistence Unit
ทาการแกไขเพ"อเพ-ม property ของ ไฟล0 persistence.xml ดงน
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="RestfulWSPU" transaction-type="JTA">
<jta-data-source>jdbc/test</jta-data-source>
<properties>
<property name="toplink.jdbc.user" value="root" />
<property name="toplink.jdbc.password" value="MySQL_password" />
</properties>
</persistence-unit>
</persistence>
การพฒนา Restful Web Service จาก Entity Class
ขนตอนนจะเปนการพฒนา Restful Web Services เพ"อใหสามารถต-ดต+อกบฐานขอม&ลโดยผ+าน Entity
Class ทพฒนาข2นได โดยจะมขนตอนการพฒนาดงน
1. เลอกหนาตาง Projects แลวคลกขวาทโหนด RestfulWS จากนนเลอกคาสง New > Other...
2. ในไดอะล!อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป$น RESTful
Web Services from Entity Class แลวกด Next
3. ในไดอะล!อก New RESTful Web Services from Entity Class ใหเลอก Books ดงร&ป แลวกด Next
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
17. 8
4. โปรแกรม NetBeans จะสราง class ตางๆ ดงร&ป
5. กดป)*ม Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
18. 9
การทดสอบ RESTful Web Service จาก Entity Class
ขนตอนนจะเปนการทดสอบ RESTful Web Services ทพฒนาข2นโดยจะมขนตอนดงน
1. เล"อกหนาต+าง Projects แลวคล-:กขวาทโหนด RestfulWS จากนนเล"อกคาสง Test Restful Web
Services
2. โปรแกรม Browser จะแสดง uri ของ RESTful Web Services ใหเล"อกโหนด books และคล-:ก isbn
จะไดผลลพธ0ดงร&ป
3. ทดลองป;อนขอม&ล isbn เปน 123 แลวกดป6ม Test จะไดผลลพธ0ตวอย+างดงร&ป
4. ทดลองเปลยน method เปน DELETE และ PUT เพ"อทาการลบและเพ-มขอม&ลเขาไปในตาราง books
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
19. 1
Exercise 4:Twitter Web Services
and Google Calendar API
แบบฝกหดในบทนเปนตวอย)างการใช Web Services ทมอย()ใน Social Networks โดยจะใช Web
Services ของ Twitter เพอเขยนโปรแกรม update status ของ Twitter ส)วนตว จาก Web Application ท
พฒนาข-น จากนนจะเขยนโปรแกรมต2ดต)อกบ Google Calendar โดยใช Java API ของ Google เพอเรยกด(
ก4าหนดนดหมายองผ(ใชในวนป€จจ6บน จากนนจะสามารถเลอกนดหมายทแสดงข-นเพอส)งผ)านไปยง Twitter โดย
การเรยกใช Web Services
การสรMาง User Account สSาหร#บ Twitter และ Google Calendar
แบบฝกหดนจะเรยกใชเวMบไซตWSocial Network สองแห)งคอ Twitter และ Google Calendar
• เวMบ Twitter เปนบร2การส4าหรบใหเราสามารถทจะเชอมต)อกบ เพอน สมาช2กในครอบครว และเพอน
ร)วมงานไดอย()ตลอดเวลา โดยการตอบค4าถามสนๆอย)างบ)อยครงว)า What are you doing? เราสามารถ
ทจะลงทะเบยนเวMบนไดท twitter.com และเมอท4าการลMอกอ2นเขาไปแลวจะไดตวอย)างเวMบดงร(ป
• เวMบ Google Calendar เปนเวMบทใหผ(ใชจดการก4าหนดการนดหมายต)างๆไดโดยสามารถสราง แสดง
แกไข และลบไดผ)านโปรแกรมเวMบบราวเซอรW โดยขอม(ลการนดหมายจะถ(กเกMบไวท Google ท4าใหผ(ใช
สามารถเรยกผ)านเวMบจากเครองใดๆกMได เราสามารถทจะลงทะเบยนเวMบนไดท
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
20. 2
www.google.com/calendar และเมอท4าการลMอกอ2นเขาไปแลวจะไดตวอย)างเวMบดงร(ป
• กรณทผ(ใชม account อย()ใน Facebook เราสามารถทจะให status update ของ Twitter ถ(กส)งผ)าน
มายงเวMบไซตW Facebook ของเราไดโดยอตโนมต2โดยการเลอก Facebook Application ชอ
http://apps.facebook.com/twitter/ ดงตวอย)างในร(ป
การสราง JSF Web Application สาหรบ Twitter
ขนตอนนจะเปนกาสราง Web Application โดยใช JSF Visual Web Framework เพ"อทาการส+ง
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
21. 3
ขอความตอบคาถาม What are you doing? จากโปรแกรมทพฒนาข2นไปยง Twitter โดยเรยกใช Web
Services ซ2งมขนตอนดงน
1. เล"อกเมน& File > New Project..
2. ในไดอะล5อก New Project ใหเล"อก Categories เปน Java Web และเล"อก Projects เปน Web
Application แลวกด Next
3. กาหนด Project Name เปน TwitterJSF แลวเล"อก Project Location เปน Director ทเราตองการจะ
เก5บไฟล0ไว จากนนเล"อก Server เปน GlassFish V2 จากนนกด Next
4. ในช+อง Frameworks ใหเล"อก Visual Web JavaServer Faces จากนนกด Finish
โปรแกรมทจะพฒนาข2นยตองการจะใหมหนาจอส+วนต-ดต+อผ&ใชดงร&ป โดยผ&ใชสามารถป;อนขอความใน
TextField และเม"อกดป6ม Twitter Notification โปรแกรมจะส+งขอความไปยง Twitter โดยมขนตอนการ
พฒนาโปรแกรมดงน
1. ในโปรเจ5ค TwitterJSF ใหเล"อกไฟล0 Page1.jsp หนาต+าง Editor จะแสดงไฟล0นในโหมด Design
2. ในหนาต+าง Properties ใหกาหนดค+าของ Title เปน Twitter Notification
3. ในหนาตาง Palette ลากไอคอน Label ทอย&ภายในโหนด Basic มาไวในหนาตางการออกแบบของ
Page1.jsp แลวแกไขขอความเป$น What are you doing? แลวกด Enter ในหนาตาง Properties
สาหรบ Label1 ใหเปลยน Style เพอเลอก Font เป$น Time News Roman ขนาด 18
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
22. 4
4. ลากไอคอน TextField ทอย&ภายในโหนด Basic มาไวในหนาตางการออกแบบของ Page1.jsp ใน
ตาแหนงดงร&ปทแสดงขางตน
5. ในหนาตาง Properties สาหรบ TextField1 ใหเปลยนคา columns เป$น 60 และคา id จาก textField1
เป$น answerTf
6. ใหทาการคลกขวาท answerTf แลวเลอก Add Binding Attribute
7. ลากไอคอน Button ทอย&ภายในโหนด Basic มาไวในหนาตางการออกแบบของ Page1.jsp ในตาแหนง
ดงร&ปทแสดงขางตน แลวแกไขขอความเป$น Twitter Notification
8. ในหนาตาง Properties สาหรบ Button ใหเปลยนคา id จาก button1 เป$น sendButton
ขนตอนถดมาจะเปนการเขยน Source code เพ"อกาหนดการทางานของการกดป6ม Twitter Notification โดยม
ขนตอนการทางานดงน
9. ในหนาต+าง editor ใหกลบมาเล"อกแทป Design แลวกดดบเบ-ลคล-:กทป6ม Twitter Notification
10. เล"อกแทป Services แลวขยายโหนด Web Services > Twitter > What are you doing service >
statuses > [update.{format}]
11. ลากเซอร0ว-ส updateStatus มาไวในหนาต+าง editor ซ2งแสดง source code ในคาสง action ของป6ม และ
ใหแกไข source code ดงน
public String sendButton_action() {
try {
String status = (String) answerTf.getValue();
String inReplyToStatusId = null;
String format = "xml";
RestResponse result = TwitterWhatAreYouDoingService.updateStatus(status, inReplyToStatusId,
format);
if (result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.StatusType.class)
instanceof twitter.whatareyoudoingservice.twitterresponse.StatusType) {
twitter.whatareyoudoingservice.twitterresponse.StatusType resultObj =
result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.StatusType.class);
} else if (result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.NilClasses.class)
instanceof twitter.whatareyoudoingservice.twitterresponse.NilClasses) {
twitter.whatareyoudoingservice.twitterresponse.NilClasses resultObj =
result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.NilClasses.class);
}
//TODO - Uncomment the print Statement below to print result.
//System.out.println("The SaasService returned: "+result.getDataAsString());
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
23. 5
เราจะตองท4าการระบ6 username และ password ของ Twitter โดยการก4าหนดค)า properties ทอย()ใน
ไฟลW twitterwhatareyoudoingserviceauthenticator.properties ทอย()ในโหนด TwitterJSF > Source
Packages > org.netbeans.saas.twitter ดงตวอย)าง
# To change this template, choose Tools | Templates
# and open the template in the editor.
username=thananum@yahoo.com
password=xxxxxxxx
เราสามารถทดสอบรนโปรแกรมนแลวทดลองปsอนขอความดงร(ป จากนนเราสามารถทจะเรยกด(ผลขอ
การส)งขอความไปยง Twitter ไดจากเวMบ Twitter หรอกรณทเราเชอมโยง Twitter ไปยง Facebook เราจะ
สามารถเหMนการอปเดตเวMบ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
24. 6
การสราง Web Application สาหรบสงนดหมายใน Google Calendar ไปยง Twitter
ขนตอนนจะเปนกาสราง Web Application โดยใชเพ"อทาการแสดงนดหมายจาก Google Calendar
แลวเล"อกนดหมายเพ"อส+งไปยง Twitter โปรแกรมจะถ&กกาหนดใหอย&+ภายใน Web Project ทช"อ TwitterTester
ทมไฟล0ต+างๆค"อ
1. CalendarTwitter.html
เปนการแสดง Web Page เพ"อใหผ&ใชป;อนขอม&ล account ของทง Google Calendar และ Twitter ดง
ร&ป โดยม source code ดงน
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="CalendarServlet" method="POST">
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
35. 5
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());
} catch (Exception ex) {
ex.printStackTrace();
}
out.println("</body>");
out.println("</html>");
out.close();
}
7. โปรแกรมนจะเรยกใชเว5บเซอร0ว-สของ Google Map ซ2งเราจะตองทาการลงทะเบยนท url ทช"อ
http://code.google.com/apis/maps/signup.html โดยกาหนดค+า My web site URL เปน
http://localhost:8080 แลวกดป6ม Generate API Key
8. ทาการก5อบป@Aค+า API Key ทไดไปใส+ในไพล0ทช"อ googlemapservices.properties ทอย&+ภายในโหนด
HospitalGoogleMap > Source Packages > org.netbeans.saas.google ดงตวอย+างเช+น
api_key=ABQIAAAAMB8Fi4WQk4tMcbmiA9JGFhTwM0brOpm-All5BF6PoaKBxRWWERSQ1U63ApJ18ThqyosJ6592jq20Bg
การทดสอบโปรแกรม
1. ทาการ Build และ Deploy โปรแกรม BkkHospitalGoogleMap
2. Run โปรแกรม BkkHospitalGoogleMap
3. เล"อก URL ของ Web Browser เปนจะไดผลลพธ0ในการรนโปรแกรมดงตวอย+าง
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
36. 6
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
37. 7
Exercise 6: Developing a simple synchronous
BPEL program
แบบฝกหดนเปนการพฒนาโปรแกรม BPEL เพอแสดงตวอย)างการเขยน Business Process แบบ
Synchronous แบบฝกหดนจะอธ2บายการใช NetBeans เพอสรางไฟลW XML Schema, ไฟลW WSDL และไฟลW
BPEL โปรแรม BPEL Process ทจะพฒนาข-นเปนธ6รกรรมเพอท4าการคดลอกขอความ
ขนตอนในการพฒนาโปรแกรม
1. พฒนาโปรเจMค HelloBPEL
2. พฒนา XML Schema
3. พฒนาไฟลW WSDL
4. พฒนา BPEL Process
5. พฒนาโปรเจMค Composite Application
การพ#ฒนาโปรเจ`ค HelloBPEL
แบบฝกหดนจะท4าการสรางโปรเจMคส4าหรบ Service Oriented Architecture ข-นมาใหม) โดยจะมขนตอน
การพฒนาดงน
1. เลอกเมน( File => New Project..
2. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Projects เปน BPEL Module แลวกด
Next
3. ก4าหนด Project Name เปน HelloBPEL แลวกด Finish
การพ#ฒนา XML Schema
ขนตอนถดไปเปนการสรางไฟลW XML Schema เพอก4าหนดร(ปแบบของไฟลW XML ดง Listing ท 1 ซ-ง
โปรแกรม NetBeans จะม Wizard ในการสราง XML Schema อตโนมต2 โดยมขนตอนการพฒนาดงน
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
38. 8
1) สรางไฟลW SampleData.xsd
1. เลอกหนาต)าง Projects ขยายโหนด HelloBPEL แลวคล2[กขวาทโหนด Process Files จากนนเลอกค4า
สง New > Other..
2. ในไดอะลMอก New File เลอก Categories: เปน XML และ File Types: เปน XML Schema แลวกด
Next
3. ก4าหนด File Name: เปน SampleData แลวกด Finish
4. หนาต)าง Editor จะแสดงไฟลW SampleData.xsd ดงร(ป
2) สราง Complex Type ส4าหรบ XML schema
1. ในไฟลW SampleData.xsd เลอกแทป Design แลวลากไอคอน Complex Type ในหนาต)าง Palette
มาไวภายใตโหนด Complex Type
2. โปรแกรม NetBeans จะเพ2ม complex type ใหม)ทชอ newComplexType ใหก4าหนดชอใหม)เปน
simpleProcess จะไดผลลพธWดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
39. 9
3) การเพ2ม local element ส4าหรบ simpleProcess
1. ในไฟลW SampleData.xsd เลอกแทป Design แลวลากไอคอน Element ในหนาต)าง Palette มาไวภาย
ใตโหนด simpleProcess โปรแกรม NetBeans จะเพ2มโหนดใหม)ชอ newElement
2. คล2[กขวาทโหนด newElement แลวเลอก Properties
3. ในไดอะลMอก newElement ก4าหนดค)า Name: เปน paramA และเลอกป6zม ellipse (...) ทค)า Definition
แลวขยายโหนด Built-in Types ใน List แลวเลอกโหนด string โดยแลวกดป6zม Close จะไดผลลพธWดง
ร(ป
4) การเพ2ม global element
1. ในไฟลW SampleData.xsd เลอกแทป Design แลวลากไอคอน Element ในหนาต)าง Palette มาไวภาย
ใตโหนด Element โปรแกรม NetBeans จะเพ2มโหนดใหม)ชอ newElement ภายใตโหนด Element
2. คล2[กขวาทโหนด newElement แลวเลอก Properties
3. ในไดอะลMอก newElement ก4าหนดค)า Name: เปน typeA และเลอกป6zม ellipse (...) ทค)า Definition
แลวขยายโหนด Complex Types ใน List แลวเลอกโหนด simpleProcess โดยแลวกดป6zม Close จะ
ไดผลลพธWดงร(ป
4. กดป6zม Save
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
40. 10
Listing ท 1 ไฟล0 SampleData.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/SampleData"
xmlns:tns="http://xml.netbeans.org/schema/SampleData"
elementFormDefault="qualified">
<xsd:complexType name="simpleProcess">
<xsd:sequence>
<xsd:element name="paramA" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="typeA" type="tns:simpleProcess"/>
</xsd:schema>
การพ#ฒนาไฟลe WSDL
ขนตอนถดไปเปนการสรางไฟลW WSDL ส4าหรบน2ยามเวMบเซอรWว2สทจะใชในโปรเจMค โดยมขนตอนการ
พฒนาดงน
1. เลอกหนาต)าง Projects ขยายโหนด HelloBPEL แลวคล2[กขวาทโหนด Process Files จากนนเลอกค4า
สง New > WSDL Document...
2. ในไดอะลMอก New WSDL Document ก4าหนด File Name: เปน HelloSample เลอกช)อง Import XML
Schema File(s) แลวเลอกไฟลW src/SampleData.xsd โดยการกดป6zม Browse แลวเลอกไฟลWดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
41. 11
3. กด Next ในหนาถดไป ส4าหรบส)วนของ Input: ก4าหนด Message Part Name เปน inputType และ
เลอกป6zม (...) ในส)วน Element Or Type แลวเลอก HelloBPEL > src/SampleData.xsd > Elements
> typeA จากรายการ ดงร(ป
4. ส4าหรบส)วนของ Output: ก4าหนด Message Part Name เปน resultType และเลอกป6zม (...) ในส)วน
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
42. 12
Element Or Type แลวเลอก HelloBPEL > src/SampleData.xsd > Elements > typeA จากรายการ
และจะไดไดอะลMอกดงร(ป
5. กด Next ในหนาถดไป ส4าหรบค)า Binding Subtype เลอกป6zม Document Literal แลวกด Finish จะ
ไดไฟลW HelloSample.wsdl ดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
43. 13
การพ#ฒนา BPEL Process
ขนตอนนเปนการสรางไฟลW BPEL ส4าหรบน2ยาม Business Process ทจะใชในโปรเจMค โดยมขนตอน
การพฒนาดงน
1) สรางไฟลW HelloProcess.bpel
1. เลอกหนาต)าง Projects ขยายโหนด HelloBPEL แลวคล2[กขวาทโหนด Process Files จากนนเลอกค4า
สง New > BPEL Process..
2. ก4าหนด File Name: เปน HelloProcess แลวกด Finish
3. โปรแกรม NetBeans จะสรางไฟลW HelloProcess.bpel และหนาต)าง Editor จะแสดงไฟลWในโหมด
designer ดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
50. 20
Exercise 7: BPEL for Writing to File
แบบฝกหดนเปนการสราง Business Process เพอเขยนขอม(ลทไดรบผ(ใชงานลงไฟลW โดยใชโปรแกรม
BPEL
ขนตอนในการพฒนาโปรแกรม
12. พฒนาโปรเจMค FileBPEL
13. พฒนาไฟลW WSDL ส4าหรบ SOAPBinding
14. พฒนาไฟลW WSDL ส4าหรบ FileBinding
15. พฒนา BPEL Process
16. พฒนาโปรเจMค Composite Application
17. ทดสอบโปรแกรมผ)าน TestCase
18. ทดสอบโปรแกรมผ)าน Web Application
1. การพ#ฒนาโปรเจ`ค FileBPEL
แบบฝกหดนจะท4าการสรางโปรเจMคส4าหรบ Service Oriented Architecture ข-นมาใหม) โดยจะมขนตอน
การพฒนาดงน
6. เลอกเมน( File > New Project
7. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Projects เปน BPEL Module แลว
กด Next
8. ก4าหนด Project Name เปน FileBPEL แลวกด Finish
2. การพ#ฒนาไฟลe WSDL สSาหร#บ SOAPBinding
ขนตอนถดไปเปนการสรางไฟลW WSDL ส4าหรบ SOAPBinding ส4าหรบน2ยาม Business Process ทจะ
พฒนาข-น เพอใหสามารถเรยกใชเปนเวMบเซอรWว2สได โดยมขนตอนการพฒนาดงน
3. เลอกหนาต)าง Projects คล2[กขวาทโหนด FileBPEL ใหเลอก New > WSDL Document ..
4. ในไดอะลMอก New WSDL Document ก4าหนด File Name: เปน DataIO ก4าหนด WSDL Type: เปน
Concrete WSDL Document และก4าหนด Binding เปน SOAP และ Types เปน RPC Literal ดง
แสดงในร(ปท 1 แลวกด Next
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
51. 21
ร5ร5ปท 1 แสดงการก4าหนดค)า WSDL Document
5. ในหนาถดไป ส4าหรบส)วนของ Input: ก4าหนด Message Part Name เปน id กด Add แลวเพ2ม input
ส4าหรบ firstName, lastName, salary (int) และส4าหรบส)วนของ Output: ก4าหนด Message Part
Name เปน result ดงแสดงในร(ปท 2 จากนนกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan