Java Web Services and SOA Exercises [in Thai]

11,735 views
11,604 views

Published on

Hand on exercises for "Java Web Services and SOA" training on 22-24 April 2013

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
11,735
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1,547
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Java Web Services and SOA Exercises [in Thai]

  1. 1. 1Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanHand-onExercisesJava Web Servicesand SOAUsing NetBeans IDE with Open ESBGlassFish Server and MySQLDatabaseAssoc.Prof.Dr. Thanachart NumnondaandAssist.Prof.Dr. Thanisa KruawaisayawanApril 2013
  2. 2. 2Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercisesExercise 1: Calling Existing Web Services 3Exercise 2: Java Web Services 11Exercise 3: Axis2 Web Services 16Exercise 4: การเชื่อมตอกับ MySQL Database 22Exercise 5: Java Web Services from Session Bean (1) 29Exercise 6: Java Web Services from Session Bean (2) 40Exercise 7: RESTful Web Services 53Exercise 8: Google Map Web Services 57Exercise 9: การพัฒนาโปรแกรมเว็บเพื่อติดตอฐานขอมูล MongoDB 64Exercise 10: Developing a Simple Synchronous BPEL Program 72Exercise 11: BPEL for Writing to File 82Exercise 12: Simple BPEL Invoking Web Services 95
  3. 3. 3Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 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 Project2. ในชอง Initial WSDL ใหใสhttp://www.webservicex.com/CurrencyConvertor.asmx?wsdl ดังแสดงในรูปที่ 1
  4. 4. 4Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 1 แสดงการสราง soapUI Project ใน soapUI3. จากนั้นกดปุม OK โปรแกรมจะทําการสรางโปรเจ็คนี้ขึ้นมา4. ขยายโหนด ConversionRate ของ CurrencyConvertorSoap แลวดับเบิ้ลคลิ๊กที่ Request15. ในหนาตาง Editor จะแสดงคาของ SOAP Request ที่จะสงไป ใหใสคาดังนี้<soapenv:Envelopexmlns: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>
  5. 5. 5Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan6. กดปุม 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>31.403/ConversionRateResult></ConversionRateResponse></soap:Body></soap:Envelope>การทดลองที่ 2เราสามารถทดสอบการใชงาน SoupUI กับเว็บเซอรวิสที่ใชในการตรวจสอบเลขประจําตัวประชาชนวาถูกตองหรือไม ตามขั้นตอนดังนี้1. ในโปรแกรม soapUI เลือกเมนู File > New soapUI Project2. ในชอง Initial WSDL ใหใสhttps://rdws.rd.go.th/ServiceRD/CheckTINPINService.asmx?WSDL แลวกด OK3. ขยายโหนด ServicePIN ใน CheckTINPINServiceSoap แลวดับเบิ้ลคลิ๊กที่ Request14. ในหนาตาง Editor จะแสดงคาของ SOAP Request ใหทําการใสคาของ username และ passwordเปน anonymous และใสเลขประจําตัวประชาชนที่ตองการทดสอบ โดยแสดงตัวอยางไดดังนี้:<chec:ServicePIN><!--Optional:--><chec:username>anonymous</chec:username><!--Optional:--><chec:password>anonymous</chec:password><!--Optional:--><chec:PIN>3605699082386</chec:PIN></chec:ServicePIN>:5. กดปุม submit request (เครื่องหมายสีเขียว) ที่อยูทางซายบนโปรแกรมจะได SOAP Response กลับมาดังตัวอยาง:
  6. 6. 6Java 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>การทํางานเสร็จสมบูรณ&lt;br> Success"</Description></Message></NewDataSet></diffgr:diffgram>:การทดลองที่ 3การพัฒนา Web Service Clientแบบฝกหัดนี้จะสราง Web Application Project ขึ้นใหม เพื่อใชในการเรียก Web Servicesโดยมีขั้นตอนการพัฒนาดังนี้1. เลือกเมนู File > New Project2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java Web และ Projects เปน WebApplication แลวกด Next3. กําหนด Project Name เปน ExistingWSDemo แลวเลือก Project Location เปน folderที่เราตองการจะเก็บ Project ไว แลวกด Next4. เลือก Server เปน GlassFish Server 3.1.2 กําหนด Jave EE Version: เปน Java EE 6 Webดังแสดงในรูปที่ 2 แลวกด Finish
  7. 7. 7Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 2 แสดงไดอะล็อก New Web Application5. คลิ๊กขวาที่โหนด ExistingWSDemo จากนั้นเลือกคําสั่ง New > Other… ใหเลือก Categories เปนWeb Services และ File Types เปน Web Service Client แลวกด Next6. ในไดอะล็อก New Web Service Client ใหเลือก WSDL URL: แลวใส URL เปนhttp://www.pttplc.com/webservice/pttinfo.asmx?wsdl ดังแสดงในรูปที่ 3 แลวกด Finish
  8. 8. 8Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 3 แสดงไดอะล็อก New Web Service Client7. ในหนาตาง Projects จะมี Folder ที่ชื่อ Web Service References ขึ้นมา8. คลิ๊กขวาที่ ExistingWSDemo แลวเลือก New > Servlet จากนั้นใหกําหนดชื่อเปน PTTServlet และPackage: เปน servlets แลวกด Finish9. ภายในเมธอด processRequest ในไฟล PTTServlet.java ใหลบ sourcecode ที่อยูระหวางคําสั่ง tryและ finally10. คลิ๊กขวาระหวางคําสั่ง try และ finally แลวเลือก Insert Code จากนั้นใหเลือก Call Web ServiceOperation ดังแสดงในรูปที่ 4รูปที่ 4 แสดงการเรียกใช operation ของ Web Service11. เลือก CurrentOilPrice ดังแสดงในรูปที่ 5 แลวกด OK
  9. 9. 9Java 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, HttpServletResponseresponse) 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. 10Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan14. คลิ๊กขวาที่ PTTServlet.java แลวเลือก Run File แลวกด OK จะไดผลลัพธเปนราคาน้ํามันลาสุดดังแสดงในรูปที่ 6รูปที่ 6 แสดงผลลัพธที่ไดจากการเรียกใช Web Service Operation: CurrentOilPrice ของปตท.
  11. 11. 11Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 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) และ WebService Provider (Server) ซึ่งการพัฒนา Web Service Provider สามารถทําได 2 วิธีคือ1. Web Services ที่รันบน Web Server โดยใช Java Servlet2. 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 Project2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java Web และ Projects เปน WebApplication แลวกด Next3. กําหนด Project Name เปน TaxWSDemo แลวเลือก Project Location เปน folderที่เราตองการจะเก็บ Project ไว4. จากนั้นเลือก Server เปน GlassFish Server 3.1.2 กําหนด Jave EE Version: เปน Java EE 6Web แลวกด Finish5. คลิ๊กขวาที่โหนด TaxWSDemo จากนั้นเลือกคําสั่ง New > Other… ใหเลือก Categories เปน WebServices และเลือก File Types เปน Web Service แลวกด Next6. ในไดอะล็อก New Web Service กําหนด Web Service Name: เปน TaxService และ Package:เปน ws แลวกด Finish7. โปรแกรมจะประกาศ Web Services ที่ชื่อ TaxService ในโหนด Web Services ของหนาตาง Projectและหนาตาง Editor จะแสดงไฟลที่ชื่อ TaxService.java8. ในหนาตาง Projects ขยายโหนด TaxWSDemo > Web Services แลวคลิ๊กขวาที่โหนด TaxServiceเลือกคําสั่ง Add Operation…9. ในไดอะล็อก Add Operation กําหนด Method เปน calculateTax ชนิดของ Return Type เปน
  12. 12. 12Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawandouble และกดปุม Add เพื่อเพิ่ม Input parameter โดยกําหนด Name เปน income และ Typeเปนชนิด double แลวกด OK10. คลิ๊กที่แทป Source ของ TaxService.java และปรับปรุงเมธอด calculateTax ดังนี้import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebService;@WebService()public class TaxService {@WebMethodpublic 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 Service1. คลิ๊กขวาที่ TaxService ใน Web Services แลวเลือก Test Web Service ดังแสดงในรูปที่ 1รูปที่ 1 แสดงวิธีการทดสอบ Web Service ใน Netbeans2. โปรแกรมจะแสดงหนาจอเพื่อใหเราปอนขอมูลอินพุต ซึ่งคือจํานวนเงินที่ตองการคํานวณภาษีในที่นี้จะใสตัวเลขเปน 730000 และกดปุม calculateTax ดังแสดงในรูปที่ 2
  13. 13. 13Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 2 แสดงหนาตางสําหรับใหทดสอบเรียก Web Service3. โปรแกรมจะเรียกใช Web Services และจะแสดงผลลัพธที่ได พรอมทั้งแสดงคา SOAP Request และSOAP Response ดังแสดงตัวอยางในรูปที่ 3
  14. 14. 14Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 3 แสดงผลลัพธที่ไดจากการเรียกใช Web Service พรอมทั้ง SOAP Request และ SOAP Response4. หลังจากกด Back กลับมาที่หนาเดิมแลว เราสามารถที่จะดูรายละเอียดของไฟล WSDL ของ WebService นี้ได โดยการคลิ๊กเลือกที่ WSDL File ดังแสดงในรูปที่ 4รูปที่ 4 แสดงการคลิ๊กเพื่อเรียกดูรายละเอียดของไฟล WSDL
  15. 15. 15Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan5. โปรแกรมจะทําการเรียก url ชื่อ http://localhost:8080/TaxWSDemo/TaxServiceService?WSDLและจะไดผลลัพธดังแสดงในรูปที่ 5รูปที่ 5 แสดงรายละเอียดของ WSDL6. โปรแกรม 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. 16Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 3: Axis2 Web Servicesแบบฝกหัดนี้เปนการติดตั้ง Axis2 Web Services บน Tomcat Web Server แลัวทดลองพัฒนา Web Serviceโดยใชโปรแกรม NetBeansการติดตั้ง Axis2 บน Tomcatขั้นตอนนี้จะเปนการติดตั้งโมดูล Axis2 เพื่อทําให Tomcat เปน Web Service Provider ที่ทํางานภายใต Axis2Framework โดย Axis2 มีขอดีเหนือ JAX-WS API ในแงที่วา Axis2 มี WS-Securityและสามารถทํางานไดเร็วกวา ซึ่งการพัฒนามีขั้นตอนดังนี้1. ทําการดาวนโฟล axis2.war จาก http://ws.apache.org/axis2/2. คัดลอกไฟล axis2.war ภายใตในไดเร็กทอรี่ที่ชื่อ webapps ที่อยูใน CATALINA_BASE ของ Tomcat3. กรณีที่ไมทราบไดเร็กทอรี่ของ Catalina Base เราสามารถคนหาไดโดยเปดโปรแกรม NetBeansเลือกหนาตาง Services ขยายโหนด Servers แลวคลิ๊กขวาเลือกคําสั่ง Properties ของ ApacheTomcat โดยไดอะล็อก Server จะแสดงไดเร็กทอรี่ของ Catalina Base ดังรูปที่ 1รูปที่ 1 การหาตําแหนงไดเร็กทอรี่ของ Catalina Base4. จะไดไดเร็กทอรี่ภายใต webapps ดังรูปที่ 2
  17. 17. 17Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 2 แสดงโครงสรางไดเร็กทอรี่ของ webapps ภายหลังจากคัดลอกไฟล axis2.war5. ทําการ Start/Restart Tomcat แลวทดสอบ Axis2 โดยการเลือก url ที่ชื่อ http://localhost:8084/axis2/จะไดผลลัพธดังรูปที่ 3 โดยภายใน Services จะมีเว็บเซอรวิสตัวอยางชื่อ Version รันอยูรูปที่ 3 หนาจอของ Tomcat Axis2
  18. 18. 18Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan6. โดยเราสามารถที่จะทดสอบเว็บเซอรวิสนี้โดยใชโปรแกรมเชน Soap UI โดยอางอิงถึง WSDL ที่http://localhost:8084/axis2/services/Version?wsdlการติดตั้ง Axis2 Plugin สําหรับ NetBeansขั้นตอนนี้จะเปนการติดตั้ง Axis2 Plugin เพื่อทําให NetBeans สามารถพัฒนา Axis2 Web Servicesไดโดยมีขั้นตอนดังนี้1. ในโปรแกรม NetBeans เลือกเมนู Tools > Plugins2. ในไดอะล็อก Plugins เลือกแทป Downloaded แลวกดปุม Add Plugins แลวเลือกไปที่ไฟล org-netbeans-modules-websvc-axis2.nbm ซึ่งไดทําการดาวนโหลดมากอนหนานี้3. กดปุม Install แลวกดปุม Next จากนั้นใหทําการยอมรับเงื่อนไข และกดปุม install อีกครั้ง4. เมื่อทําการติดตั้งเสร็จสิ้นแลว ใหเลือก Restart IDE Now เพื่อ restart โปรแกรม NetBeans ขึ้นมาใหมแลวกดปุม Finish โปรแกรม NetBeans เลือกคําสั่ง Tools > Plugin5. จากนั้นจะตองทําการ Config Tomcat เพื่อใหสามารถ deploy Axis2 Web Service ไดโดยอัตโนมัติโดยใหเลือกคําสั่ง Tools > Options6. ในไดอะล็อก Options เลือกแทป Axis2 แลวกําหนดคา Axis2 .aar Files เปนตําแหนงที่เราติดตั้งaxis2.war ลงไป และกําหนดคา Axis URL เปน http://localhost:8084/axis2/7. กําหนด username และ password ของTomcat Manager ใหถูกตอง ดังตัวอยางในรูปที่ 4 แลวกดปุมOK [ขอมูลของ Tomcat Users สามารถคนหาไดจากไฟล CATALINA_BASE/conf/tomcat-users.xml]
  19. 19. 19Java 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 แลวกด Next3. กําหนด Project Name เปน Axis2Demo แลวเลือก Project Location เปน Directorที่เราตองการจะเก็บไฟลไว แลวกด Finish4. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด Axis2Demo จากนั้นเลือกคําสั่ง New > Other5. ในไดอะล็อก New File ใหเลือก Categories เปน Web Services และ Axis2 Service from Javaแลวกด Next
  20. 20. 20Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan6. เลือกชอง Create Empty Web Service แลวกด Next7. ในไดอะล็อกถัดไป กําหนดชื่อ Class Name เปน TaxServices และ Package เปน ws แลวกดFinish8. ปรับปรุง 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 Server10. ทดสอบเว็บเซอรวิสไดโดยรันโปรแกรม Web Browser และพิมพ URL: http://localhost:8084/axis2/จากนั้นคลิ๊ก Services จะเห็นเว็บเซอรวิสที่ชื่อ TaxServices อยู ดังรูปที่ 6
  21. 21. 21Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 6 แสดง TaxServices ภายใน Services11. เราสามารถที่จะทดสอบเว็บเซอรวิสนี้โดยใชโปรแกรมเชน 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. 22Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 4: การเชื่อมตอกับ MySQL Databaseแบบฝกหัดนี้เปนการเริ่มตนใชงาน Database Tool เพื่อเชื่อมตอกับ Table test ในฐานขอมูล MySQLสําหรับเปนตัวชวยใหทํางานไดเร็วขึ้น เชนปกติถาจะ create table ก็ตองเขียน SQL แต Tool นี้มี GUI มาชวยทําใหลดขอผิดพลาด และ สะดวกในการทํางานมากขึ้น ทั้งนี้การทําแบบฝกหัดนี้จะตองมีการ downloadและติดตั้งโปรแกรม MySQL และ MySQL Workbench โดยสามารถทําการ download ไดจากเว็บhttp://dev.mysql.com/การเชื่อมตอ MySQL โดยโปรแกรม MySQL Workbench1. ใหเปดโปรแกรม MySQL Workbench ดังรูปที่ 1 จากนั้นทําตามขั้นตอนดังนี้รูปที่ 1 การเรียกใชงาน Program MySQL Workbench2. ดับเบิ้ลคลิ๊กที่ Connection Name ใส Password ที่กําหนดไวในตอนติดตั้งโปรแกรมMySQLซึ่งจะมีคาเปน root ดังรูปที่ 2รูปที่ 2 การแสดงการเชื่อมตอ Connection เพื่อเขาไปจัดการ Database
  23. 23. 23Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanการสรางตาราง booksขั้นตอนนี้จะเปนการสราง Table ที่ชื่อ books โดยใหอยูภายใต Schema ที่ชื่อ test โดย Tableนี้กําหนดใหมี Column ตางๆ ดังตารางที่ 1ตารางที่ 1 Table booksชื่อColumn ชนิด ขนาด Primary Key Indexisbn varchar 20 Y Ytitle varchar 70 - -author varchar 50 - -price float - - -เราจะใชโปรแกรม MySQL WorkBench ในการที่จะสราง Tableนี้โดยมีขั้นตอนตางๆ ดังนี้1. คลิ๊กที่ icon ชื่อAdd Table... แลวใสชื่อtable และ ชื่อ field ตามตารางที่ 1 ดังรูปที่ 3 แลวกดปุม Apply
  24. 24. 24Java 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. 25Java 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) ;
  26. 26. 26Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanแลว คลิ๊กที่ icon สายฟาสีเหลือง ดังรูปที่ 5 หรือกดCtrl+Shift+Enter เพื่อรันคําสั่ง SQL ทั้งหมดรูปที่ 5 การ Executeคําสั่งเพิ่มขอมูลในตาราง2. เราสามารถที่จะดูขอมูลที่ปอนเขาไปไดโดยการคลิ๊กขวาที่ Table ที่ชื่อ books เแลวลือก Select Rows – Limit 1000 ดังรูปที่ 6รูปที่ 6 การเรียกดูขอมูลใน Table ชื่อ books
  27. 27. 27Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan3. เมื่อติดตั้ง Database แลวเราสามารถที่จะใช NetBeans เพื่อเชื่อมตอกับ Database ไดโดยสําหรับNetbeans 7.3 ใหเลือกที่แทป Services จะเห็น MySQL Driver ที่มีมาใหแลว ซึ่งถาขยายแทบDatabases > Drivers จะเห็น Driver ที่ชื่อ MySQL ใหทําการคลิ๊กขวา แลวเลือก Connect Using4. ใหทําการระบุคาของ Host: และ Port: เปน localhost และ 3306 (กรณีที่ไมไดเปลี่ยนแปลง port ตอนติดตั้ง) ตามลําดับ5. จากนั้นใหระบุฐานขอมูลที่ตองการติดตอ (ในที่นี้ระบุ test)6. สําหรับ User Name: และ Password: ใหใสคาตามที่กําหนดไวในตอนติดตั้งโปรแกรม MySQLซึ่งในที่นี้จะมีคาเปน root และ root โดยไดอะล็อกจะแสดงผลไดดังแสดงในรูปที่ 7รูปที่ 7 แสดงการกําหนดคาใหกับ Database Connection
  28. 28. 28Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan7. กด OK จากนั้นในหนาตาง Runtime ถาขยายแทบ Database จะเห็น Connectionใหมดังแสดงในรูปที่ 8รูปที่ 8 แสดง Connection ไปยัง test Database5. ถาขยายแทบ jdbc:mysql://localhost:3306/test จะเห็นรายการ test > Tables > booksคลิ๊กขวาแลวเลือก View Data... ดังแสดงในรูปที่ 9รูปที่ 9 แสดงการเลือกเพื่อแสดงขอมูลในตาราง books6. จะเห็นขอมูลที่อยูในตาราง books ดังแสดงในรูปที่ 10รูปที่ 10 แสดงขอมูลในตาราง Books
  29. 29. 29Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 5: Java Web Services from Session Bean (1)แบบฝกหัดในบทนี้เปนการพัฒนาโปรแกรม Enterprise Java Bean (EJB) โดยจะเปนการพัฒนาโปรแกรมบน GlassFish Server 3.1.2 เพื่อติดตอกับฐานขอมูล MySQL โปรแกรม EJB บน ApplicationServer จะประกอบดวย Entity Class ที่เชื่อมโยงกับตารางที่ชื่อ books และ Session Bean เพื่อเปนโปรแกรมที่สามารถเรียกใช Entity Class ในการจัดการเพิ่ม แกไข และ ลบขอมูลของตาราง books ไดขั้นตอนในการพัฒนาโปรแกรม1. สราง Enterprise Application Project2. พัฒนา Entity Class3. พัฒนา Session Bean4. พัฒนา Web Application5. พัฒนา Java Web Services จาก Session Beanสามารถที่จะรันโปรแกรมที่มีการติดตอกับ MySQL Database ได ใหทําการดูตําแหนงของ GlassFish จากในNetBeans ดังนี้1. คลิ๊กที่ tab Services ใน NetBeans2. คลิ๊กขวาที่ GlassFish ที่อยูใน Servers แลวเลือก Properties ดังแสดงในรูปที่ 1รูปที่ 1 แสดงการหาตําแหนงของ GlassFish3. จากนั้นใหดูตําแหนงของ domain ใน GlassFish Server จาก Domains Folder: ดังแสดงในรูปที่ 2
  30. 30. 30Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 2 แสดงตําแหนงของ Domain ใน GlassFish4. ไปยังตําแหนงของ Domain ใน GlassFish จากนั้นใหนําไฟล mysql-connector-java-5.1.19-bin.jar(MySQL Driver) ไปใสไวใน folder lib ดังแสดงในรูปที่ 3รูปที่ 3 แสดงการใส MySQL Driver ภายใน Domain ของ GlassFish5. Restart GlassFish โดยคลิ๊กขวาตรง GlassFish ที่อยูใน NetBeans แลวเลือก Restart ดังแสดงในรูปที่4
  31. 31. 31Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 4 แสดงการ Restart GlassFish Serverการสราง Enterprise Application Projectเราจะกําหนดใหโปรแกรมนี้เปนโปรแกม Enterprise Application ซึ่งมีทั้ง EJB Module และ WebModule ขั้นตอนแรกจะเปนการสราง Project ใหมขึ้นมาใน NetBeans ซึ่งมีขั้นตอนดังนี้1. เลือกเมนู File => New Project2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java EE และเลือก Enterprise เปน EnterpriseApplication แลวกด Next3. กําหนด Project Name เปน BookApp แลวเลือก Project Location เปน folder ที่เราตองการจะเก็บproject ไว กด Next4. จากนั้นเลือก Server เปน GlassFish Server 3.1.2 โดยกําหนด Jave EE Version: เปน Java EE 6และใหเลือกชอง Create EJB Module: และ Create Web Application Module: ดังแสดงในรูปที่ 5
  32. 32. 32Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 5 แสดงการสรางโปรเจ็ค Enterprise Application5. กด 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: เปน EntityClasses from Database แลวกด Next3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: เปน New Data Source…โดยใสชื่อ JNDI Name: jdbc/test และเลือกเชื่อมตอไปยังฐานขอมูล test ดังแสดงในรูปที่ 6
  33. 33. 33Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 6 แสดงการสราง Data Source4. กด OK จากนั้นกด Add All >> เพื่อเลือกตารางที่ตองการนํามาสราง Entity Class ซึ่งจะได SelectedTables: เปน books กด Next ดังแสดงในรูปที่ 7
  34. 34. 34Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 7 แสดงการสราง Entity Class จาก Data Source5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity และใหตรวจสอบวา Crate Persistence Unitไดถูกเลือกไว ซึ่ง Persistence Unit จะเปนตัวกําหนดให EJB Container ของ Application Serverรูไดวา Entity Class จะถูกควบคุมดวย Entity Manager ตัวใด และเปนตัวกําหนด Data Sourceที่จะใชกับ Entity Manager นี้6. ไมจําเปนตองเปลี่ยนคาใดๆ จากนั้นกด Next ดังแสดงในรูปที่ 8
  35. 35. 35Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 8 แสดงการสราง Entity Class7. เมื่อกด 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: เปน SessionBeans for Entity Classes แลวกด Next3. จากนั้นกด Add All >> แลวกด Next4. ในไดอะล็อกถัดไปใหระบุ Package: เปน sb และเลือก local ดังแสดงในรูปที่ 9 แลวกด Finish
  36. 36. 36Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 9 แสดงการสราง Session Bean5. โปรแกรมจะสรางไฟลที่ชื่อ 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 แลวกด Next3. กําหนด HTML File Name: เปน findBook แลวกด Finish4. เขียน source code ของไฟล findBook.html ตาม Listing ที่ 1 โดยเราสามารถที่จะลาก icon ประเภทHTML Forms ที่อยูในหนาตาง Palette เพื่อสามารถใหเขียนโปรแกรมไดงายขึ้น
  37. 37. 37Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanListing 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 แลวกด Next3. กําหนด File Name: เปน ShowBook และ Package: เปน servlets กด Next แลวกด Finish4. ในหนาตาง Editor ใหคลิ๊กขวาภายในเมธอด processRequest แลวเลือก Insert Code… > CallEnterprise Bean…5. ในไดอะล็อก Call Enterprise Bean เลือก BooksFacade ที่อยูใน BookApp-ejb แลวกด OK6. โปรแกรมจะเพิ่ม Source code ในการเรียก EJB ดังนี้@EJBprivate 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. 38Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanout.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 Build2. 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 Bean1. เราสามารถเพิ่มชองทางการใหบริการของ Stateless Session Bean ไปเปน Web Servicesไดโดยการแกไขไฟล BooksFacade.java ที่อยูในโหนด BookApp-ejb ดังนี้
  39. 39. 39Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan@WebService@Statelesspublic class BooksFacade extends AbstractFacade<Books> implementsBooksFacadeLocal {@PersistenceContext(unitName = "BookApp-ejbPU")private EntityManager em;@Overrideprotected EntityManager getEntityManager() {return em;}public BooksFacade() {super(Books.class);}@WebMethodpublic 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 UI4. ใหทดลองเพิ่มเมธอดที่ตองการใหบริการเปน Web Services เชน findBookDetailsByTitle
  40. 40. 40Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 6: Java Web Services from Session Bean (2)แบบฝกหัดในบทนี้เปนการพัฒนาโปรแกรม Web Services สําหรับ Java EE ซึ่งจะเปนการพัฒนาบนServer ที่รันบน Java EE โดยชุดคําสั่ง JAX-WS ซึ่งในกรณีนี้จะแสดงขั้นตอนการใช NetBeans สราง WebServices Method ที่ชื่อ findEmployeeDetails จาก Session Bean โดย Service นี้จะเปนการคนหาขอมูลของemployee จาก table ที่ชื่อ employees และ departments ในฐานขอมูล MySQL ซึ่งมีขั้นตอนในการพัฒนาโปรแกรมดังนี้1. สราง Table ที่ชื่อ employees และ departments2. สราง EJB Module3. พัฒนาโปรแกรม Entity Class4. พัฒนาโปรแกรม Session Bean5. สราง Web Application1. การสราง Table ที่ชื่อ employees และ departmentsขั้นตอนแรกจะเปนการสราง table โดยใชโปรแกรม NetBeans ใหทําการคัดลอก script ตอไปนี้แลวใสใน SQL Command Editor ของ NetBeans จากนั้นใหทําการ Run SQL ดังแสดงในรูปที่ 1create 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 UPDATECASCADE);insert into employees values(100,Steven,King,90);insert into employees values(101,Neena,Kochhar,90);
  41. 41. 41Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 1 แสดงการสราง Run SQL เพื่อสรางตารางโดยเมื่อตรวจสอบดูใน tables ของ test จะพบ table ที่ชื่อ employees และ departments ดังแสดงในรูปที่ 2รูปที่ 2 แสดงตารางที่ถูกสรางขึ้นมาการสราง EJB Module1. เลือกเมนู File > New Project2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java EE และเลือก Enterprise เปน EJBModule ดังแสดงในรูปที่ 3 แลวกด Next
  42. 42. 42Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 3 แสดงการสราง EJB Module3. กําหนด Project Name เปน EmployeeWS แลวเลือก Project Location เปน folderที่เราตองการจะเก็บไฟลไว แลวกด Next4. เลือก Server เปน GlassFish Server 3.1.2 กําหนด Jave EE 6 แลวกด Finishการพัฒนา Employees and Departments Entity Classes1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด EmployeeWS จากนั้นเลือกคําสั่ง New > Other2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน Entity Classesfrom Database แลวกด Next3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: เปน jdbc/testเพื่อเลือกการเชื่อมตอไปยังตาราง test ในฐานขอมูล MySQL
  43. 43. 43Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan4. จากนั้นใหเลือกไปที่ตาราง EMPLOYEES แลวกด Add > และคงการเลือก Include Related Tablesไวตาราง EMPLOYEES และ DEPARTMENTS จะถูกยายมาอยูใน Selected Tables: ดังแสดงในรูปที่4 แลวกด Nextรูปที่ 4 แสดงการสราง Entity Class สําหรับ EMPLOYEES และ DEPARTMENTS5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity ดังแสดงในรูปที่ 5 จากนั้นกด Next และ Finish
  44. 44. 44Java 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: เปน SessionBeans for Entity Classes แลวกด Next3. ในไดอะล็อก New Session Beans for Entity Classes กด Add All >> แลวคงการเลือก IncludeReferenced Class ไว ดังแสดงในรูปที่ 6 จากนั้นกด Next
  45. 45. 45Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 6 แสดงการสราง Session Beans For Entity Classes4. ในไดอะล็อกถัดไปใหระบุ Package: เปน sb และเลือก local ดังแสดงในรูปที่ 7 แลวกด Finishรูปที่ 7 แสดงการสราง Session Bean
  46. 46. 46Java 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 BusinessMethod…จากนั้นใหทําการใสขอมูลดังแสดงในรูปที่ 3
  47. 47. 47Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 3 แสดงการเพิ่มเมธอดใน Session Bean2. เพิ่ม source code โดยเพิ่มคําสั่ง annotation เพื่อประกาศให session bean นี้เปน Web Serviceและเมธอด findEmployeeDetails เปน Web Services Method โดยมีคําสั่งดังนี้@WebService@Statelesspublic class EmployeesFacade extends AbstractFacade<Employees> implementsEmployeesFacadeLocal {@PersistenceContext(unitName = "EmployeeWSPU")private EntityManager em;protected EntityManager getEntityManager() {return em;
  48. 48. 48Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan}public EmployeesFacade() {super(Employees.class);}@WebMethodpublic 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 แลวกดปุม Save3. ทําการ Clean and Build และ Deploy Project4. จากนั้นใหคลิ๊กขวาที่ EmployeeFacade ใน Web Services แลวเลือก Test Web Service5. กด WSDL File ในหนา Web Browser จากนั้นใหทําการ copy URL ของ WSDL File ไว เชนhttp://localhost:8080/EmployeesFacadeService/EmployeesFacade?WSDL
  49. 49. 49Java 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แลวกด Next3. กําหนด Project Name เปน EmployeeWSClient จากนั้นเลือก Server เปน Apache Tomcat7.0.14.0 กําหนด Jave EE Version: เปน Java EE 6 แลวกด Finish4. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด EmployeeWSClient จากนั้นเลือกคําสั่ง New > Other..5. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Web Services เลือก File Types: เปน WebService Client แลวกด Next6. ในไดอะล็อก New Web Service Client เลือก WSDL URL: และใสคาhttp://localhost:8080/EmployeesFacadeService/EmployeesFacade?WSDL7. กด Finish โปรแกรมจะแสดง Web Service Reference โดยมี Service ชื่อ EmployeesFacade8. คลิ๊กขวาที่โหนด EmployeeWSClient แลวเลือก New > Servlet..9. กําหนด Servlet Name: เปน EmployeeServlet ใสใน Package: servlets กด Next10. กําหนด URL Pattern(s): เปน /findEmployee แลวกด Finish11. ในหนาตาง Projects ลากโหนด findEmployeeDetails ลงในไฟล EmployeeServlet.java ของหนาตางEditor โปรแกรมจะเพิ่ม source code ใหอัตโนมัติ ใหปรับปรุง source code ในสวนที่เรียกใช WebService ดังนี้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. 50Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanfor (String s : result) {out.print(s + "<BR>");}} finally {out.close();}}private static java.util.List<java.lang.String>findEmployeeDetails(int arg0) {sb.EmployeesFacadeService service = newsb.EmployeesFacadeService();sb.EmployeesFacade port = service.getEmployeesFacadePort();return port.findEmployeeDetails(arg0);}12. กดปุม Saveการทดสอบโปรแกรม1. ทําการ Build และ Deploy โปรเจ็ค EmployeeWSClient2. Run โปรแกรม EmployeeServlet โดยใหใสคาของ URI เปน /findEmployee?id=100 ดังแสดงในรูปที่4 จะไดผลลัพธดังแสดงในรูปที่ 5
  51. 51. 51Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 4 แสดงการกําหนดคา idรูปที่ 5 แสดงผลลัพธของ employee id=1003. ทดลองเปลี่ยน URL ของ Web Browser เปนhttp://localhost:8084/EmployeeWSClient/findEmployee?id=101 จะไดผลลัพธดังแสดงในรูปที่ 6
  52. 52. 52Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 6 แสดงแสดงผลลัพธของ employee id=1014. อาจทําการสรางไฟล findEmployee.html เพื่อรับคา employee id จากผูใช โดยกําหนดใหfindEmployee.html เรียกใช EmployeeServlet ซึ่งจะเรียกใช Web Service เพื่อแสดงผลลัพธอีกที
  53. 53. 53Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 7: RESTful Web Servicesแบบฝกหัดในบทนี้เปนการพัฒนาโปรแกรม RESTful Web Services โดยใชชุดคําสั่ง JAX-RSเพื่อสราง Web Services ที่จะเรียกดูขอมูลจากฐานขอมูล MySQL ผานชุดคําสั่ง Java Persistence API (JPA)ขั้นตอนในการพัฒนาโปรแกรม1. สราง Web Application Project2. พัฒนา Entity Class3. พัฒนา RESTful Web Service จาก Entity Class4. ทดสอบ RESTful Web Service จาก Entity Class1. การสราง Web Application Projectเราจะกําหนดใหโปรแกรมนี้เปนโปรแกม Web Application ขั้นตอนแรกจะเปนการสราง Projectใหมขึ้นมาใน NetBeans ซึ่งมีขั้นตอนดังนี้1. เลือกเมนู File > New Project2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java Web และเลือก Project เปน WebApplication แลวกด Next3. กําหนด Project Name เปน RestfulWS แลวเลือก Project Location เปน Directoryที่เราตองการจะเก็บ Project ไว กด Next4. จากนั้นเลือก Server เปน GlassFish Server 3.1.2 และ Java EE 6 Web แลวกด Finish2. การพัฒนา Entity Classขั้นตอนนี้จะเปนการสราง Entity Class ที่ชื่อ Employees.javaซึ่งจะเปนออปเจ็คที่สอดคลองกับตารางที่ชื่อ employees ใน Oracle โดยมีขั้นตอนการพัฒนาโปรแกรมดังนี้1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด RestfulWS จากนั้นเลือกคําสั่ง New > Other2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน EntityClasses from Database แลวกด Next3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: เปน jdbc/test
  54. 54. 54Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan4. กด OK จากนั้นเลือกเฉพาะ books แลวกด Add >5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity และกด Finish3. การพัฒนา Restful Web Service จาก Entity Classขั้นตอนนี้จะเปนการพัฒนา Restful Web Services เพื่อใหสามารถติดตอกับฐานขอมูลโดยผาน Entity Classที่พัฒนาขึ้นได โดยจะมีขั้นตอนการพัฒนาดังนี้1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด RestfulWS จากนั้นเลือกคําสั่ง New > Other2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Web Services เลือก File Types: เปน RESTfulWeb Services from Entity Classes แลวกด Next4. ในไดอะล็อก New RESTful Web Services from Entity Class กด Add All >>จะไดผลลัพธดังแสดงในรูปที่ 1 แลวกด Next จากนั้นกด Finishรูปที่ 1 การเลือก Entity Class สําหรับ RESTful Web Service
  55. 55. 55Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan4. การทดสอบ RESTful Web Service จาก Entity Classขั้นตอนนี้จะเปนการทดสอบ RESTful Web Services ที่พัฒนาขึ้นโดยจะมีขั้นตอนดังนี้1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด RestfulWS จากนั้นเลือกคําสั่ง Test Restful WebServices2. โปรแกรม Browser จะแสดง uri ของ RESTful Web Services ใหคลิ๊กที่โหนด entity.booksและคลิ๊กปุม Test จะไดผลลัพธดังรูปที่ 2รูปที่ 2 แสดงผลลัพธของหนังสือทั้งหมดที่มีอยู
  56. 56. 56Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan3. ใหคลิ๊กที่ {id} และทดลองปอนขอมูล id เปน 111 แลวกดปุม Test จะไดผลลัพธตัวอยางดังรูปที่ 3รูปที่ 3 แสดงผลลัพธของหนังสือที่มี id (isbn) เทากับ 1114. ทดลองเปลี่ยน methodเปน DELETE เพื่อทดลองทําการลบขอมูลออกจากตาราง books
  57. 57. 57Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 8: Google Map Web Servicesแบบฝกหัดในบทนี้เปนตัวอยางการพัฒนา Web Services และใช Web Applicationเรียกเพื่อแสดงรายละเอียดของโรงพยาบาลที่เก็บที่อยูในฐานขอมูล ซึ่งมีขั้นตอนในการพัฒนาโปรแกรมดังนี้1. สรางฐานขอมูลโรงพยาบาล2. สราง Enterprise Application Project3. พัฒนาโปรแกรม Entity Class4. พัฒนาโปรแกรม BkkHospitalFacade (Session Bean)5. พัฒนาโปรแกรม HospitalSelector.java6. พัฒนาโปรแกรม DisplayLocation.java1. การสรางฐานขอมูลโรงพยาบาลขั้นตอนแรกจะเปนการสราง 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. 58Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanINSERT 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 Project2. ในไดอะล็อก New Project ใหเลือก Categories เปน Java EE และเลือก Projects เปน EnterpriseApplication Project แลวกด Next3. กําหนด Project Name: เปน BkkHospitalGoogleMap แลวเลือก Project Location: เปน Directoryที่เราตองการจะเก็บ Project ไว จากนั้นเลือก Server เปน GlassFish Server 3.1.2 แลวกด Finish3. การพัฒนาโปรแกรม Entity Classขั้นตอนนี้จะเปนการสราง Entity Class จาก table ที่ชื่อ bkk_hospital ซึ่งมีการสรางมากอนแลวโดยมีขั้นตอนการพัฒนาโปรแกรมดังนี้1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap จากนั้นเลือกคําสั่ง New >Other2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน EntityClasses from Database แลวกด Next3. ในไดอะล็อก New Entity Classes from Database ใหเลือก Data Source: jdbc/test4. เลือก bkk_hospital จากนั้นกด Add เพื่อเลือกใหเปน Selected Tables: แลวกด Next5. ในไดอะล็อกถัดไปใหระบุ Package: เปน entity แลวกด Finish
  59. 59. 59Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan4. การพัฒนาโปรแกรม BkkHospitalFacade (Session Bean)โปรแกรม BkkHospitalFacade จะเปน Session Bean เพื่อสราง Business method ในการสราง แกไขลบ และเรียกดูขอมูลของ table ที่สอดคลองกับ Entity Class โดยจะมีขั้นตอนการพัฒนาดังนี้1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap-ejb จากนั้นเลือกคําสั่ง New> Other2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Persistence เลือก File Types: เปน SessionBeans for Entity Classes แลวกด Next3. ในไดอะล็อก New Session Beans for Entity Classes กด Add All > > แลวกด Next4. ในไดอะล็อกถัดไปใหระบุ Package: เปน sb สวนคาอื่นๆ เปนตามที่ตั้งไว แลวกด Finish5. การพัฒนาโปรแกรม HospitalSelector.javaโปรแกรม HospitalSelector.java เปนโปรแกรมจาวา Servlet เพื่อแสดงรายชื่อโรงพยาบาลที่ถูกจัดเก็บอยูในฐานขอมูล โดยจะแสดงในรูปของ radio เพื่อใหผูใชเลือก และเมื่อผูใชเลือกโรงพยาบาลแลวโปรแกรมนี้จะเรียกใชโปรแกรม Servlet ที่ชื่อ DisplayLocation.java เพื่อแสดงตําแหนงของโรงพยาบาลโดยใช GoogleMap Web Servicesเราสามารถที่จะพัฒนาโปรแกรม HospitalSelector.java ตามขั้นตอนในการพัฒนา Java Servlet ดังนี้1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap-war จากนั้นเลือกคําสั่ง New> Other2. ในไดอะล็อก New File ใหเลือก Categories ที่ชื่อ Web เลือก File Types: เปน Servlet แลวกด Next3. กําหนด Class Name: เปน HospitalSelector และ Package เปน controller แลวกด Finish4. ในหนาตาง Editor ภายในเมธอด processRequest ใหลบ Comment ทั้งหมดที่อยูภายในเครื่องหมาย/* … */ ระหวางคําสั่ง try และ finally5. คลิ๊กขวาระหวางคําสั่ง try และ finally แลวเลือก Insert Code จากนั้นใหเลือก Call Enterprise Beanแลวเลือก BkkHospitalFacade ที่อยูใน BkkHospitalGoogleMap-ejb แลวกด OK6. เพิ่มเติม source code ใหเปนดังนี้protected void processRequest(HttpServletRequest request, HttpServletResponseresponse)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();
  60. 60. 60Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawantry {List<BkkHospital> hospitals = bkkHospitalFacade.findAll();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><br>");}out.println("<input type=submit value=Show Location />");out.println("</form>");} finally {out.close();}7. ทําการคลิ๊กขวาในโปรแกรม แลวเลือก Fix Imports8. Run โปรแกรม และพิมพ URL ของ Web Browser เปนhttp://localhost:8080/BkkHospitalGoogleMap-war/HospitalSelector จะไดผลลัพธดังแสดงในรูปที่1รูปที่ 1 โปรแกรมเว็บเพื่อใหผูใชเลือกโรงพยาบาล
  61. 61. 61Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan6. การพัฒนาโปรแกรม DisplayLocation.javaโปรแกรม DisplayLocation.java เปนโปรแกรม Servlet ที่เรียกใชเว็บเซอรวิสของ Google Mapเพื่อแสดงแผนที่ของโรงพยาบาลที่เลือกจาก HospitalSelector.java โดยมีขั้นตอนการพัฒนาโปรแกรมดังนี้1. เลือกหนาตาง Projects แลวคลิ๊กขวาที่โหนด BkkHospitalGoogleMap-war จากนั้นเลือกคําสั่ง New> Other2. ในไดอะล็อก New Fileใหเลือก Categories ที่ชื่อ Web เลือก File Types: เปน Servlet แลวกด Next3. กําหนด Class Name: เปน DisplayLocation และเลือก Package เปน controller แลวกด Finish4. ในหนาตาง Editor คลิ๊กขวาภายในเมธอด processRequest() แลวเลือกคําสั่ง Insert Code.. > CallEnterprise Bean ...แลวเลือก BkkHospitalFacade ที่อยูใน BkkHospitalGoogleMap-ejb5. เลือกหนาตาง Services แลวขยายโหนด Web Services > Google > Map Service6. ลากเซอรวิส 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) newInteger(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. 62Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan7. โปรแกรมนี้จะเรียกใชเว็บเซอรวิสของ Google Map ซึ่งเราจะตองทําการลงทะเบียนที่ url ที่ชื่อhttp://code.google.com/apis/maps/signup.html โดยกําหนดคา My web site URL เปนhttp://localhost:8080 แลวกดปุม Generate API Key8. ทําการก็อบปคา API Key ที่ไดไปใสในไพลที่ชื่อ googlemapservices.properties ที่อยูภายในโหนดBkkHospitalGoogleMap-war > Source Packages > org.netbeans.saas.google ดังตัวอยางเชนapi_key=ABQIAAAAMB8Fi4WQk4tMcbmiA9JGFhTwM0brOpm-All5BF6PoaKBxRWWERSQ1U63ApJ18ThqyosJ6592jq20Bgการทดสอบโปรแกรม1. คลิ๊กขวาที่ BkkHospitalGoogleMap เพื่อทําการ Build และ Deploy2. คลิ๊กขวาที่ BkkHospitalGoogleMap เพื่อทําการ Run3. พิมพ URL ของ Web Browser เปน http://localhost:8080/BkkHospitalGoogleMap-war/HospitalSelector และใหเลือกโรงพยาบาลเพื่อดูตําแหนงจากใน Google Map ดังแสดงในรูปที่ 2
  63. 63. 63Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 2 ผลลัพธในการแสดงตําแหนงของโรงพยาบาลจากใน Google Map
  64. 64. 64Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa KruawaisayawanExercise 9: การพัฒนาโปรแกรมเว็บเพื่อติดตอฐานขอมูลMongoDBแบบฝกหัดนี้จะเปนการพัฒนาโปรแกรม Web Application โดยใช Java Servlet เพื่อเชื่อมตอกับฐานขอมูลที่เปน NoSQL อยาง MongoDB ซึ่งเปนฐานขอมูลที่เก็บขอมูลแบบ Document ในรูปแบบของ JSONและมีความสามารถในการเก็บขอมูลขนาดใหญไดขั้นตอนในการพัฒนาโปรแกรม1. ติดตั้ง MongoDB2. ทดลองใช MongoDB3. เขียนโปรแกรม Java Servlet เพื่อเชื่อมตอกับ MongoDB1. การติดตั้ง MongoDBโปรแกรมฐานขอมูล MongoDB สามารถทํางานในระบบปฎิบัติการที่หลากหลายทั้ง Windows, MacOS หรือ Linux สําหรับบนระบบปฎิบัติการ Windows สามารถติดตั้งไดโดยการดาวนโหลดไฟล Binaryจากเว็บไซต http://www.mongodb.org/downloads ซึ่งเมื่อทําการดาวนโหลดไฟลดังกลาวแลว ใหทําการ unzipเก็บไฟลไวในไดเร็กทอรี่ที่ตองการ โดยเราจะมีไฟลตางๆ ดังรูปที่ 1
  65. 65. 65Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanรูปที่ 1 ไฟลไบนารี่ตางๆ ของ MongoDBซึ่งไฟลที่สําคัญก็คือ• mongod.exe ที่เปน Database Server• mongo.exe ที่เปนหนาจอของ adminโดย Default MongoDB จะเก็บขอมูลไวที่ไดเร็กทอรี่ datadb ซึ่งเราจะตองไปสรางไดเร็กทอรี่ดังกลาวภายใต Drive C2. การทดลองใช MongoDBเราสามารถที่จะทดลองการใชงาน MongoDB โดยการเปดโปรแกรม Mongo.exe ซึ่งก็จะเปนโปรแกรมcommand shell ของ administrator และโดย Default ก็จะกําหนดใชฐานขอมูลที่ชื่อ test ซึ่งเราสามารถที่จะแสดงฐานขอมูลที่ใชอยูได โดยการพิมพคําสั่ง> db
  66. 66. 66Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanคําสั่งที่จะแสดงรายชื่อฐานขอมูล (database) ทั้งหมดคือ>show dbsเราสามารถที่จะสรางฐานขอมูลใหมที่ชื่อวา mydatabase โดยใชคําสั่ง>use mydatabaseคําสั่งที่จะแสดง Tables ทั้งหมดในฐานขอมูลคือ>show collectionsและเราสามารถที่จะเรียกดูคําสั่งในการชวยเหลือโดย>helpสําหรับในตัวอยางนี้เราจะทําการทดลองสรางขอมูลของหนังสือ สองเลมดังนี้> db.books.insert({isbn:"555123", author:"thanachart", title:"Introduction to MongoDB",price:1200})และสามารถทําการเพิ่มขอมูลไดโดยคําสั่งตอไปนี้> new_book = {isbn:"555124", author:"James Gosling", title: "Java SE", price: 1400}> db.books.insert(new_book)เราสามารถที่จะดูขอมูลของหนังสือทั้งหมดไดจากคําสั่ง> db.books.find()ซึ่งก็จะไดผลลัพธดังนี้{ "_id" : ObjectId("511fb0387c199204a9f733a5"), "isbn" : "555123", "author" : "thanachart","title" : "Introduction to MongoDB", "price" : 1200 }{ "_id" : ObjectId("511fb24e7c199204a9f733a6"), "isbn" : "555124", "author" : "James Gosling","title" : "Java SE", "price" : 1400 }
  67. 67. 67Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawanทั้งนี้ id จะเปน index ในการระบุหมายเลขของขอมูล นอกจากนี้เราสามารถที่จะคนหาขอมูลสําหรับรายการใดๆ ไดเชน การคนหาตามชื่อผูแตง> db.books.find({author:"thanachart"})หรืออาจตองการคนชื่อหนังสือที่มีคําวา Mongo> db.books.find({title:/Mongo/})เราสามารถที่จะ update ขอมูล เชนตองการเปลี่ยนราคาของหนังสือที่แตงโดย thanachart เปน 1300โดยใชคําสั่ง> db.books.update({author:"thanachart"},{$set: {price:1300}})เราจะลองทําการเพิ่ม comment ของหนังสือเชนมีผูอานที่ชื่อ Somchai อาจมาใหความเห็นวาหนังสือของJames Gosling เปน “good reading book” โดยเราอาจใชคําสั่งดังนี้> new_comment = {reader:"Somchai", date: new Date(), text: "good reading book"}> db.books.update({author:/James/},{$push: {comment:new_comment}})ซึ่งเราจะไดขอมูลนี้ใหมเปน{ "_id" : ObjectId("511fb0387c199204a9f733a5"), "isbn" : "555123", "author" : "thanachart","title" : "Introduction to MongoDB", "price" : 1300 }{ "_id" : ObjectId("511fb24e7c199204a9f733a6"), "author" : "James Gosling", "comment" : [ {"reader" : "Somchai", "date" : ISODate("2013-02-16T16:45:07.309Z"), "text" : "good reading book" } ],"isbn" : "555124", "price" : 1400, "title" : "Java SE" }3. การเขียนโปรแกรม Java Servlet เพื่อเชื่อมตอกับ MongoDBเราสามารถที่จะเขียนโปรแกรมเชื่อมตอกับฐานขอมูล MongoDB ไดหลายแบบ แตในที่นี้จะใชMongoDB Driver ที่สามารถจะดาวนโหลดมาไดจาก https://github.com/mongodb/mongo-java-driver/downloads

×