SOA Using GlassFishESB and NetBeans [in Thai]

2,376 views
2,310 views

Published on

2 Comments
1 Like
Statistics
Notes
No Downloads
Views
Total views
2,376
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
245
Comments
2
Likes
1
Embeds 0
No embeds

No notes for slide

SOA Using GlassFishESB and NetBeans [in Thai]

  1. 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. 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. 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. 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 ร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. 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. 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. 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
  9. 9. 9 4. ก4าหนดค)า Initial WSDL (URL/file) เปน http://www.webservicex.com/CurrencyConvertor.asmx?wsdl แลวกด Finish 5. โปรแกรมจะสรางโปรเจMคนข-นมา และม WSDL ของเวMบเซอรWว2สแสดงข-นมา หทดลองเลอกโหนด CurrencyConvertorSoap จะเหMนรายละเอยดของ WSDL ดงตวอย)างในร(ป 6. ขยายโหนด CurrencyConvertorSoap แลวเลอกโอเปอรWเรชน ConversionRate แลวคล2[กขวาเลอก ค4าสง New Request 7. ในไดอะลMอก New Request ก4าหนดค)าเปน Request1 8. หนาต)าง 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> 9. กดป6zม submit request (เครองหมายสเขยว) โปรแกรมจะได SOAP Response กลบมาดงตวอย)าง <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <ConversionRateResponse xmlns="http://www.webserviceX.NET/"> <ConversionRateResult>34.105</ConversionRateResult> </ConversionRateResponse> </soap:Body> </soap:Envelope> Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  10. 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. 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. 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. 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. 14. 5 ร5ปท 5 แสดงรายละเอยดของ WSDL Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  15. 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. 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. 17. 8 4. โปรแกรม NetBeans จะสราง class ตางๆ ดงร&ป 5. กดป)*ม Finish Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  18. 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. 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. 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. 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. 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. 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. 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
  25. 25. 7 <H2> Google Calendar Account</H2> <p> Username : <input type="text" name="googleUser" value="" /> <br> Password : <input type="password" name="googlePwd" value="" /> <H2> Twitter Account </H2> <p> Username : <input type="text" name="twitterUser" value="" /> <br> Password : <input type="password" name="twitterPwd" value="" /> <p><input type="submit" value="Show Today Events" /> </form> </body> </html> 2. CalendarServlet.java โปรแกรม Servlet เพ"อแสดงนดหมายของผ&ใชใน Google Account ทระบเพ"อมาแสดงดงตวอย+างในร&ป โปรแกรม Servlet นจะเรยกใช Google API ซ2งผ&ใชจะตองทาการดาวน0โหลดไฟล0 java/lib/gdata-calendar-1.0.jar และ java/lib/gdataclient-1.0.jar มาจาก http://code.google.com/p/gdata-java-client/downloads/list และตอง Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  26. 26. 8 ดาวน0โหลดไฟล0 google-collect-1.0-rc1.zip มาจาก http://code.google.com/p/ google-collections/downloads/list จากนนจะตองทาการต-ดตง Library นใน NetBeans โดยมขนตอนดงน 1. เล"อกเมน& Tool > Library.. 2. ในไดอะล5อก Library Manager ใหเล"อก New Library.. แลวกาหนด Library Name เปน G ฏ ata 3. กาหนด Classpath ของ GData เปน ไฟล0ต+างๆดงน • gdata-base-1.0.jar • gdata-calendar-2.0.jar • gdata-calendar-meta-2.0.jar • gdata-client-1.0.jar • gdata-client-meta-1.0.jar • gdata-core-1.0.jar 4. กาหนด Sources เปน [$gdata-director$]gdatajavasrc 5. กาหนด Javadoc เปน [$gdata-director$]gdatajavadoc 6. จากนนสราง Libray ทช"อ GoogleCollection โดยใหกาหนด Classpath เปน • google-collect-1.0-rc1.jar • google-collect-testfw-1.0-rc1.jar จากนนจะตองทาการเพ-ม Library ทงสองใน Web Project ทพฒนาข2น Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  27. 27. 9 โปรแกรม CalendarServlet จะมเมธอดในการ Authentication ของ Twitter เพ"อกาหนด username และ password โดยม source code ดงน private static String CLASS_NAME = TwitterWhatAreYouDoingServiceAuthenticator.class.getSimpleName(); private static String ATTR_PREFIX = CLASS_NAME.toLowerCase(); private static final String PROP_FILE = ATTR_PREFIX + ".properties"; public void setAuthenticationForTwitter(String username, String password) { try { Properties props = new Properties(); props.load(TwitterWhatAreYouDoingServiceAuthenticator.class.getResourceAsStream(PROP_FILE)); props.setProperty("username", username); props.setProperty("password", password); } catch (IOException ex) { Logger.getLogger(TwitterWhatAreYouDoingServiceAuthenticator.class.getName()).log(Level.SEVERE, null, ex); } } และมเมธอดในการเรยกนดหมายทงหมดใน Google Calendar โดยจะเรยกเมธอด Calendar.getInstance() เพ"อเอาวนเวลาป?จจบนมา จากนนจะตองแปลงวนเวลาใหอย&+ในร&ปแบบดงน dd-mm- yyyyThh:mm:ss เพ"อส+งเปนพาราม-เตอร0ของ Google Calendar ในการหาการนดหมายในช+วงวน เวลาระหว+างตวแปร startTime ถ2งตวแปร endTime public CalendarEventFeed getTodayEvents(String username, String password) { try { CalendarService myService = new CalendarService("exampleCo-exampleApp-1"); myService.setUserCredentials(username, password); Calendar today = Calendar.getInstance(); int day = today.get(Calendar.DAY_OF_MONTH); String dayStr = "" + day; if (day < 10) { dayStr = "0" + day; } int month = today.get(Calendar.MONTH) + 1; String monthStr = "" + month; if (month < 10) { monthStr = "0" + month; } int year = today.get(Calendar.YEAR); String todayStr = year + "-" + monthStr + "-" + dayStr; String startTime = todayStr + "T00:00:00"; String endTime = todayStr + "T23:59:59"; URL feedUrl = new URL("http://www.google.com/calendar/feeds/" + username + "/private/full"); CalendarQuery myQuery = new CalendarQuery(feedUrl); myQuery.setMinimumStartTime(DateTime.parseDateTime(startTime)); myQuery.setMaximumStartTime(DateTime.parseDateTime(endTime)); CalendarEventFeed resultFeed = myService.query(myQuery, CalendarEventFeed.class); Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  28. 28. 10 return resultFeed; } catch (Exception ex) { ex.printStackTrace(); return null; } } สาหรบเมธอด processRequest จะม source code ดงน protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String googleUser = request.getParameter("googleUser"); String googlePwd = request.getParameter("googlePwd"); CalendarEventFeed resultFeed = getTodayEvents(googleUser, googlePwd); String twitterUser = request.getParameter("twitterUser"); String twitterPwd = request.getParameter("twitterPwd"); setAuthenticationForTwitter(twitterUser, twitterPwd); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet CalendarServlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1> Today Events are </h1>"); out.println(" <form action='TwitterUpdate'>"); for (int i = 0; i < resultFeed.getEntries().size(); i++) { CalendarEventEntry entry = resultFeed.getEntries().get(i); String eventTitle = entry.getTitle().getPlainText(); String eventDescription = entry.getPlainTextContent(); out.println("<input type='checkbox' name='eventName' value='" + eventTitle + " : " + eventDescription + "'/>"); out.println("<b>" + eventTitle + "</b>"); out.println("t" + eventDescription); for (int j = 0; j < entry.getTimes().size(); j++) { When when = entry.getTimes().get(j); out.println("t" + when.getStartTime()); out.println("t" + when.getEndTime() + "<br>"); } } out.println("<p> <input type='submit' value='Twitter Notification' />"); out.println("<input type='reset' value='Reset' />"); out.println("</form>"); out.println("</body>"); out.println("</html>"); out.close(); } 3. TwitterUpdate.java โปรแกรม Calendar Servlet จะเรยกใช Twitter Update ซ2งมการเรยกใชเว5บเซอร0ว-สทช"อ Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  29. 29. 11 updateStatus โดยการเขยน source code สามารถทาไดโดยการลากเซอร0ว-สดงกล+าวมาไวในหนาต+าง Editor แลวปรบปรง source code ดงน protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet TwitterUpdate</title>"); out.println("</head>"); out.println("<body>"); String[] events = request.getParameterValues("eventName"); for (int i = 0; i < events.length; i++) { String status = "Today Event: " + events[i] + " [Auto message from my own Java Application]"; String inReplyToStatusId = null; String format = "xml"; try { RestResponse result = TwitterWhatAreYouDoingService.updateStatus(request, response, 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. //out.println("The SaasService returned: "+result.getDataAsString()); } catch (Exception ex) { ex.printStackTrace(); } } out.println("</body>"); out.println("</html>"); } finally { out.close(); } } เราสามารถทจะทดลองรนโปรแกรมน แลวตรวจสอบผลลพธ0จากการอฟเดตใน Twitter ดงร&ป Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  30. 30. 12 Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  31. 31. 1 Exercise 5: Google Map Web Services แบบฝกหดในบทนเปนตวอย)างการใช Google Map Web Services เพอเขยน Web Application เพอ แสดงต4าแหน)งของโรงพยาบาลทเกMบรายละเอยดทอย()ในฐานขอม(ล การสรMางฐานขMอม5ลโรงพยาบาล ขนตอนแรกจะเปนการสราง table และเตรยมขอม(ลเพอใชในแบบฝกหด โดยใชโปรแกรม NetBeans หรอ MySQL Query Browser เพอสราง Table ทชอ bkk_hospital ในฐานขอม(ล MySQL ทชอ test โดย ก4าหนดใหม column ต)างๆ ดงน hospital_id INTEGER Primary Key name VARCHAR(60) address VARCHAR(100) city VARCHAR(30) zipcode VARCHAR(5) หรอรนไฟลW 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; ขนตอนต)อมาใหใส)ขอม(ลรายละเอยดทอย()ของโรงพยาบาลใน table ทสรางข-น โดยการรน Store Procedure ดงน 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 Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  32. 32. 2 Road, Phaya Thai', 'Bangkok', '10400') การสราง Enterprise Application Project แบบฝกหดนจะสราง Project ทเปน Enterprise Application โดยม Entity Class ทช"อ BkkHospital เพ"อทา ORM (Obeject Relational Mapping) กบ table ทช"อ bkk_hospital และมโปนแกรม Java Servlet ในการแสดงรายช"อโรงพยาบาลทอย&+ในฐานขอม&ลใหผ&ใชเล"อกแลวเรยกใชโปรแกรม Java Servlet อกโปรแกรม ในการแสดงตาแหน+งของโรงพยาบาลจาก Google Map โดยมขนตอนการสรางโปรเจ5คดงน 1. เล"อกเมน& File > New Project.. 2. ในไดอะล5อก New Project ใหเล"อก Categories เปน Java EE และเล"อก Projects เปน Enterprise Application แลวกด Next 3. กาหนด Project Name: เปน BkkHospitalGoogleMap แลวเล"อก Project Location: เปน Director ทเราตองการจะเก5บไฟล0ไว จากนนเล"อก Server เปน GlassFish V2 แลวกด Finish การพฒนาโปรแกรม Entity Class ขนตอนนจะเปนการสราง Entity Class จาก table ทช"อ bkk_hospital ซ1งมการสรางมากอนแลว โดยม ขนตอนการพฒนาโปรแกรมนมดงน 1. เล"อกหนาต+าง Projects แลวคล-:กขวาทโหนด BkkHospitalGoogleMap-ejb จากนนเล"อกคาสง New > Other.. 2. ในไดอะล5อก New File ใหเล"อก Categories ทช"อ Persistence เล"อก File Types: เปน Entity Classes from Database แลวกด Next 3. ในไดอะล5อก New Entity Classes from Database ใหเล"อก Data Sources: เปน jdbc:mysql//localhost:3306/test และ Selected Tables: เปน bkk_hospital ดแลวกด Next 4. ในไดอะล5อกถดไปใหระบ Package: เปน entity แลวกดป6ม Create Persistence Unit... 5. ในไดอะล5อก Create Persistence Unit... กาหนด Persistence Unit Name: เปน HospitalGoogleMapPU และค+า Presistence Libray เปน TopLink แลวกด Create 6. กด Finish Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  33. 33. 3 การพฒนาโปรแกรม BkkHospitalFacade (Session Bean) โปรแกรม BkkHospitalFacade จะเปน Session Bean เพ"อสราง Business method ในการสราง แกไข ลบ และเรยกด&ขอม&ลของ table ทสอดคลองกบ Entity Class โดยจะมขนตอนการพฒนาดงน 1. เล"อกหนาต+าง Projects แลวคล-:กขวาทโหนด BkkHospitalGoogleMap-ejb จากนนเล"อกคาสง New > Other... 2. ในไดอะล5อก New File ใหเล"อก Categories ทช"อ Persistence เล"อก File Types: เปน Session Beans for Entity Classes แลวกด Next 3. ในไดอะล5อก New Session Beans for Entity Classes ใหเล"อก Selected Entity Classes: เปน entity.BkkHospital แลวกด Next 4. ในไดอะล5อกถดไปใหระบ Package: เปน entity ส+วนค+าอ"นๆ เปนตามทตงไว แลวกด Finish การพฒนาโปรแกรม HospitalSelector.java โปรแกรม HospitalSelector.java เปนโปแกรมจาวา Servlet เพ"อแสดงรายช"อโรงพยาบาลทเก5บในฐาน ขอม&ลโดยจะแสดงใน Drop-down List และเม"อผ&ใชเล"อกโรงพยาบาลโปรแกรมจะส+งต+อไปยงโปรแกรม Servlet ทช"อ DisplayLocation.java เราสามารถทจะพฒนาโปรแกรม HospitalSelector.java ตามขนตอนในการ พฒนา Java Servlet ทอธ-บายไวในแบบฝกหดทผ+านมา โดยม source code ดงน package controller; import entity.BkkHospital; import entity.BkkHospitalFacadeLocal; import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HospitalSelector extends HttpServlet { @EJB private BkkHospitalFacadeLocal bkkHospitalFacade; protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  34. 34. 4 List<BkkHospital> hospitals = bkkHospitalFacade.findAll(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet HospitalSelector</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1> Hospital in Bangkok </h1>"); out.println("<form action='DisplayLocation'>"); for (BkkHospital hospital : hospitals) { out.println("<input type='radio' name='hospital_id' value='" + hospital.getHospitalId() + "' />" + hospital.getName() + ", " + hospital.getAddress() + ", "+ hospital.getCity() + ", " + hospital.getZipcode() +"<br>"); } out.println("<input type='submit' value='Show Location' />"); out.println("</form>"); out.println("</body>"); out.println("</html>"); } .... } การพฒนาโปรแกรม DisplayLocation.java โปรแกรม DisplayLocation.java เปนโปรแกรม Servlet ทเรยกใชเว5บเซอร0ว-สของ Google Map แสดงแสดงแผนทของโรงพยาบาลทเล"อกจาก HospitalSelector.java โดยมขนตอนการพฒนาโปรแกรมดงนดงน 1. เล"อกหนาต+าง Projects แลวคล-:กขวาทโหนด HospitalGoogleMap จากนนเล"อกคาสง New > Other 2. ในไดอะล5อก New File ใหเล"อก Categories ทช"อ Web เล"อก File Types: เปน Servlet แลวกด Next 3. กาหนด Class Name: เปน DisplayLocation และ Package เปน controller แลวกด Finish 4. เล"อกหนาต+าง Services แลวขยายโหนด Web Services > Google > Map Service 5. ในหนาต+าง Editor คล-:กขวา sourec code แลวเล"อกคาสง Insert Code.. > Call Enterprise Bean ... แลวเล"อก BkkHospitalFacade 6. ลากเซอร0ว-ส getGoogleMap มาใส+ไวในหนาต+าง Editor ทแสดง source code ของไฟล0 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(); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet DisplayLocation</title>"); out.println("</head>"); out.println("<body>"); try { Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  35. 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. 36. 6 Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  37. 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. 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. 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. 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. 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. 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. 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
  44. 44. 14 . 2) การเพ2ม partner link 1. ในไฟลW HelloProcess.bpel เลอกแทป Design แลวลากไอคอน HelloSample.wsdl ในหนาต)าง Project มาไวภายใตหนาต)าง design 2. โปรแกรมจะแสดงไดอะลMอก PartnerLink1 [Partner Link] – Property Editor ใหใชค)าทก4าหนดมาแลว กด OK 3) การเพ2มธ6รกรรม Receive 1. ในไฟลW HelloProcess.bpel เลอกแทป Design แลวลากไอคอน Receive ในหนาต)าง Palette มาไวมา ไวตรงบลMอกธ6รกรรมว)างเปล)า 2. โปรแกรมจะก4าหนดธ6รกรรม Receive ทชอ Receive1 ในหนาต)าง Design ใหคล2[กทไอคอน Edit ต4าแหน)งบนธ6รกรรม Receive1 3. ในไดอะลMอก Receive1 [Receive] - – Property Editor ใหก4าหนด Name: เปน start และเลอก Partner Link: เปน PartnerLink1 4. ในช)อง Input Variable: กดป6zม Create.. เมอไดอะลMอก New Input Variable แสดงข-น ใหก4าหนด Name: เปน inputVar แลวกด OK จะไดไดอะลMอกดงร(ป Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  45. 45. 15 5. กด OK จะได HelloProcess ดงร(ป 3) การเพ2มธ6รกรรม Reply 1. ในไฟลW HelloProcess.bpel เลอกแทป Design แลวลากไอคอน Reply ในหนาต)าง Palette มาไวในหนาต)าง design ระหว)าง บลMอกธ6รกรรม Receive1 กบธ6รกรรม Process End 2. โปรแกรมจะก4าหนดธ6รกรรม Reply ทชอ Reply1 ในหนาต)าง Design ใหคล2[กไอคอน Edit ของธ6รกรรม Reply1 3. ในไดอะลMอก Reply1 [Reply] - – Property Editor ใหก4าหนด Name: เปน end และเลอก Partner Link: เปน PartnerLink1 Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  46. 46. 16 4. ในช)อง Output Variable: กดป6ม Create.. เมอไดอะลMอก New Output Variable แสดงข-น z ใหก4าหนด Name: เปน outputVar แลวกด OK 4) การเพ2มธ6รกรรม Assign 1. ในไฟลW HelloProcess.bpel เลอกแทป Design แลวลากไอคอน Assign ในหนาต)าง Palette มาไวในหนาต)าง design ระหว)าง ธ6รกรรม start กบธ6รกรรม end 2. ในหนาต)าง Editor เลอกธ6รกรรม Assign1 แลวเลอกแทป Mapper ท4าการโยงโหนด paramA ในส)วน inputVar ในหนาต)างดานซายเขากบโหนด paramA ในส)วน inputVar ใน หนาต)างดานขวา (เปนการกMอปปŒค)าจากอ2นพ6ตไปยงเอาทWพ6ต) ดงร(ป • 3. จะได BPEL Process ดงร(ป Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  47. 47. 17 4. กดป6ม Save การพฒนาโปรเจ"ค Composite Application ขนตอนนเปนการสราง Composite Application เพ"อทรน SampleBPEL บน BPEL Engine ทใช มาตรฐาน JBI โดยมขนตอนดงน 1. เล"อกเมน& File => New Project.. 2. ในไดอะล5อก New Project ใหเล"อก Categories เปน SOA และ Projects เปน Composite Application แลวกด Next 3. กาหนด Project Name เปน HelloApplication แลวกด Finish 4. ในหนาต+าง Project เล"อกโหนด HelloApplication แลวคล-:กขวาเล"อก Add JBI Module .. 5. ใหเล"อกโปรเจ5ค HelloBPEL แลวกดป6ม Add Project JAR Files 6. โปรแรม NetBeans จะเพ-มโหนด HelloBPEL.jar ภายใต HelloApplication > JBI Module การทดสอบโปรแกรม 1. ทาการ Deploy โปรเจ5ค HelloApplication จะไดหนาต+าง Editor ดงร&ป Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  48. 48. 18 2. ในหนาต+าง Project เล"อกโหนด HelloApplication > Test แลวคล-:กขวาเล"อก New Test Case 3. ในไดอะล5อก New Test Case ใหกาหนด Test Case Name: เปน TestCase1 แลวกด Next 4. ในหนาถดไปใหเล"อกไฟล0 WSDL เปน HelloSample.wsdl แลวกด Next 5. ในหนาถดไปใหเล"อก HelloSampleOperation แลวกด Finish 6. หนาต+าง Editor จะแสดงไฟล0 Input.xml ใหแก source code ส+วน paramA ดงน <sam:paramA>Hello Thana</sam:paramA> 7. เล"อกโหนด TestCase1 แลวคล-:กขวาเล"อก Run 8. จะเห5นผลลพธ0ปรากฎในไฟล0 Output.xml ดง Listing ท 2[หมายเหตการรนครงแรกจะไม+มผลเปรยบ เทยบจ2งแสดงผลเปน fail แต+ครงต+อๆมาจะมผลเปรยบเทยบจ2งระบว+า pass ดงร&ป] Listing ท 2 ผลลพธ0จากการรน HelloBPEL <?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" Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  49. 49. 19 xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://xml.netbeans.org/schema/SampleData" xmlns="http://xml.netbeans.org/schema/ SampleData"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <typeA xmlns="http://xml.netbeans.org/schema/SampleData"> <ns0:paramA xmlns:ns0="http://xml.netbeans.org/schema/SampleData">Hello Thana</ns0:paramA> </typeA> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  50. 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. 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
  52. 52. 22 ร5ปท 2 แสดงการใส)ค)า Input และ Output Messages 2. การพ#ฒนาไฟลe WSDL สSาหร#บ FileBinding ขนตอนถดไปเปนการสรางไฟลW WSDL ส4าหรบ FileBinding เพอเขยนลงไฟลW โดยมขนตอนการพฒนา ดงน 1. เลอกหนาต)าง Projects คล2[กขวาทโหนด FileBPEL ใหเลอก New > WSDL Document .. 2. ในไดอะลMอก New WSDL Document ก4าหนด File Name: เปน FileResult ใหเลอก WSDL Type: เปน Concrete WSDL Document Binding เปน FILE และ Types เปน Write ดงแสดงในร(ปท 3 จากนนกด Next Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  53. 53. 23 ร5ปท 3 แสดงการใส)ค)าส4าหรบ New WSDL Document 3. ในหนาถดไป ก4าหนดค)า File Name: เปน result.txt ส4าหรบ Path: ให กด Browse… เพอเลอก Path: ไปท C:SOA_output (กรณทยงไม)ม folder จะตองท4าการสรางข-นมา) และเลอก File Exists: เปน Append to Existing File ดงแสดงในร(ปท 4 จากนนกด Finish Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  54. 54. 24 ร5ปท 4 แสดงการก4าหนดค)าส4าหรบการเขยนไฟลW 3. การพ#ฒนา BPEL Process ขนตอนนเปนการสรางไฟลW BPEL ส4าหรบน2ยาม Business Process ทจะใชในโปรเจMค โดยมขนตอน การพฒนาดงน 3.1 สรางไฟลW FileProcess.bpel 1. เลอกหนาต)าง Projects แลวคล2[กขวาทโหนด FileBPEL จากนนเลอกค4าสง New > BPEL Process 2. ก4าหนด File Name: เปน FileProcess แลวกด Finish 3. โปรแกรม NetBeans จะสรางไฟลW FileProcess.bpel และหนาต)าง Editor จะแสดงไฟลWในโหมด designer Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  55. 55. 25 3.2 การเพ2ม partner link 1. ในไฟลW FileProcess.bpel เลอกแทป Design แลวลากไอคอน DataIO.wsdl ในหนาต)าง Project มาไว ในแทบเทาทางซายมอภายใตหนาต)าง design 2. ดบเบ2ลคล2[กตรงขอความ PartnerLink1 และเปลยนชอเปน DataIOPartnerLink 3. ลากไอคอน FileResult.wsdl ในหนาต)าง Project มาไวในแทบเทาทางขวามอภายใตหนาต)าง design 4. ดบเบ2ลคล2[กตรงขอความ PartnerLink1 และเปลยนชอเปน FilePartnerLink 3.3 การเพ2มธ6รกรรม Receive 1. ในไฟลW FileProcess.bpel เลอกแทป Design แลวลากไอคอน Receive ในหนาต)าง Palette มาไวตรง บลMอกธ6รกรรมว)างเปล)า 2. โปรแกรมจะก4าหนดธ6รกรรม Receive ทชอ Receive1 ในหนาต)าง Design ใหดบเบ2ลคล2[กธ6รกรรม Receive1 3. ในไดอะลMอก Receive1 [Receive] - – Property Editor ใหก4าหนด Name: เปน start และเลอก Partner Link: เปน DataIOPartnerLink 4. ในช)อง Input Variable: กดป6zม Create เมอไดอะลMอก New Input Variable แสดงข-น ใหก4าหนด Name: เปน inData แลวกด OK 3.4 การเพ2มธ6รกรรม Reply 1. ในไฟลW FileProcess.bpel เลอกแทป Design แลวลากไอคอน Reply ในหนาต)าง Palette มาไวใน หนาต)าง design ระหว)างธ6รกรรม start กบธ6รกรรม Process End 2. โปรแกรมจะก4าหนดธ6รกรรม Reply ทชอ Reply1 ในหนาต)าง Design ใหดบเบ2ลคล2[กธ6รกรรม Reply1 3. ในไดอะลMอก Reply1 [Reply] - – Property Editor ใหก4าหนด Name: เปน end และเลอก Partner Link: เปน DataIOPartnerLink 4. ในช)อง Output Variable: กดป6zม Create เมอไดอะลMอก New Output Variable แสดงข-น ใหก4าหนด Name: เปน outData แลวกด OK 3.5 การเพ2มธ6รกรรม Invoke ส4าหรบ write 1. ในไฟลW FileProcess.bpel เลอกแทป Design แลวลากไอคอน Invoke ในหนาต)าง Palette มาไวใน หนาต)าง design ระหว)าง start กบธ6รกรรม end Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  56. 56. 26 2. โปรแกรมจะก4าหนดธ6รกรรม Invoke ทชอ Invoke1 ในหนาต)าง Design ใหดบเบ2ลคล2[กธ6รกรรม Invoke1 3. ในไดอะลMอก Invoke1 [Invoke] - – Property Editor ใหก4าหนด Name: เปน invokeWriteToFile และเลอก Partner Link: เปน FilePartnerLink และ Operation: เปน write 4. ในช)อง Input Variable: กดป6zม Create เมอไดอะลMอก New Input Variable แสดงข-น ใหก4าหนด Name: เปน inFile แลวกด OK 3.6 การเพ2มธ6รกรรม Assign 1. ในไฟลW FileProcess.bpel เลอกแทป Design แลวลากไอคอน Assign ในหนาต)าง Palette มาไวใน หนาต)าง design ระหว)าง ธ6รกรรม start กบธ6รกรรม invokeWriteToFile 2. ในหนาต)าง Editor เลอกธ6รกรรม Assign1 ในหนาต)าง BPEL Mapper ท4าการเชอมโยงขอม(ลในโหนด inData ทางดานซายมอ โดยเลอก String > Concat จากนนเชอมโยง 1. firstName เขาเปน String ช)องท 1 2. ‘ ‘ เปน String ช)องท 2 3. lastName เขาเปน String ช)องท 3 4. ‘ => ‘ เปน String ช)องท 4 5. salary เขาเปน String ช)องท 5 6. จากนนเชอมโยง return String ไปยง part1 ใน inFile ทางดานขวามอ ดงแสดงในร(ปท 5 ร5ปท 5 แสดง Business Rule ระหว)าง start และ invokeWriteToFile 3. ในไฟลW FileProcess.bpel เลอกแทป Design แลวลากไอคอน Assign ในหนาต)าง Palette มาไวใน หนาต)าง design ระหว)าง ธ6รกรรม invokeWriteToFile กบธ6รกรรม end 4. ในหนาต)าง Editor เลอกธ6รกรรม Assign2 ในหนาต)าง BPEL Mapper เลอก String > String Literal แลวก4าหนดค)าเปน Success เชอมโยงฟ~ลดWระหว)าง string literal กบ result ทอย()ใน outData ดง แสดงในร(ปท 6 Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  57. 57. 27 ร5ปท 6 แสดง Business Rule ระหว)าง invokeWriteToFile และ end 5. เราจะไดโปรแกรม BPEL ดงแสดงในร(ปท 7 ร5ปท 7 แสดง BPEL Process ของทงระบบ 6. Clean and Build โปรเจMค 4. การพ#ฒนาโปรเจ`ค Composite Application ขนตอนนเปนการสราง Composite Application เพอทรน FileBPEL บน BPEL Engine ทใชมาตรฐาน JBI โดยมขนตอนดงน 1. เลอกเมน( File > New Project Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  58. 58. 28 2. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Projects เปน Composite Application แลวกด Next 3. ก4าหนด Project Name เปน FileCompositeApp แลวกด Finish 4. ในหนาต)าง Project เลอกโหนด FileCompositeApp แลวคล2[กขวาเลอก Add JBI Module.. 5. ใหเลอกโปรเจMค FileBPEL แลวกดป6zม Add Project JAR Files 6. โปรแรม NetBeans จะเพ2มโหนด FileBPEL.jar ภายใต FileCompositeApp > JBI Module 7. คล2[กขวาท FileCompositeApp เลอก Clean and Build 8. คล2[กท Service Assembly จะเหMนผลลพธWดงแสดงในร(ปท 8 ร5ปท 8 แสดง Service Assembly ของ FileCompositeApp 5. การทดสอบโปรแกรมผlาน TestCase 9. ท4าการ Deploy โปรเจMค FileCompositeApp 10. ในหนาต)าง Project เลอกโหนด FileCompositeApp > Test แลวคล2[กขวาเลอก New Test Case 11. ในไดอะลMอก New Test Case ใหก4าหนด Test Case Name: เปน TestCase1 แลวกด Next 12. หนาถดไปใน FileBPEL ใหเลอกไฟลW WSDL เปน DataIO.wsdl แลวกด Next 13. ในหนาถดไปใหเลอก DataIOOperation แลวกด Finish 14. หนาต)าง Editor จะแสดงไฟลW Input.xml ใหแก source code ดงน <id>1234</id> <firstName>Somjai</firstName> <lastName>Jaidee</lastName> <salary>38000</salary> 15. กดป6zม Save เลอกโหนด TestCase1 แลวคล2[กขวาเลอก Run 16. จะเหMนผลลพธWปรากฎในไฟลW Output.xml ดงแสดงในร(ปท 9 Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
  59. 59. 29 ร5ปท 9 แสดงผลลพธWทไดจากการรน TestCase1 17. และจะไดไฟลW result.txt ในไดเรMกทอร c:SOA_output ซ-งมขอม(ลดงน Somjai Jaidee => 38000 6. การพ#ฒนาโปรแกรมผlาน Web Application ท4าการคนหาต4าแหน)ง url ของ soap:address ตามขนตอนดงน 1. คล2[กท Service Assembly ใน FileCompisiteApp และคล2[กท DataIOPort 2. ในหนาต)าง properties ใหท4าการ copy ค)าของ soap:address 3. ทดสอบโดยเป~ด Web Browser แลว paste ค)าท copy ไว จากนนใหท4าการเปลยนค)าของ URL ใหเปน ดงน http://localhost:9080/DataIOService/DataIOPort?WSDL พฒนาโปรแกรม Web Application เพอใหผ(ใชปsอนค)าขอม(ลต)างๆ จากนนโปรแกรมจะท4าการเขยน ขอม(ลลงไฟลW โดยมขนตอนการพฒนาดงน 1. เลอกเมน( File > New Project 2. ในไดอะลMอก New Project ใหเลอก Categories เปน Web และ Web Application แลวกด Next 3. ก4าหนด Project Name เปน FileBPUI แลวเลอก Project Location เปน folder ทเราตองการจะเกMบ ไฟลWไว 4. จากนนเลอก Server เปน GlassFish V2 ก4าหนด Jave EE Version: เปน Java EE 5 แลวกด Finish 5. ในช)อง Frameworks ใหเลอก Visual Web JavaServer Faces จากนนกด Finish 6. คล2[กขวาทโหนด FileBPUI จากนนเลอกค4าสง New > Other… ใหเลอก Categories เปน Web Services และ Web Service Client แลวกด Next 7. ในไดอะลMอก New Web Service Client ใหเลอก WSDL URL: แลวใส) URL เปน http://localhost:9080/DataIOService/DataIOPort?WSDL แลวกด Finish 8. เลอกไปท Page1.jsp ท4าการออกแบบ Page Layout ดงแสดงในร(ปท 10 Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan

×