1            Hand-on            Exercises       Java Web Services               and  Service Oriented Architecture      Us...
2                                                                สารบญExercise 1 Java RMI....................................
3                                          บทนา       เอกสารนใชในการประกอบการสอนวชา Java 401 : Java Web Services and SOA ข...
4                                  Exercise 1 Java RMI       แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมแบบกระจาย (Distributed) โดยใช ...
5package rmi;import java.rmi.Remote;import java.rmi.RemoteException;public interface Hello extends Remote {  String sayHel...
6จะใหบรการเมธอดต:างๆ ซ/งมขนตอนการพฒนาดงน        1.    เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RMIDemo จากนนเลอกค5าสง New > Ja...
7Listing ท 1.4 โปรแกรม HelloClient.javapackage rmi;import java.rmi.Naming;public class HelloClient {    public static void...
8                   Exercise 2 Web Services Using JAX-RPCเนอหาทตองศกษากอน        Entity Bean Using EJB 2.1      แบบฝ1กหดใน...
9        Version: เป2น J2EE 1.4   และไม:เลอกช:อง Set Source Level to 1.4 แลวกด Finish        โปรแกรม NetBeans จะม Wizard เ...
10                           return 0;                        } else if (income < 100000) {                           retu...
11        แลวกด Next   3.   ก5าหนด Project Name เป2น WSDesktop แลวกด Finish   4.   เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WS...
12                             รปท 2.4 ผลทไดจากการอางอง Web Service Client      8.   ในหนาต:าง Projects ลากโหนด calculateT...
13                                  รปท 2.5 การก#าหนดคา Web Service   4.   กด Finish โปรแกรมจะประกาศ Web Services ทชอ Book...
14                                 รปท 2.6 การก#าหนด Property ของ Web Service      7.   ในหนาต:าง Projects ขยายโหนด WSApp ...
15      2.  ก5าหนด Project Name เป2น WSClient จากนนเลอก Server เป2น Sun Java System Application          Server 9 ก5าหนด J...
16     1.   ท5าการ Build และ Deploy โปรเจ4ค EJBBookApp และ WsClient     2.   Run โปรแกรม WSClientServlet     3.   เลอก URL...
17               Exercise 3 การพฒนาโปรแกรม Web Services Client       แบบฝกหดในบทนเปนการพฒนาโปรแกรมเพอเรยกใช Web Services ท...
18          CurrentOilPrice แลวดบเบลคล=กท Request1     3.   หนาต:าง Editor จะแสดงค:าของ SOAP Request ทจะส:งไป ใหใส:ค:าดงน ...
19         eviware-soapui-netbeans-module-3.0.nbm ซ/งท5าการดาวน,โหลดมาก:อนหนาน จะไดไดอะล4อกดงร"ป         ท 3.3            ...
20           CurrencyConvertorSoap จะเห4นรายละเอยดของ WSDL ดงตวอย:างในร"ปท 3.4                            รปท 3.4 การแสดงร...
21                                     รปท 3.5 ตวอยางผลลพธ*การรน SoapUI3.2        การพ%ฒนา Web Service Client      แบบฝ1กห...
22                              รปท 3.6 แสดงไดอะล/อก New Web Service Client     3.    ในหนาต:าง Projects จะม Folder ทชอ We...
23                      รปท 3.7 แสดงการเรยกใช Operation: CurrentOilPrice ของปตท.    7.     ภายในไฟล, PTTServlet.java ใหใส:...
24          response.setContentType("text/html;charset=UTF-8");          PrintWriter out = response.getWriter();          ...
25    7.   ท5าการ Build/Deploy แลว Run ไฟล, CurrencyServlet.java โปรแกรมจะแสดงอตราแลกเปลยนเงน         ตรา ดงแสดงในร"ปท 3.9...
26            Exercise 4 การพฒนาโปรแกรม Web Services Provider       แบบฝ1กหดนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ Java E...
27      8. ในหนาต:าง Projects ขยายโหนด TaxWSDemo > Web Services แลวคล=กขวาทโหนด TaxServices         เลอกค5าสง Add Operatio...
28                                 รปท 4.1 แสดงรายละเอยดใน GlassFish V2.1     2.    เราสามารถทจะทดสอบ Web Service นผ:านทาง...
29                          รปท 4.3 แสดงหนาตางส#าหรบใหทดสอบเรยก Web Service    4.   แลวกดป+@ม calculateTax โปรแกรมจะเรยกใช...
30     5.   เราสามารถทจะแสดงค5าสง WSDL ของ Web Service นโดยการเลอก WSDL File โปรแกรมจะท5าการ          เรยก url ชอ http://l...
31                           Exercise 5 Axis2 Web Services       แบบฝ1กหดนเป2นการตดตง Axis2 Web Services บน Tomcat Web Ser...
32                      รปท 5.2 โครงสรางไดเร/กทอรของ webapps ภายหลงจากตดตง Axis2      5.   ท5าการ Restart Tomcat แลวทดสอบ ...
33   1.   ในโปรแกรม NetBeans เลอกค5าสง Tools > Plugin   2.   ในไดอะล4อก Plugin เลอกแทป Available Plugins และเลอกช:อง Axis2...
34                              รปท 5.5 การ Config คาส#าหรบ Tomcat Axis25.3    การพฒนา Axis2 Web Service           ขนตอนนจ...
35        Axis2Demo แลวเลอกค5าสง Deploy to Server     10. ทดสอบเว4บเซอร,วสได รนโปรแกรม Browser และการเลอก url ทชอ http://l...
36              Exercise 6 Java Web Services from Entity Class       แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ J...
376.2    การพฒนา Entity Class และ Session Bean       ขนตอนนจะเป2นการสราง Entity Class และ Session Bean เพอตดต:อกบ table ทช...
386.4    การพฒนาโปรแกรม Web Application เพอเรยกใช Web Service      ขนตอนนจะเป2นการพฒนา Web Application บน GlassFishV2 เพอเ...
39      8.  ในหนาต:าง Projects เลอกโหนด WSServletClient แลวเลอก New > Servlet..      9. ก5าหนด Servlet Name: เป2น BookServ...
40                           Exercise 7 การพฒนาโปรแกรมโดยใช JAXP           แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมทเกยวของกบไฟล,ปร...
41    <title>Web Services</title>    <author>Jane</author>    <price>1800.0</price>  </book></books>7.3          การพฒนาโป...
42                       รปท 7.1 แสดงการเลอก Override Methods ของ XMLFilterImpl     6.   กดป+@ม Generate แลวเพมค5าสงในเมธอ...
43    public void characters(char[] ch, int start, int length) throws SAXException {         String content = new String(c...
44              xmlReader.setContentHandler(new XMLHandler());              InputSource is = new InputSource(new FileInput...
45              Exercise 8 การพฒนาโปรแกรม RESTful Web Servicesเนอหาทตองศกษากอน         Enterprise Java Bean      แบบฝ1กหดใ...
46           xsi:schemaLocation="http://java.sun.com/xml/ns/persistence           http://java.sun.com/xml/ns/persistence/p...
47                                      รปท 8.2 การก#าหนดคา Entity Class      5.   กดป+@ม Finish8.4    การทดสอบ RESTful We...
48                               รปท 8.4 ผลลพธ*ทไดจากการเรยกใชเมธอด GET     3.   ทดลองเปลยน method เป2น PUT, DELETE และ PO...
49                                      รปท 8.6 ผลลพธ*ทไดจากการเรยกใชเมธอด PUT                  รปท 8.7 การรนโปรแกรมทดสอบ ...
50                    รปท 8.9 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด POST        ร"ปท 8.10 ผลลพธ,ทไดจากการเรยกใช...
51                              Exercise 9         การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google                   ...
52                                        รปท 9.1 ตวอยางเว/บ Twitter            •   เว4บ Google Calendar เป2นเว4บทใหผ"ใชจด...
53                ผ:านมายงเว4บไซต, Facebook ของเราไดโดยอตโนมตโดยการเลอก Facebook Application ชอ                http://apps...
54                                 รปท 9.4 การเพม Visual JSF Frameworks       โปรแกรมทจะพฒนาตองการจะใหมหนาจอส:วนตดต:อผ"ใชด...
55    2.   ในหนาต:าง Properties ใหก5าหนดค:าของ Title เป2น Twitter Notification    3.   ในหนาต:าง Palette ลากไอคอน Label ทอ...
56                                                 twitterresponse.NilClasses.class);                   }      } catch (Ex...
57                                 รปท 9.7 ผลลพธ*ทแสดงในหนาเว/บ Twitter9.3 การสราง Web Application สาหรบส)งนดหมายใน Google...
58                <p>Username : <input type="text" name="twitterUser" value="" /> <br>                Password : <input ty...
59       โปรแกรม Servlet นจะเรยกใช Google API à
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Java Web Services and SOA Using GlassFish openESB and NetBeans
Upcoming SlideShare
Loading in...5
×

Java Web Services and SOA Using GlassFish openESB and NetBeans

2,851

Published on

เอกสาร Lab ประกอบการสอนหลักสูตร Mini Master of Java Technology ของ KMITL และ Sofyware Oark

Published in: Technology
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
2,851
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
377
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Java Web Services and SOA Using GlassFish openESB and NetBeans"

  1. 1. 1 Hand-on Exercises Java Web Services and Service Oriented Architecture Using GlassFish ESB and NetBeansAssoc.Prof.Dr.Thanachart Numnonda and Asst Prof.Thanisa Kruawaisayawan August 2010 Thanachart Numnonda / Thanisa Kruawaisayawan
  2. 2. 2 สารบญExercise 1 Java RMI...........................................................................................................................4Exercise 2 Web Services Using JAX-RPC ........................................................................................8Exercise 3 การพฒนาโปรแกรม Web Services Client...........................................................................17Exercise 4 การพฒนาโปรแกรม Web Services Provider.......................................................................26Exercise 5 Axis2 Web Services.........................................................................................................31Exercise 6 Java Web Services from Entity Class .............................................................................36Exercise 7 การพฒนาโปรแกรมโดยใช JAXP .......................................................................................40Exercise 8 การพฒนาโปรแกรม RESTful Web Services .....................................................................45Exercise 9 การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API....................51Exercise 10 การพฒนาโปรแกรมเพอเรยกใช Google Map Web Services .............................................64Exercise 11 การพฒนาโปรแกรม Hello BPEL......................................................................................70Exercise 12 BPEL for Writing to File...............................................................................................82Exercise 13 BPEL for Writing to Database.......................................................................................96Exercise 14 BPEL for Sending Message to a JMS Queue ............................................................105Exercise 15 Simple BPEL Invoking Web Services ........................................................................116Exercise 16 Advance BPEL Invoking Web Services .....................................................................134Exercise 17 BPEL : Structured Activities.......................................................................................167 Thanachart Numnonda / Thanisa Kruawaisayawan
  3. 3. 3 บทนา เอกสารนใชในการประกอบการสอนวชา Java 401 : Java Web Services and SOA ของหลกส"ตรMini Master of Java Technology คณะเทคโนโลยสารสนเทศ สถาบนพระจอมเกลาเจาค+ณทหารลาดกระบงโดยมจ+ดประสงค,เพอใหผ"เรยนไดเขาใจถ/งการพฒนา Service Oriented Archtecture ทงนแบบฝ1กหดนอางองกบเครองมอพฒนาโปรแกรมจาวา NetBeans 6.7.1 และ โปรแกรม GlassFish v2.1 Application Server thananum@gmail.com twitter.com/thanachart www.facebook.com/thanachart www.thaijavadev.com Thanachart Numnonda / Thanisa Kruawaisayawan
  4. 4. 4 Exercise 1 Java RMI แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมแบบกระจาย (Distributed) โดยใช Java RMI ในการเคลอนยาย Object ซ/งมขนตอนในการพฒนาโปรแกรมดงน 1. สราง Java Project 2. พฒนาโปรแกรม Server Interface 3. พฒนาโปรแกรม Server Implementation 4. พฒนาโปรแกรม Server Application 5. พฒนาโปรแกรม Client Application1.1 การสราง Java Project 1. เลอกเมน" File > New Project 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java และ Projects เป2น Java Application แลวกด Next 3. ก5าหนด Project Name เป2น RMIDemo แลวเลอก Project Location เป2น folder ทเราตองการจะเก4บ ไฟล,ไว จากนนเลอกตรง Create Main Class ออก แลวกด Finish1.2 การพฒนาโปรแกรม Server Interface ในขนตอนนจะเป2นการสราง Server Interface เพอประกาศเมธอดทตองการใหบรการ โดย ServerInterface นจะตอง extends Interface ทชอ Remote และท+กๆ เมธอดจะตอง throws ขอผดพลาดประเภทRemoteException ซ/งตองมไฟล,นอย":ทงในฝ;<ง Server และฝ;<ง Client ขนตอนการพฒนาเป2นดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RMIDemo จากนนเลอกค5าสง New > Other… 2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Java เลอก File Types: เป2น Java Interface แลว กด Next 3. ก5าหนด Class Name: เป2น Hello และ Package: เป2น rmi แลวกด Finish 4. เขยน source code ของไฟล, Hello.java ตาม Listing ท 1.1Listing ท 1.1 โปรแกรม Hello.javaJava RMI Thanachart Numnonda / Thanisa Kruawaisayawan
  5. 5. 5package rmi;import java.rmi.Remote;import java.rmi.RemoteException;public interface Hello extends Remote { String sayHello() throws RemoteException;}1.3 การพฒนาโปรแกรม Server Implementation ในขนตอนนจะเป2นการสราง Server Implementation โดยคลาสนจะตอง extends คลาสทชอUnicastRemoteObject และ implements Server Interface (Hello) เพอเขยนค5าสงในเมธอดทประกาศไวในServer Interface และตองมการเพม constructor ท throws RemoteException ดวย ซ/งมขนตอนการพฒนาดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RMIDemo จากนนเลอกค5าสง New > Java Class แลว กด Next 2. ก5าหนด Class Name: เป2น HelloImpl จากนนเลอก Package: เป2น rmi แลวกด Finish 3. เขยน source code ของไฟล, HelloImpl.java ตาม Listing ท 1.2Listing 1.2 โปรแกรม HelloImpl.javapackage rmi;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class HelloImpl extends UnicastRemoteObject implements Hello { public HelloImpl() throws RemoteException { } public String sayHello() throws RemoteException { return "Hello from xxx"; // ใหใสชอของผพฒนาแทนท xxx }}1.4 การพฒนาโปรแกรม Server Application ในขนตอนนจะเป2นการสราง Server Application เพอ start rmiregistry และลงทะเบยนชอ Object ทJava RMI Thanachart Numnonda / Thanisa Kruawaisayawan
  6. 6. 6จะใหบรการเมธอดต:างๆ ซ/งมขนตอนการพฒนาดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RMIDemo จากนนเลอกค5าสง New > Java Main Class แลวกด Next 2. ก5าหนด Class Name: เป2น HelloServer จากนนเลอก Package: เป2น rmi แลวกด Finish 3. เขยน source code ของไฟล, HelloServer.java ตาม Listing ท 1.3Listing ท 1.3 โปรแกรม HelloServer.javapackage rmi;import java.rmi.Naming;import java.rmi.registry.LocateRegistry;public class HelloServer { public static void main(String[] args) { try { LocateRegistry.createRegistry(1099); // start rmiregistry HelloImpl obj = new HelloImpl(); Naming.rebind("hello",obj); // ลงทะเบยน Object ชอ hello } catch (Exception ex) { ex.printStackTrace(); } }}1.5 การพฒนาโปรแกรม Client Application ในขนตอนนจะเป2นการสราง Client Application เพอคนหา Object ทใหบรการใน rmiregistry จากนนจ/งท5าการเรยกใชเมธอดทตองการ ซ/งมขนตอนการพฒนาดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RMIDemo จากนนเลอกค5าสง New > Java Main Class แลวกด Next 2. ก5าหนด Class Name: เป2น HelloClient จากนนเลอก Package: เป2น rmi แลวกด Finish 3. เขยน source code ของไฟล, HelloClient.java ตาม Listing ท 1.4Java RMI Thanachart Numnonda / Thanisa Kruawaisayawan
  7. 7. 7Listing ท 1.4 โปรแกรม HelloClient.javapackage rmi;import java.rmi.Naming;public class HelloClient { public static void main(String[] args) { try { Hello obj = (Hello) Naming.lookup("rmi://localhost/hello"); System.out.println(obj.sayHello()); } catch (Exception ex) { ex.printStackTrace(); } }}1.6 การทดสอบโปรแกรม 1. คล=กขวาตรง RMIDemo เพอท5าการ Clean and Build 2. Run โปรแกรม HelloServer.java 3. Run โปรแกรม HelloClient.java 4. จะไดผลลพธ,เป2นขอความ Hello from xxx กลบมาจาก Server 5. ทดลองเปลยนจาก localhost เป2น IP Address ของเครองอนๆJava RMI Thanachart Numnonda / Thanisa Kruawaisayawan
  8. 8. 8 Exercise 2 Web Services Using JAX-RPCเนอหาทตองศกษากอน Entity Bean Using EJB 2.1 แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ J2EE 1.4 โดยใชช+ดค5าสง JAX-RPC (JSR 101) โดยจะเป2นการพฒนาบน Server ทรนบน J2EE 1.4 การพฒนา Web Services Providerสามารถท5าไดสองวธคอ • Web Services ทรนบน Web Server โดยใช Java Servlet • Web Services ทรนบน Application Server โดยใช Session Bean การพฒนาบน Application Server จะท5าใหรองรบจ5านวนผ"ใชไดมากกว:า และเหมาะกบการท5า WebService ในทางปฏบตทตองการท5า Web Service เพอขยายโอกาสทางธ+รกจและคาดว:าน:าจะมผ"เขามาใช Serviceจ5านวนมากข/น ท5าให Web Server อาจไม:เหมาะสมกบการรองรบจ5านวนผ"ใชจ5านวนมาก ดงนนผ"พฒนา JavaWeb Services จ/งควรทจะมความร"ในการพฒนา Application Server โดยใช EJB แบบฝ1กหดจะแสดงขนตอนการใช NetBeans สราง Web Services ทชอ calculateTax โดยใช Servletและสราง Web Services ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Entity BeanUsing EJB 2.1 โดย Service นจะเป2นการคนหาหนงสอจาก table ทชอ book ในฐานขอม"ล MySqlขนตอนในการพฒนาโปรแกรม 1. พฒนา calculateTax Web Service 2. พฒนา Desktop Web Service Client 3. พฒนา findBook Web Service 4. พฒนา Web Application เพอเรยกใช Web Service2.1 การพฒนา calculateTax Web Service แบบฝ1กหดนจะสราง Web Application Project ข/นใหม: เพอใชในการเก4บ Web Service โดยมขนตอนการพฒนาดงนดงน 1. เลอกเมน" File => New Project.. 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ Projects เป2น Web Application แลวกด Next 3. ก5าหนด Project Name เป2น WSApp แลวเลอก Project Location เป2น Director ทเราตองการจะเก4บ ไฟล,ไว จากนนเลอก Server เป2น Sun Java System Application Server 9 ก5าหนด Jave EEWeb Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  9. 9. 9 Version: เป2น J2EE 1.4 และไม:เลอกช:อง Set Source Level to 1.4 แลวกด Finish โปรแกรม NetBeans จะม Wizard เพอสราง Web Service โดยมขนตอนดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSApp จากนนเลอกค5าสง New > File/Folder 2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web Service แลวกด Next 3. ในไดอะล4อก New Web Service ก5าหนด Web Service Name: เป2น TaxServices และ Packgae: เป2น ws แลวกด Finish 4. โปรแกรมจะประกาศ Web Services ทชอ TaxServices ในโหนด Web Services ของหนาต:าง Project และหนาต:าง Editor จะแสดงไฟล,ทชอ TaxServicesImpl.java 5. ในหนาต:าง Projects ขยายโหนด WSApp > Web Services แลวคล=กขวาทโหนด TaxServices เลอก ค5าสง Add Operation.. 6. ในไดอะล4อก Add Operation ก5าหนด Method เป2น caluclateTax ชนดของ Return Type เป2น double และ เพม Input parameter หน/งตวคอ income ชนด double ดงร"ปท 2.1 รปท 2.1 การเพม Operation 7. โปรแกรมจะเพมเมธอด calculateTax ใน source code ของไฟล, TaxServicesImpl.java ใหปรบปร+ง source code ดงน public double calculateTax(double income) throws java.rmi.RemoteException { if (income < 70000) {Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  10. 10. 10 return 0; } else if (income < 100000) { return (income - 70000) * 0.05; } else if (income < 500000) { return (income - 10000) * 0.1 + 3500; } else { return (income - 500000) * 0.2 + 43500; } } 8. กดป+@ม Save แลวท5าการ Deploy Project 9. Web Service จะถ"กตดตงบน Sun Java Application Server และสามารถเรยกด"ไดการใช System Admin Console โดยการเปAด Web Browser และเรยก url ท http://localhost:4848 โดยก5าหนด user เป2น admin และ password เป2น adminadmin 10. โปรแกรมจะแสดง Applications และ Web Services ดงร"ปท 2.2 รปท 2.2 Admin Console ของ GlassFish ทแสดง Web Services2.2 การพฒนา Desktop Web Service Client เราจะสราง Java Desktop Application เพอทจะเรยกใช Web Service ทชอ calculateTax โดยจะมขนตอนการพฒนาดงน 1. เลอกเมน" File => New Project.. 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น General และ Projects เป2น Java ApplicationWeb Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  11. 11. 11 แลวกด Next 3. ก5าหนด Project Name เป2น WSDesktop แลวกด Finish 4. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSDesktop จากนนเลอกค5าสง New => File/Folder. 5. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web Service Client แลวกด Next 6. ในไดอะล4อก New Web Service Client เลอก WSDL URL: โดยก5าหนด เป2น http://localhost:2160/WSApp/TaxServices?WSDL และ Package เป2น ws ดงแสดงในร"ปท 2.3 รปท 2.3 การก#าหนด WSDL ของ Web Service Client 7. กด Finish โปรแกรมจะแสดง Web Service Reference โดยม Service ชอ calculateTax ดงร"ปท 2.4Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  12. 12. 12 รปท 2.4 ผลทไดจากการอางอง Web Service Client 8. ในหนาต:าง Projects ลากโหนด calculateTax ลงในไฟล, Main.java ของหนาต:าง Editor โปรแกรมจะ เพม source code ใหอตโนมต ใหแกไขค:า double1 เป2น 350000 9. ทดลองรนโปรแกรมจะเห4นค:าผลลพธ,เป2น Result = 37500.02.3 การพฒนาโปรแกรม findBook Web Service ขนตอนนจะสราง Web Service ทชอ findBook จาก Stateless Session Bean ทชอBooksFacade.java ทพฒนาจากแบบฝ1กหด Entity Bean Using EJB 2.1 โโดยจะมขนตอนการพฒนาดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด EJBBookApp-ejb จากนนเลอกค5าสง New > File/Folder 2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web Service แลวกด Next 3. ในไดอะล4อก New Web Service ก5าหนด Web Service Name: เป2น BookServices เลอก Package: เป2น ws และเลอก Delegated to Existing Session Enterprise Bean แลวเลอก BooksFacadeSB ดง ร"ปท 2.5Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  13. 13. 13 รปท 2.5 การก#าหนดคา Web Service 4. กด Finish โปรแกรมจะประกาศ Web Services ทชอ BookServices ในโหนด Web Services ของ หนาต:าง Project และหนาต:าง Editor จะแสดงไฟล,ทชอ BookServicesBean.java 5. โปรแกรม NetBeans จะก5าหนดให Web Services ทสรางข/นเป2น documentliteral ในกรณเราตองการ ใหเปBน RPC ดงนนตองท5าการแกไขค+ณสมบต โดยการคล=กขวาทโหนด EJBBookApp-ejb เลอก properties 6. ในไดอะล4อก Project Properties เลอก JAX-RPC Web Services แลวยกเลกการเลอกช:อง documentliteral, strict และ useonewayoperations ดงร"ปท 2.6Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  14. 14. 14 รปท 2.6 การก#าหนด Property ของ Web Service 7. ในหนาต:าง Projects ขยายโหนด WSApp > Web Services แลวคล=กขวาทโหนด DBBookServices เลอกค5าสง Add Operation.. 8. ในไดอะล4อก Add Operation ก5าหนด Method เป2น findBook ชนดของ Return Type เป2น model.Book และ เพม Input parameter หน/งตวคอ isbn ชนด String 9. โปรแกรมจะเพมเมธอด findBook ใน source code ของไฟล, DBBookServicesBean.java ให ปรบปร+ง source code ดงน public Book findBook(String isbn) throws java.rmi.RemoteException { BooksFacadeLocal bk = lookupBooksFacadeBean(); return bk.find(isbn); } 10. กดป+@ม Save แลวท5าการ Deploy Project2.4 การพฒนาโปรแกรม Web Application เพอเรยกใช Web Service ขนตอนนจะเป2นการพฒนา Web Application บน Sun Java Application Server 9 เพอเรยกใช WebService ทชอ findBook โดยมขนตอนการพฒนาดงน 1. เลอกเมน" File => New Project..ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ Projects เป2น WebApplication แลวกด NextWeb Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  15. 15. 15 2. ก5าหนด Project Name เป2น WSClient จากนนเลอก Server เป2น Sun Java System Application Server 9 ก5าหนด Jave EE Version: เป2น J2EE 1.4 และไม:เลอกช:อง Set Source Level to 1.4 แลว กด Finish 3. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSClient จากนนเลอกค5าสง New => File/Folder. 4. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web Service Client แลวกด Next 5. ในไดอะล4อก New Web Service Client เลอก Project: โดยก5าหนดเป2น EJBBookApp-EJB > BookServices และ Package เป2น ws 6. กด Finish โปรแกรมจะแสดง Web Service Reference โดยม Service ชอ findBook 7. ในหนาต:าง Projects เลอกโหนด WSClient แลวเลอก New Servlet 8. ก5าหนด Servlet Name: เป2น WSClientServlet แลวกด 9. ในหนาต:าง Editor ของไฟล, WSClientServlet.java เลอกเมธอด processRequest แลวคล=กขวาเลอก Web Service Client Resources > Call Web Service Operation แลวเลอก findBook 10. โปรแกรม NetBeans จะเพม source code ในการเรยก Web Services โดยอตโนมต ใหปรบปร+ง 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>Test EJB Web Service</title>"); out.println("</head>"); out.println("<body>"); try { // This code block invokes the find operation on web service String isbn = request.getParameter("isbn"); Book book = getBKServicesSEIPort().findBook(isbn); out.println("ISBN: " + isbn + "<br>"); out.println("Title: " + book.getTitle() + "<br>"); out.println("Author: " + book.getAuthor() + "<br>"); out.println("Price: " + book.getPrice() + "<br>"); } catch(java.rmi.RemoteException ex) { out.println(ex); } catch(Exception ex) { out.println(ex); } 11. กดป+@ม Save2.5 การทดสอบโปรแกรมWeb Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  16. 16. 16 1. ท5าการ Build และ Deploy โปรเจ4ค EJBBookApp และ WsClient 2. Run โปรแกรม WSClientServlet 3. เลอก URL ของ Web Browser เป2น http://localhost:8080/EJBBookApp-war/WSClientServlet ? isbn=123 โดยท 123 คอหมายเลข isbn ทมอย":ในฐานขอม"ล 4. โปรแกรมจะแสดงผลเป2นรายละเอยดของหนงสอในฐานขอม"ลหมายเหต โปรแกรม JAX-RPC จะไม:สามารถท5างานใน JDK 6 หากตองการพฒนา Web Services ส5าหรบ JDK6 ใหเลอกใช JAX-WS API ทจะกล:าวถ/งในแบบฝ1กหดถดไปWeb Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  17. 17. 17 Exercise 3 การพฒนาโปรแกรม Web Services Client แบบฝกหดในบทนเปนการพฒนาโปรแกรมเพอเรยกใช Web Services ทมอย()แลว ซ-งจะเลอกมา 2บร2การดงน การทดลองท 1 ราคาน4ามนล)าส6ดของ ปตท. การทดลองท 2 อตราแลกเปลยนเง2นตราระหว)างประเทศ โดยจะใช soapUI, NetBeans และ GlassFish Server3.1 การทดสอบ Web Services โดยใช soapUI โปรแกรม soapUI เป2นโปรแกรม Open Source ทสามารถใชเป2นเครองมอในการทดสอบเว4บเซอร,วสทนยมใชกนอย:างกวางขวาง เราสามารถทจะไปดาวน,โหลดโปรแกรมนไดท www.soapui.org โดยเมอตดตงแลวใหท5าการทดสอบเรยกใชเว4บเซอร,วสในการทดลองทงสองขางตน ตามขนตอนดงน 1. ในโปรแกรม soapUI เลอกเมน" File > New WSDL Project ในช:อง Project Name ใหใส: PTT ส:วนในช:อง Initial WSDL ใหใส: http://www.pttplc.com/pttinfo.asmx?wsdl จะไดไดอะล4อกดงร"ป ท 3.1 รปท 3.1 การสราง WSDL Project ใน soapUI 2. โปรแกรมจะสรางโปรเจ4คนข/นมา ขยายโหนด PTTInfoSoap แลวเลอกโอเปอร,เรชนการพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  18. 18. 18 CurrentOilPrice แลวดบเบลคล=กท Request1 3. หนาต:าง Editor จะแสดงค:าของ SOAP Request ทจะส:งไป ใหใส:ค:าดงน <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ptt="http://www.pttplc.com/ptt_webservice/"> <soapenv:Header/> <soapenv:Body> <ptt:CurrentOilPrice> <!--Optional:--> <ptt:Language>TH</ptt:Language> </ptt:CurrentOilPrice> </soapenv:Body> </soapenv:Envelope> 4. กดป+@ม submit request (เครองหมายสเขยว) โปรแกรมจะได SOAP Response กลบมา โดยโปรแกรม soapUI จะแสดงดงร"ปท 3.2 รปท 3.2 แสดงผลลพธ*ทไดใน soapUI นอกจากนเรายงสามารถตดตงโปรแกรม soapUI ภายใน NetBeans ไดโดยการดาวน,โหลด SoupUINetBeans Plugin (ไฟล, com-eviware-soapui-netbeans-module-3.0.nbm) และท5าการตดตงตามขนตอนดงน 1. ในโปรแกรม NetBeans เลอกเมน" Tools > Plugins 2. ในไดอะล4อก Plugins เลอกแทป Downloaded แลวกดป+@ม Add Plugins..แลวเลอกไฟล, com-การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  19. 19. 19 eviware-soapui-netbeans-module-3.0.nbm ซ/งท5าการดาวน,โหลดมาก:อนหนาน จะไดไดอะล4อกดงร"ป ท 3.3 รปท 3.3 การเพมปล+กอนโมดลใน NetBeans 3. กดป+@ม Install แลวกดป+@ม Next จนท5าการตดตงเสร4จแลว ใหเลอก Restart โปรแกรม NetBeans ข/นมา ใหม: เราสามารถทดสอบการใชงาน soupUI ทตดตงข/นมาใน NetBeans เพอทดสอบเว4บเซอร,วสด"อตราแลก เปลยนตามขนตอนดงน 4. เลอกเมน" File > New Project 5. ในไดอะล4อก New Project ใหเลอก Categories เป2น SOA และ Web Services Testing Project แลวกด Next 6. ก5าหนด Project Name เป2น CurrencyExcangeWSTestProject แลวเลอก Project Location เป2น folder ทเราตองการจะเก4บไฟล,ไว 7. ก5าหนดค:า Initial WSDL (URL/file) เป2น http://www.webservicex.com/CurrencyConvertor.asmx?wsdl แลวกด Finish 8. โปรแกรมจะสรางโปรเจ4คนข/นมา และม WSDL ของเว4บเซอร,วสแสดงข/นมา ใหทดลองเลอกโหนดการพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  20. 20. 20 CurrencyConvertorSoap จะเห4นรายละเอยดของ WSDL ดงตวอย:างในร"ปท 3.4 รปท 3.4 การแสดงรายละเอยด Web Service ใน soapUI 9. ขยายโหนด CurrencyConvertorSoap แลวเลอกโอเปอร,เรชน ConversionRate แลวคล=กขวาเลอก ค5าสง New Request 10. ในไดอะล4อก New Request ก5าหนดค:าเป2น Request1 11. หนาต:าง Editor จะแสดงค:าของ SOAP Request ทจะส:งไปใหปรบเปลยนค:าเป2น <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> 12. กดป+@ม submit request (เครองหมายสเขยว) โปรแกรมจะได SOAP Response กลบมาดงน โดย โปรแกรม soapUI จะแสดงดงร"ปท 3.5 <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>33.51</ConversionRateResult> </ConversionRateResponse> </soap:Body> </soap:Envelope>การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  21. 21. 21 รปท 3.5 ตวอยางผลลพธ*การรน SoapUI3.2 การพ%ฒนา Web Service Client แบบฝ1กหดนจะสราง Web Application Project ข/นใหม: เพอใชในการเรยก Web Services โดยมขนตอนการพฒนาดงน 1. เลอกเมน" File > New Project 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และ Web Application แลวกด Next 3. ก5าหนด Project Name เป2น ExternalWSDemo แลวเลอก Project Location เป2น folder ทเรา ตองการจะเก4บไฟล,ไว 4. จากนนเลอก Server เป2น GlassFish v2.1 ก5าหนด Jave EE Version: เป2น Java EE 5 แลวกด Finish3.3 การเรยกใช Web Services เพอด!ราคาน#ามน ขนตอนนเป2นการพฒนาโปรแกรม Web Service Client เพอทดสอบเรยกใช Web Services ของปตท.เพอเรยกด"ราคาน5ามนล:าส+ด โดยมขนตอนดงน 1. คล=กขวาทโหนด ExternalWSDemo จากนนเลอกค5าสง New > Other… ใหเลอก Categories เป2น Web Services และ Web Service Client แลวกด Next 2. ในไดอะล4อก New Web Service Client ใหเลอก WSDL URL: แลวใส: URL เป2น http://www.pttplc.com/pttinfo.asmx?wsdl ดงแสดงในร"ปท 3.6 แลวกด Finishการพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  22. 22. 22 รปท 3.6 แสดงไดอะล/อก New Web Service Client 3. ในหนาต:าง Projects จะม Folder ทชอ Web Service References ข/นมา ซ/งเมอขยายโหนดดงกล:าวจะ เห4นรายชอเซอร,วสต:างๆ ของ PTTInfo 4. คล=กขวาท ExternalWSDemo แลวเลอก Servlet... จากนนใหก5าหนดชอเป2น PTTServlet และ Package: เป2น servlets แลวกด Finish 5. คล=กขวาภายในเมธอด processRequest ในไฟล, PTTServlet.java แลวเลอก Insert Code... > Call Web Service Operation 6. เลอก ExternalWSDemo > pttinfo > PTTInfo > PTTInfoSoap > CurrentOilPrice ดงแสดงใน ร"ปท 3.7 แลวกด OKการพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  23. 23. 23 รปท 3.7 แสดงการเรยกใช Operation: CurrentOilPrice ของปตท. 7. ภายในไฟล, PTTServlet.java ใหใส: language เป2น TH โดยจะได source code ดง Listing ท 3.1 8. ท5าการ Build/Deploy แลว Run ไฟล, จะแสดงราคาน5ามนล:าส+ด ดงแสดงในร"ปท 3.8 รปท 3.8 แสดงผลลพธ*ทไดจากการเรยกใช Web Service Operation: CurrentOilPrice ของปตท.Listing ท 3.1 เมธอด processRequest ของโปรแกรม PTTServlet.java protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  24. 24. 24 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet PTTServlet</title>"); out.println("</head>"); out.println("<body>"); try { // Call Web Service Operation com.pttplc.ptt_webservice.PTTInfoSoap port = service.getPTTInfoSoap(); // TODO initialize WS operation arguments here java.lang.String language = "TH"; // TODO process result here java.lang.String result = port.currentOilPrice(language); out.println("Result = " + result); } catch (Exception ex) { // TODO handle custom exceptions here } out.println("</body>"); out.println("</html>"); } finally { out.close(); } }3.4 การเรยกใช Web Services เพอด!อตราแลกเปลยน ขนตอนนเป2นการพฒนาโปรแกรม Web Service Client เพอทดสอบเรยกใช Web Services เพอเรยกด"อตราแลกเปลยนเงนตรา โดยมขนตอนดงน 1. คล=กขวาทโหนด ExternalWSDemo จากนนเลอกค5าสง New > Web Service Client แลวกด Next 2. ในไดอะล4อก New Web Service Client ใหเลอก WSDL URL: แลวใส: URL เป2น http://www.webservicex.com/CurrencyConvertor.asmx?wsdl 3. คล=กขวาท ExternalWSDemo แลวเลอก Servlet... จากนนใหก5าหนดชอเป2น CurrencyServlet และ Package: เป2น servlets แลวกด Finish 4. คล=กขวาภายในเมธอด processRequest ในไฟล, CurrencyServlet.java แลวเลอก Insert Code .. > Call Web Service Operation 5. เลอก ExternalWSDemo > CurrencyConvertor > CurrencyConvertor > CurrencyConvertorSoap > ConversionRate แลวกด OK 6. แกไขไฟล, CurrencyServlet.java ดงน net.webservicex.Currency fromCurrency = net.webservicex.Currency.USD; net.webservicex.Currency toCurrency = net.webservicex.Currency.THB;การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  25. 25. 25 7. ท5าการ Build/Deploy แลว Run ไฟล, CurrencyServlet.java โปรแกรมจะแสดงอตราแลกเปลยนเงน ตรา ดงแสดงในร"ปท 3.9 รปท 3.9 แสดงผลลพธ*ทไดจากการเรยกใช Web Service Operation: ConversionRateการพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  26. 26. 26 Exercise 4 การพฒนาโปรแกรม Web Services Provider แบบฝ1กหดนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ Java EE โดยใชช+ดค5าสง JAX-WS ซ/งจะเป2นการพฒนา Web Services Provider บน Java EE Server ทงนช+ดค5าสง JAX-WS จะช:วยท5าใหการสรางและเรยกใช Web Services ดวยภาษา Java เป2นไปไดง:ายข/น การพฒนา Web Services จะแบ:งเป2นสองส:วนคอ Web Service Provider (Server) และ WebService Requester (Client) แบบฝ1กหดนจะเป2นการพฒนา Web Service Provider ซ/งสามารถเลอกพฒนาได2 ร"ปแบบคอ 1. Web Services ทรนบน Web Server โดยใช Java Servlet 2. Web Services ทรนบน Application Server โดยใช Session Bean แบบฝ1กหดนจะเลอกพฒนาโดยใช Java Servlet โดยจะแสดงขนตอนการใช NetBeans ในการสรางWeb Service ทชอ calculateTax ซ/งจะรนอย":บน GlassFish V2.1 Server4.1 การพฒนา calculateTax Web Service แบบฝ1กหดนจะสราง Web Application Project ข/นใหม: เพอใชในการเก4บ Web Service โดยมขนตอนการพฒนาดงน 1. เลอกเมน" File > New Project 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และ Projects เป2น Web Application แลวกด Next 3. ก5าหนด Project Name เป2น TaxWSDemo แลวเลอก Project Location เป2น folder ทเราตองการจะ เก4บไฟล,ไว 4. จากนนเลอก Server เป2น GlassFish V2.1 ก5าหนด Jave EE Version: เป2น Java EE 5 แลวกด Finish 5. คล=กขวาทโหนด TaxWSDemo จากนนเลอกค5าสง New > Other… ใหเลอก Categories เป2น Web Services และ Web Service แลวกด Next 6. ในไดอะล4อก New Web Service ก5าหนด Web Service Name: เป2น TaxServices และ Package: เป2น ws แลวกด Finish 7. โปรแกรมจะประกาศ Web Services ทชอ TaxServices ในโหนด Web Services ของหนาต:าง Project และหนาต:าง Editor จะแสดงไฟล,ทชอ TaxServices.javaการพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
  27. 27. 27 8. ในหนาต:าง Projects ขยายโหนด TaxWSDemo > Web Services แลวคล=กขวาทโหนด TaxServices เลอกค5าสง Add Operation… 9. ในไดอะล4อก Add Operation ก5าหนด Method เป2น calculateTax ชนดของ Return Type เป2น double และ เพม Input parameter หน/งตวคอ income ชนด double แลวกด OK 10. คล=กทแทป Source ของ TaxServices.java และปรบปร+งเมธอด 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; } } } 11. คล=กขวาทโหนด TaxWSDemo จากนนเลอกค5าสง Clean and Build จากนนคล=กขวาทโหนด TaxWSDemo อกครง แลวเลอก Deploy4.2 การทดสอบ Web Service โปรแกรม Web Service จะถ"กตดตงบน GlassFish V2.1 และสามารถเรยกด"ไดการใช SystemAdmin Console โดยการเปAด Web Browser และเรยก url ท http://localhost:4848 โดยก5าหนด user เป2นadmin และ password เป2น adminadmin 1. โปรแกรมจะแสดง Applications และ Web Services ดงแสดงในร"ปท 4.1การพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
  28. 28. 28 รปท 4.1 แสดงรายละเอยดใน GlassFish V2.1 2. เราสามารถทจะทดสอบ Web Service นผ:านทาง Admin Console ไดโดยกดป+@ม Test หรอทดสอบ จาก Netbeans โดยคล=กขวาท TaxServices ใน Web Services ดงแสดงในร"ปท 4.2 รปท 4.2 แสดงวธการทดสอบ Web Service ใน Netbeans 3. โปรแกรมจะแสดงหนาจอเพอใหเราปBอนขอม"ลอนพ+ต ซ/งคอจ5านวนเงนทตองการค5านวณภาษ ในทนจะใส: ตวเลขเป2น 73000 ดงแสดงในร"ปท 4.3การพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
  29. 29. 29 รปท 4.3 แสดงหนาตางส#าหรบใหทดสอบเรยก Web Service 4. แลวกดป+@ม calculateTax โปรแกรมจะเรยกใช Web Services และจะแสดงผลลพธ,ทได พรอมทงแสดง ค:า SOAP Request ดงแสดงในร"ปท 4.4 รปท 4.4 แสดงผลลพธ*ทไดจากการเรยกใช Web Service และแสดง SOAP Requestการพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
  30. 30. 30 5. เราสามารถทจะแสดงค5าสง WSDL ของ Web Service นโดยการเลอก WSDL File โปรแกรมจะท5าการ เรยก url ชอ http://localhost:8080/TaxWSDemo/TaxServicesService?WSDL และจะไดผลลพธ, ดงแสดงในร"ปท 4.5 รปท 4.5 แสดงรายละเอยดของ WSDLการพฒนาโปรแกรม Web Services Provider Thanachart Numnonda / Thanisa Kruawaisayawan
  31. 31. 31 Exercise 5 Axis2 Web Services แบบฝ1กหดนเป2นการตดตง Axis2 Web Services บน Tomcat Web Server แลวทดลองพฒนา WebService โดยใชโปรแกรม NetBeans5.1 การต%ดต#ง Axis2 บน Tomcat ขนตอนนจะเป2นการตดตงโมด"ล Axis2 เพอท5าให Tomcat เป2น Web Service Provider ทท5างานภายใตAxis2 Framework โดยมขนตอนดงน 1. ท5าการดาวน,โฟล, Axis2.war จาก http://ws.apache.org/axis2/ 2. ท5าการ unzip ไฟล,ต:างๆของ Axis2.war ภายใตในไดเร4กทอรทชอ webapps ทอย":ใน CATALINA_BASE ของ Tomcat 3. กรณทไม:ทราบไดเร4กทอรของ Catalina Base เราสามารถคนหาไดโดยเปAดโปรแกรม NetBeans เลอกหนาต:าง Services ขยายโหนด Servers แลวคล=กขวาเลอกค5าสง Properties ของ Apache Tomcat ไดอะล4อก Server จะแสดงไดเร4กทอรของ Catalina Base ดงร"ปท 5.1 รปท 5.1 การหาต#าแหนงไดเร/กทอรของ Catalina Base 4. ซ/งเมอท5าการ unzip เสร4จแลวจะไดไดเร4กทอรภายใต webapps ดงร"ปท 5.2Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  32. 32. 32 รปท 5.2 โครงสรางไดเร/กทอรของ webapps ภายหลงจากตดตง Axis2 5. ท5าการ Restart Tomcat แลวทดสอบ Axis2 โดยการเลอก url ทชอ http://localhost:8084/axis2/ จะ ไดผลลพธ,ดงร"ปท 5.3 โดยมเว4บเซอร,วสตวอย:างชอ Version รนอย": 6. เราสามารถทจะทดสอบเว4บเซอร,วสนโดยใชโปรแกรมเช:น Soap UI โดยอางองถ/ง WSDL ท http://localhost:8084/axis2/services/Version?wsdl รปท 5.3 หนาจอของ Tomcat Axis25.2 การต%ดต#ง Axis2 Plugin สาหรบ NetBeans ขนตอนนจะเป2นการตดตง Axis2 Plugin เพอท5าให NetBeans สามารถพฒนา Axis2 Web ServicesไดโดยมขนตอนดงนAxis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  33. 33. 33 1. ในโปรแกรม NetBeans เลอกค5าสง Tools > Plugin 2. ในไดอะล4อก Plugin เลอกแทป Available Plugins และเลอกช:อง Axis2 Support แลวกดป+@ม Install ดงร"ปท 5.4 รปท 5.4 การตดตง Axis2 Support Plugin 3. จากนนจะตองท5าการ Config Tomcat เพอใหสามารถ deploy Axis2 Web Service ไดโดยอตโนมต โดยใหเลอกค5าสง Tools > Options 4. ในไดอะล4อก Options เลอกแทป Axis2 แลวก5าหนดค:า Axis2 .aar file เป2นต5าแหน:งทเราตดตง axis2.war ลงไป และก5าหนดค:า Axis URL พรอมทง username และ password ของ Tomcat Manager ใหถ"กตอง ดงตวอย:างในร"ปท 5.5 แลวกดป+@ม OK [ขอม"ลของ Tomcat Users สามารถคนหา ไดจากไฟล, CATALINA_BASE/conf/tomcat-users.xml]Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  34. 34. 34 รปท 5.5 การ Config คาส#าหรบ Tomcat Axis25.3 การพฒนา Axis2 Web Service ขนตอนนจะเป2นการพฒนา Axis2 Web Service F ดยมขนตอนการพฒนาดงน 1. เลอกเมน" File => New Project.. 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java และ Java Application แลวกด Next 3. ก5าหนด Project Name เป2น Axis2Demo แลวเลอก Project Location เป2น Director ทเราตองการจะ เก4บไฟล,ไว แลวกด Finish 4. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด Axis2Demo จากนนเลอกค5าสง New > Other 5. ในไดอะล4อก New File ใหเลอก Categories เป2น Web Services และ Axis2 Service from Java แลวกด Next 6. เลอกช:อง Create Empty Web Service แลวกด Next 7. ในไดอะล4อกถดไป ก5าหนดชอ Class Name เป2น TaxServices และ Package เป2น ws แลวกด Finish 8. ปรบปร+ง source code เพอเพมเมธอดทชอ calculateTax ดง Listing ท 9. ท5าการ Deploy Web Services โดยการคล=กขวาทโหนด Axis Web Server ทอย":ภายใตโหนดAxis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  35. 35. 35 Axis2Demo แลวเลอกค5าสง Deploy to Server 10. ทดสอบเว4บเซอร,วสได รนโปรแกรม Browser และการเลอก url ทชอ http://localhost:8084/axis2/ แลวคล=ก Services จะเห4นเว4บเซอร,วสทชอ TaxServices อย":Listing ท 5.1 โปรแกรม TaxServices.javapackage ws;public class TaxServices { public double calculateTax(double income) { return 0.1 * income; }}Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  36. 36. 36 Exercise 6 Java Web Services from Entity Class แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ Java EE โซ/งจะเป2นการพฒนาบนServer ทรนบน Java EE โดยช+ดค5าสง JAX-WS ซ/งในกรณนจะแสดงขนตอนการใช NetBeans สราง WebServices ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Enterprise Java Bean โดยService นจะเป2นการคนหาหนงสอจาก table ทชอ book ในฐานขอม"ล MySQL6.1 การสราง Enterprise Application Project เราจะก5าหนดใหโปรแกรมนเป2นโปรแกม Enterprise Application ซ/งมทง EJB Module และ WebModule ขนตอนแรกจะเป2นการสราง Project ใหม:ขนมาใน NetBeans ซ/งมขนตอนดงน / 1. เลอกเมน" File => New Project 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java EE และเลอก Enterprise เป2น Enterprise Application แลวกด Next 3. ก5าหนด Project Name เป2น BookAppWS แลวเลอก Project Location เป2น folder ทเราตองการจะ เก4บไฟล,ไว แลวกด Next 4. เลอก Server เป2น GlassFish V2.1 ก5าหนด Jave EE Version: เป2น และใหเลอกช:อง Create EJB Module: และ Create Web Application Module: ดงแสดงในร"ป แลวกด Finish รปท 6.1 การ Config คาส#าหรบ Tomcat Axis2Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
  37. 37. 376.2 การพฒนา Entity Class และ Session Bean ขนตอนนจะเป2นการสราง Entity Class และ Session Bean เพอตดต:อกบ table ทชอ books ในMySQL โดยมขนตอนการพฒนาเช:นเดยวกบแบบฝ1กหดการพฒนา Enterprise Java Bean ซ/งเราจะได EntityClass ทชอ Books และ Session Bean ทชอ BooksFacade ซ/งมเมธอด findBook ดงร"ปท รปท 6.2 แสดงไฟล*ของโปรแกม BookAppWS-ejb ทถกสรางขน6.3 การพฒนา findBook Web Service ขนตอนนจะสราง Web Service ทชอ findDBook จาก Stateless Session Bean ทชอBooksFacade.java ทพฒนาจากแบบฝ1กหด Enterprise Java Bean โดย Services นจะใชในการคนหาหนงสอจากฐานขอม"ลจากหมายเลข isbn ทปBอนเขา และมขนตอนการพฒนาดงน 1. เลอกไฟล, BooksFacade.java แลวเปลยน source code โดยเพมค5าสง annotation เพอประกาศให session bean นเป2น Web Service และเมธอด find เป2น Web Service โดยมค5าสงดงน @WebService @Stateless public class BooksFacade implements BooksFacadeLocal { ... @WebMethod(operationName=”findBook”) public Books find(Object pk) { return (Books) em.find(Books.class, pk); } ... } 2. กด Alt-Shift-F เพอท5าการ import class ทเกยวของแลวกดป+@ม Save 3. ท5าการ Deploy ProjectJava Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
  38. 38. 386.4 การพฒนาโปรแกรม Web Application เพอเรยกใช Web Service ขนตอนนจะเป2นการพฒนา Web Application บน GlassFishV2 เพอเรยกใช Web Service ทชอfindBook โดยมขนตอนการพฒนาดงน 1. เลอกเมน" File => New Project.. 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ Projects เป2น Web Application แลวกด Next 3. ก5าหนด Project Name เป2น WSServletClient จากนนเลอก Server เป2น GlassFish V2 ก5าหนด Jave EE Version: เป2น Java EE 5 แลวกด Finish 4. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด WSServletClient จากนนเลอกค5าสง New => Other.. 5. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web Service Client แลวกด Next 6. ในไดอะล4อก New Web Service Client เลอก Project โดยก5าหนด BooksFacadeService โปรแกรม จะแสดงค:า wsdl ดงร"ปท รปท 6.3 การก#าหนดคา WSDL 7. กด Finish โปรแกรมจะแสดง Web Service Reference โดยม Service ชอ findDBookJava Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
  39. 39. 39 8. ในหนาต:าง Projects เลอกโหนด WSServletClient แลวเลอก New > Servlet.. 9. ก5าหนด Servlet Name: เป2น BookServlet แลวกด Finish 10. ในหนาต:าง Projects ลากโหนด findBook ลงในไฟล, BookServlet.java ของหนาต:าง Editor โปรแกรมจะเพม source code ใหอตโนมต ใหปรบปร+ง source code ในส:วนทเรยกใช Web Service ดงน try { // Call Web Service Operation entity.BooksFacade port = service.getBooksFacadePort(); java.lang.Object arg0 = request.getParameter("isbn"); entity.Books book = port.find(arg0); out.println("Title = "+ book.getTitle() + "<br>"); out.println("Author = "+ book.getAuthor() + "<br>"); out.println("Price = "+ book.getPrice() + "<br>"); } catch (Exception ex) { // TODO handle custom exceptions here } 11. กดป+@ม Save6.5 การทดสอบโปรแกรม 1. ท5าการ Build และ Deploy โปรเจ4ค WSServletClient 2. Run โปรแกรม WSServletClient 3. เลอก URL ของ Web Browser เป2น http://localhost:8080/WSServletClient/BookServlet? isbn=123 โดยท 123 คอหมายเลข isbn ทมอย":ในฐานขอม"ล 4. โปรแกรมจะแสดงผลเป2นรายละเอยดของหนงสอในฐานขอม"ลJava Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
  40. 40. 40 Exercise 7 การพฒนาโปรแกรมโดยใช JAXP แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมทเกยวของกบไฟล,ประเภท XML โดยใชช+ดค5าสง JAX-P(Java API for XML Processing) ซ/งเป2นช+ดค5าสงภาษาจาวาเพอด/งขอม"ลจากไฟล,ประเภท XML ขนตอนในการพฒนาโปรแกรม 1. สราง Java Project 2. สราง XML Document 3. พฒนาโปรแกรม XML Parser โดยใช JAXP7.1 การสราง Java Project 1. เลอกเมน" File > New Project 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java และ Java Application แลวกด Next 3. ก5าหนด Project Name เป2น JAXPB แลวเลอก Project Location เป2น folder ทเราตองการจะเก4บไฟล, ไว จากนนเลอกตรง Create Main Class ออก แลวกด Finish7.2 การสราง XML Document 1. คล=กขวาทโหนด JAXPB จากนนเลอก New > Other... 2. ในหนาต:าง New File ใหเลอก Categories ทชอ XML เลอก File Types: เป2น XML Document แลวกด Next 3. ในหนาต:าง New XML Document ใหตงชอ File Name: เป2น Books และเลอก Folder:ไปท src แลวกด Next 4. ใหเลอก Select Document Type เป2นแบบ Well-formed Document แลวกด Finish 5. ใหคดลอกขอม"ลของ XML Document ใน Listing ท 7.1 ไปใส:ในไฟล, Books.xmlListing ท 7.1 ขอม"ลส5าหรบไฟล, Books.xml<?xml version=1.0 encoding=UTF-8?><books> <book> <isbn>111</isbn> <title>SOA</title> <author>Bill</author> <price>2000.0</price> </book> <book> <isbn>222</isbn>การพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
  41. 41. 41 <title>Web Services</title> <author>Jane</author> <price>1800.0</price> </book></books>7.3 การพฒนาโปรแกรม XML Parserในขนตอนนจะเป2นการพฒนาโปรแกรมจาวาเพอท5าหนาทเป2น XML Parser ด/งขอม"ลออกมาจาก SOAPResponse ซ/งมขนอตอนการพฒนาดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด JAXPB จากนนเลอกค5าสง New > Java Main Class แลวกด Next 2. ก5าหนด Class Name: เป2น JAXPDemo จากนนใส: Package: เป2น demo แลวกด Finish 3. ในไฟล, JAXPDemo ใหท5าการประกาศคลาสทชอ XMLHandler โดยใหสบทอดคลาสทชอ XMLFilterImpl ดงแสดงใน Listing ท 7.2Listing ท 7.2 โปรแกรม JAXPDemo.javapackage demo;class XMLHandler extends XMLFilterImpl {}public class JAXPDemo { public static void main(String[] args) { }} 4. คล=กขวาในหนา Editor เพอท5าการ Fix Imports 5. จากนนใหท5าการคล=กขวาในคลาส XMLHandler แลวเลอก Insert Code.... > Override Methods... เลอกเมธอด characters, endDocument, endElement, startDocument และ startElement ดง แสดงในร"ปท 7.1การพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
  42. 42. 42 รปท 7.1 แสดงการเลอก Override Methods ของ XMLFilterImpl 6. กดป+@ม Generate แลวเพมค5าสงในเมธอดต:างๆ ของคลาส XMLHandler ดงแสดงใน Listing ท 7.3Listing ท 7.3 คลาส XMLHandlerclass XMLHandler extends XMLFilterImpl { @Overrideการพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
  43. 43. 43 public void characters(char[] ch, int start, int length) throws SAXException { String content = new String(ch,start,length); if (!content.trim().equals("")) { System.out.println("characters: ("+content+")"); } } @Override public void endDocument() throws SAXException { System.out.println("End Document"); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.println("End Element: "+localName); } @Override public void startDocument() throws SAXException { System.out.println("Start Document"); } @Override public void startElement(String uri, String localName, String qName, Attributes atts) throwsSAXException { System.out.println("Start Element: "+localName); }} 7. จากนนใหท5าการเพมเตม source code ในเมธอด main ของคลาส JAXPDemo ดง Listing ท 7.4Listing ท 7.4 คลาส JAXPDemopublic class JAXPDemo { public static void main(String[] args) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true); SAXParser saxParser = factory.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader();การพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
  44. 44. 44 xmlReader.setContentHandler(new XMLHandler()); InputSource is = new InputSource(new FileInputStream("Books.xml")); xmlReader.parse(is); } catch (Exception ex) { System.out.println(ex); } }} 8. คล=กขวาในหนา Editor เพอท5าการ Fix Imports 9. จากนนใหคล=กขวาทโหนด JAXPB แลวเลอก Properties ตรง Categories ใหเลอก Run จากนนตรง Working Directory ให Browse เลอกไปท folder src กด Open และกด OK 10. Run โปรแกรม JAXPDemo.javaการพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
  45. 45. 45 Exercise 8 การพฒนาโปรแกรม RESTful Web Servicesเนอหาทตองศกษากอน Enterprise Java Bean แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม RESTful Web Services โดยใชช+ดค5าสง JAX-RS เพอสราง Web Services ทจะเรยกด"ขอม"ลจากฐานขอม"ล MySQL ผ:านช+ดค5าสง Java Persistence API (JPA)ขนตอนในการพฒนาโปรแกรม 1. สราง Web Application Project 2. พฒนา Entity Class 3. พฒนา RESTful Web Service จาก Entity Class 4. ทดสอบ RESTful Web Service 5. พฒนา RESTful Web Service Client Stubs8.1 การสราง Web Application Project เราจะก5าหนดใหโปรแกรมนเป2นโปรแกม Web Application ขนตอนแรกจะเป2นการสราง Project ใหม:ข/นมาใน NetBeans ซ/งมขนตอนดงน 1. เลอกเมน" File => New Project.. 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และเลอก Project เป2น Web Application แลวกด Next 3. ก5าหนด Project Name เป2น RestfulWS แลวเลอก Project Location เป2น Director ทเราตองการจะ เก4บไฟล,ไว กด Next 4. จากนนเลอก Server เป2น GlassFishV2.1 และ Java EE 5 แลวกด Finish8.2 การพฒนา Entity Class ขนตอนนจะเป2นการสราง Entity Class เพอตดต:อกบ table ทชอ books ใน MySQL โดยมขนตอนการพฒนาเช:นเดยวกบแบบฝ1กหดการพฒนา Enterprise Java Bean ซ/งเราจะได Entity Class ทชอ Books และPersistence Unit ท5าการแกไขเพอเพม property ของ ไฟล, 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"การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  46. 46. 46 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="adminadmin" /> </properties> </persistence-unit> </persistence>8.3 การพฒนา Restful Web Service จาก Entity Class ขนตอนนจะเป2นการพฒนา Restful Web Services เพอใหสามารถตดต:อกบฐานขอม"ลโดยผ:าน EntityClass ทพฒนาข/นได โดยจะมขนตอนการพฒนาดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RestfulWS จากนนเลอกค5าสง New > Other... 2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น RESTful Web Services from Entity Class แลวกด Next 3. ในไดอะล4อก New RESTful Web Services from Entity Class ใหเลอก Books (entity Books) ดง ร"ปท 8.1 กด Add > แลวกด Next รปท 8.1 การเลอก Entity Class ส#าหรบ RESTful Web Service 4. โปรแกรม NetBeans จะสราง class ต:างๆ ดงร"ปท 8.2การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  47. 47. 47 รปท 8.2 การก#าหนดคา Entity Class 5. กดป+@ม Finish8.4 การทดสอบ RESTful Web Service จาก Entity Class ขนตอนนจะเป2นการทดสอบ RESTful Web Services ทพฒนาข/นโดยจะมขนตอนดงน 1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด RestfulWS จากนนเลอกค5าสง Test RESTful Web Services 2. โปรแกรม Browser จะแสดง uri ของ RESTful Web Services ใหเลอกโหนด bookss และคล=กท {isbn} ใส:ค:า isbn ของหนงสอทตองการด"รายละเอยด จากนนกด Test ดงร"ปท 8.3 ซ/งจะไดผลลพธ,ดง แสดงในร"ปท 8.4 รปท 8.3 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด GETการพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  48. 48. 48 รปท 8.4 ผลลพธ*ทไดจากการเรยกใชเมธอด GET 3. ทดลองเปลยน method เป2น PUT, DELETE และ POST (ตองกดเลอกไปทโหนด bookss) เพอ ท5าการแกไข ลบ และเพมขอม"ลในตาราง books ดงแสดงในร"ปท 8.5, 8.7 และ 8.9 ซ/งจะไดผลลพธ,ดง แสดงในร"ปท 8.6, 8.8 และ 8.10 ตามล5าดบ รปท 8.5 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด PUTการพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  49. 49. 49 รปท 8.6 ผลลพธ*ทไดจากการเรยกใชเมธอด PUT รปท 8.7 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด DELETE รปท 8.8 ผลลพธ*ทไดจากการเรยกใชเมธอด DELETEการพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  50. 50. 50 รปท 8.9 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด POST ร"ปท 8.10 ผลลพธ,ทไดจากการเรยกใชเมธอด POSTการพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  51. 51. 51 Exercise 9 การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API แบบฝ1กหดในบทนเป2นตวอย:างการใช Web Services ทมอย":ใน Social Networks โดยจะใช WebServices ของ Twitter เพอเขยนโปรแกรม update status ของ Twitter ส:วนตว จาก Web Application ทพฒนาข/น จากนนจะเขยนโปรแกรมตดต:อกบ Google Calendar โดยใช Java API ของ Google เพอเรยกด"ก5าหนดนดหมายของผ"ใชในวนป;จจ+บน จากนนจะสามารถเลอกนดหมายทแสดงข/นเพอส:งผ:านไปยง Twitter โดยการเรยกใช Web Services ซ-งมขนตอนในการพฒนาโปรแกรมดงน 1. สราง User Account ส5าหรบ Twitter และ Google Calendar 2. สราง JSF Web Application ส5าหรบ Twitter 3. สราง Web Application ส5าหรบส:งนดหมายใน Google Calendar ไปยง Twitter9.1 การสราง User Account สาหรบ Twitter และ Google Calendar แบบฝ1กหดนจะเรยกใชเว4บไซต, Social Network สองเว4บคอ Twitter และ Google Calendar • เว4บ Twitter เป2นบรการส5าหรบใหเราสามารถทจะเชอมต:อกบ เพอน สมาชกในครอบครว และ เพอนร:วมงานไดอย":ตลอดเวลา โดยการตอบค5าถามสนๆ อย:างบ:อยครงว:า What are you doing? เราสามารถทจะลงทะเบยนเว4บนไดท twitter.com และเมอท5าการล4อกอนเขาไปแลวจะได ตวอย:างเว4บดงร"ปท 9.1การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  52. 52. 52 รปท 9.1 ตวอยางเว/บ Twitter • เว4บ Google Calendar เป2นเว4บทใหผ"ใชจดการก5าหนดการนดหมายต:างๆ ไดโดยสามารถสราง แสดง แกไข และลบไดผ:านโปรแกรมเว4บเบราว,เซอร, โดยขอม"ลการนดหมายจะถ"กเก4บไวท Google ท5าใหผ"ใชสามารถเรยกผ:านเว4บจากเครองใดๆ ก4ได เราสามารถทจะลงทะเบยนเว4บนไดท www.google.com/calendar และเมอท5าการล4อกอนเขาไปแลวจะไดตวอย:างเว4บดงร"ปท 9.2 รปท 9.2 ตวอยางเว/บ Google Calendar • กรณทผ"ใชม account อย":ใน Facebook เราสามารถทจะให status update ของ Twitter ถ"กส:งการพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  53. 53. 53 ผ:านมายงเว4บไซต, Facebook ของเราไดโดยอตโนมตโดยการเลอก Facebook Application ชอ http://apps.facebook.com/twitter/ ดงตวอย:างในร"ป 9.3 รปท 9.3 การเชอมโยงระหวาง Facebook กบ Twitter9.2 การสราง JSF Web Application สาหรบ Twitter ขนตอนนจะเป2นการสราง Web Application โดยใช JSF Visual Web Framework เพอท5าการส:งขอความตอบค5าถาม What are you doing? จากโปรแกรมทพฒนาข/นไปยง Twitter โดยเรยกใช WebServices ซ/งมขนตอนดงน 1. เลอกเมน" File > New Project.. 2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java Web และเลอก Projects เป2น Web Application แลวกด Next 3. ก5าหนด Project Name เป2น TwitterJSF แลวเลอก Project Location เป2น Director ทเราตองการจะ เก4บไฟล,ไว จากนนเลอก Server เป2น GlassFish V2.1 จากนนกด Next 4. ในช:อง Frameworks ใหเลอก Visual Web JavaServer Faces จากนนกด Finishหมายเหต กรณทไม:ม Visual JSF Frameworks ใหไปทเมน" Tools > Plugins แลวเลอกไปทแทป Available Plugins จากนนกด Install ดงแสดงในร"ปท 9.4 และเมอเสร4จสนการตดตงแลว ตอง restart IDEการพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  54. 54. 54 รปท 9.4 การเพม Visual JSF Frameworks โปรแกรมทจะพฒนาตองการจะใหมหนาจอส:วนตดต:อผ"ใชดงร"ปท 9.5 โดยผ"ใชสามารถปBอนขอความในTextField และเมอกดป+@ม Twitter Notification โปรแกรมจะส:งขอความไปยง Twitter โดยมขนตอนการพฒนาโปรแกรมดงน รปท 9.5 สวนตดตอกบผใชของโปรแกรม TwitterJSF 1. ในโปรเจ4ค TwitterJSF ใหเลอกไฟล, Page1.jsp หนาต:าง Editor จะแสดงไฟล,นในโหมด Designการพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  55. 55. 55 2. ในหนาต:าง Properties ใหก5าหนดค:าของ Title เป2น Twitter Notification 3. ในหนาต:าง Palette ลากไอคอน Label ทอย":ภายในโหนด Basic มาไวในหนาต:างการออกแบบของ Page1.jsp แลวแกไขขอความเป2น What are you doing? แลวกด Enter ในหนาต:าง Properties ส5าหรบ Label1 ใหเปลยน Style เพอเลอก Font เป2น Time News Roman ขนาด 18 4. ลากไอคอน TextField ทอย":ภายในโหนด Basic มาไวในหนาต:างการออกแบบของ Page1.jsp ใน ต5าแหน:งดงร"ปท 9.5 5. ในหนาต:าง Properties ส5าหรบ TextField1 ใหเปลยนค:า columns เป2น 60 และค:า id จาก textField1 เป2น answerTf 6. ใหท5าการคล=กขวาท answerTf แลวเลอก Add Binding Attribute 7. ลากไอคอน Button ทอย":ภายในโหนด Basic มาไวในหนาต:างการออกแบบของ Page1.jsp ในต5าแหน:ง ดงร"ปท 9.5 แลวแกไขขอความเป2น Twitter Notification 8. ในหนาต:าง Properties ส5าหรบ Button ใหเปลยนค:า id จาก button1 เป2น sendButton ขนตอนถดมาจะเป2นการเขยน Source code เพอก5าหนดการท5างานของการกดป+@ม Twitter Notificationโดยมขนตอนการท5างานดงน 9. ในแทป Design ใหดบเบลคล=กทป+@ม Twitter Notification 10. เลอกแทป Services แลวขยายโหนด Web Services > Twitter > What are you doing service > statuses > [update.{format}] 11. ลากเซอร,วส updateStatus มาไวในหนาต:าง editor ซ/งแสดง source code ในค5าสง action ของป+@ม และใหแกไข 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.การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  56. 56. 56 twitterresponse.NilClasses.class); } } catch (Exception ex) { ex.printStackTrace(); } return null; } เราจะตองท5าการระบ+ username และ password ของ Twitter โดยการก5าหนดค:า properties ทอย":ในไฟล,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 เราสามารถทดสอบรนโปรแกรมนแลวทดลองปBอนขอความดงร"ปท 9.6 จากนนเราสามารถทจะเรยกด"ผลขอการส:งขอความไปยง Twitter ไดจากเว4บ Twitter ดงร"ปท 9.7 รปท 9.6 การทดสอบโปรแกรม TwitterJSF ทพฒนาขนการพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  57. 57. 57 รปท 9.7 ผลลพธ*ทแสดงในหนาเว/บ Twitter9.3 การสราง Web Application สาหรบส)งนดหมายใน Google Calendar ไปยง Twitter ขนตอนนจะเป2นการสราง Web Application โดยใชเพอท5าการแสดงนดหมายจาก Google Calendarแลวเลอกนดหมายเพอส:งไปยง Twitter โปรแกรมจะถ"กก5าหนดใหอย":ภายใน Web Project ทชอ TwitterTesterทมไฟล,ต:างๆ คอ9.1.1 CalendarTwitter.html โปรแกรมนเป2น Web Page เพอใหผ"ใชปBอนขอม"ล account ของทง Google Calendar และ Twitter ดงร"ปท 9.8 โดยม source code ดงน<html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="CalendarServlet" method="POST"> <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>การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  58. 58. 58 <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> รปท 9.8 เว/บเพจ CalendarTwitter.html9.1.2 CalendarServlet.java โปรแกรม Servlet นจะเป2นโปรแกรมทแสดงนดหมายของผ"ใชใน Google Account ทระบ+เพอมาแสดงดงตวอย:างในร"ปท 9.9 รปท 9.9 ตวอยางการแสดงนดหมายของวนท 10/8/2009การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan
  59. 59. 59 โปรแกรม Servlet นจะเรยกใช Google API à

×