SlideShare une entreprise Scribd logo
1  sur  176
Télécharger pour lire hors ligne
1




            Hand-on
            Exercises

       Java Web Services
               and
  Service Oriented Architecture
      Using GlassFish ESB
          and NetBeans



Assoc.Prof.Dr.Thanachart Numnonda
               and
 Asst Prof.Thanisa Kruawaisayawan
             August 2010




                      Thanachart Numnonda / Thanisa Kruawaisayawan
2



                                                                สารบญ
Exercise 1 Java RMI...........................................................................................................................4

Exercise 2 Web Services Using JAX-RPC ........................................................................................8

Exercise 3      การพฒนาโปรแกรม Web Services Client...........................................................................17
Exercise 4      การพฒนาโปรแกรม Web Services Provider.......................................................................26
Exercise 5 Axis2 Web Services.........................................................................................................31

Exercise 6 Java Web Services from Entity Class .............................................................................36

Exercise 7 การพฒนาโปรแกรมโดยใช JAXP .......................................................................................40
Exercise 8 การพฒนาโปรแกรม RESTful Web Services .....................................................................45
Exercise 9 การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API....................51
Exercise 10 การพฒนาโปรแกรมเพอเรยกใช Google Map Web Services .............................................64
Exercise 11 การพฒนาโปรแกรม Hello BPEL......................................................................................70

Exercise 12 BPEL for Writing to File...............................................................................................82

Exercise 13 BPEL for Writing to Database.......................................................................................96

Exercise 14 BPEL for Sending Message to a JMS Queue ............................................................105

Exercise 15 Simple BPEL Invoking Web Services ........................................................................116

Exercise 16 Advance BPEL Invoking Web Services .....................................................................134

Exercise 17 BPEL : Structured Activities.......................................................................................167




                                                                                  Thanachart Numnonda / Thanisa Kruawaisayawan
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

                                  Exercise 1 Java RMI

       แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมแบบกระจาย (Distributed) โดยใช Java RMI ในการเคลอน
ยาย Object ซ/งมขนตอนในการพฒนาโปรแกรมดงน

      1.   สราง Java Project
      2.   พฒนาโปรแกรม Server Interface
      3.   พฒนาโปรแกรม Server Implementation
      4.   พฒนาโปรแกรม Server Application
      5.   พฒนาโปรแกรม Client Application

1.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 ออก แลวกด Finish

1.2    การพฒนาโปรแกรม Server Interface
       ในขนตอนนจะเป2นการสราง Server Interface เพอประกาศเมธอดทตองการใหบรการ โดย Server
Interface นจะตอง 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.1




Listing ท 1.1 โปรแกรม Hello.java


Java RMI                                                  Thanachart Numnonda / Thanisa Kruawaisayawan
5


package 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.2

Listing 1.2 โปรแกรม HelloImpl.java
package 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

จะใหบรการเมธอดต:างๆ ซ/งมขนตอนการพฒนาดงน

        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.3

Listing ท 1.3 โปรแกรม HelloServer.java


package 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.4


Java RMI                                                        Thanachart Numnonda / Thanisa Kruawaisayawan
7



Listing ท 1.4 โปรแกรม HelloClient.java
package 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

                   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า Web
Service ในทางปฏบตทตองการท5า Web Service เพอขยายโอกาสทางธ+รกจและคาดว:าน:าจะมผ"เขามาใช Service
จ5านวนมากข/น ท5าให Web Server อาจไม:เหมาะสมกบการรองรบจ5านวนผ"ใชจ5านวนมาก ดงนนผ"พฒนา Java
Web Services จ/งควรทจะมความร"ในการพฒนา Application Server โดยใช EJB

       แบบฝ1กหดจะแสดงขนตอนการใช NetBeans สราง Web Services ทชอ calculateTax โดยใช Servlet
และสราง Web Services ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Entity Bean
Using 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 Service

2.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 EE

Web Services Using JAX-RPC                                Thanachart Numnonda / Thanisa Kruawaisayawan
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

                           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 Services


2.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 Application

Web Services Using JAX-RPC                                   Thanachart Numnonda / Thanisa Kruawaisayawan
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.4




Web Services Using JAX-RPC                            Thanachart Numnonda / Thanisa Kruawaisayawan
12




                             รปท 2.4 ผลทไดจากการอางอง Web Service Client

      8.   ในหนาต:าง Projects ลากโหนด calculateTax ลงในไฟล, Main.java ของหนาต:าง Editor โปรแกรมจะ
           เพม source code ใหอตโนมต ใหแกไขค:า double1 เป2น 350000
      9.   ทดลองรนโปรแกรมจะเห4นค:าผลลพธ,เป2น Result = 37500.0

2.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.5




Web Services Using JAX-RPC                                Thanachart Numnonda / Thanisa Kruawaisayawan
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.6




Web Services Using JAX-RPC                            Thanachart Numnonda / Thanisa Kruawaisayawan
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 Project



2.4    การพฒนาโปรแกรม Web Application เพอเรยกใช Web Service

       ขนตอนนจะเป2นการพฒนา Web Application บน Sun Java Application Server 9 เพอเรยกใช            Web
Service ทชอ findBook โดยมขนตอนการพฒนาดงน

      1.   เลอกเมน" File => New Project..ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ
           Projects เป2น WebApplication แลวกด Next


Web Services Using JAX-RPC                                 Thanachart Numnonda / Thanisa Kruawaisayawan
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.   กดป+@ม Save

2.5    การทดสอบโปรแกรม

Web Services Using JAX-RPC                                      Thanachart Numnonda / Thanisa Kruawaisayawan
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าหรบ JDK
6 ใหเลอกใช JAX-WS API ทจะกล:าวถ/งในแบบฝ1กหดถดไป




Web Services Using JAX-RPC                             Thanachart Numnonda / Thanisa Kruawaisayawan
17



               Exercise 3 การพฒนาโปรแกรม Web Services Client

       แบบฝกหดในบทนเปนการพฒนาโปรแกรมเพอเรยกใช Web Services ทมอย()แลว ซ-งจะเลอกมา 2
บร2การดงน
          การทดลองท 1 ราคาน4ามนล)าส6ดของ ปตท.
          การทดลองท 2 อตราแลกเปลยนเง2นตราระหว)างประเทศ
           โดยจะใช soapUI, NetBeans และ GlassFish Server

3.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

          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 ไดโดยการดาวน,โหลด SoupUI
NetBeans 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

         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

           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




                                     รปท 3.5 ตวอยางผลลพธ*การรน SoapUI

3.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 แลวกด
            Finish


3.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




                              รปท 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




                      รปท 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

          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

    7.   ท5าการ Build/Deploy แลว Run ไฟล, CurrencyServlet.java โปรแกรมจะแสดงอตราแลกเปลยนเงน
         ตรา ดงแสดงในร"ปท 3.9




            รปท 3.9 แสดงผลลพธ*ทไดจากการเรยกใช Web Service Operation: ConversionRate




การพฒนาโปรแกรม Web Services Client                    Thanachart Numnonda / Thanisa Kruawaisayawan
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) และ Web
Service 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 Server


4.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

      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 อกครง แลวเลอก Deploy


4.2    การทดสอบ Web Service

       โปรแกรม Web Service จะถ"กตดตงบน GlassFish V2.1 และสามารถเรยกด"ไดการใช System
Admin 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




                                 รปท 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




                          รปท 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

     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

                           Exercise 5 Axis2 Web Services


       แบบฝ1กหดนเป2นการตดตง Axis2 Web Services บน Tomcat Web Server แลวทดลองพฒนา Web
Service โดยใชโปรแกรม NetBeans


5.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.2

Axis2 Web Services                                         Thanachart Numnonda / Thanisa Kruawaisayawan
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 Axis2
5.2    การต%ดต#ง Axis2 Plugin สาหรบ NetBeans
      ขนตอนนจะเป2นการตดตง Axis2 Plugin เพอท5าให NetBeans สามารถพฒนา Axis2 Web Services
ไดโดยมขนตอนดงน


Axis2 Web Services                                             Thanachart Numnonda / Thanisa Kruawaisayawan
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




                              รปท 5.5 การ Config คาส#าหรบ Tomcat Axis2


5.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

        Axis2Demo แลวเลอกค5าสง Deploy to Server
     10. ทดสอบเว4บเซอร,วสได รนโปรแกรม Browser และการเลอก url ทชอ http://localhost:8084/axis2/
        แลวคล=ก Services จะเห4นเว4บเซอร,วสทชอ TaxServices อย":


Listing ท 5.1 โปรแกรม TaxServices.java


package ws;

public class TaxServices {

    public double calculateTax(double income) {
      return 0.1 * income;
    }

}




Axis2 Web Services                                        Thanachart Numnonda / Thanisa Kruawaisayawan
36

              Exercise 6 Java Web Services from Entity Class


       แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรม Web Services ส5าหรบ Java EE โซ/งจะเป2นการพฒนาบน
Server ทรนบน Java EE โดยช+ดค5าสง JAX-WS ซ/งในกรณนจะแสดงขนตอนการใช NetBeans สราง Web
Services ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Enterprise Java Bean โดย
Service นจะเป2นการคนหาหนงสอจาก table ทชอ book ในฐานขอม"ล MySQL


6.1    การสราง Enterprise Application Project

      เราจะก5าหนดใหโปรแกรมนเป2นโปรแกม Enterprise Application ซ/งมทง EJB Module และ Web
Module ขนตอนแรกจะเป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 Axis2

Java Web Services from Entity Class                        Thanachart Numnonda / Thanisa Kruawaisayawan
37

6.2    การพฒนา Entity Class และ Session Bean

       ขนตอนนจะเป2นการสราง Entity Class และ Session Bean เพอตดต:อกบ table ทชอ books ใน
MySQL โดยมขนตอนการพฒนาเช:นเดยวกบแบบฝ1กหดการพฒนา Enterprise Java Bean ซ/งเราจะได Entity
Class ทชอ 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 Project


Java Web Services from Entity Class                         Thanachart Numnonda / Thanisa Kruawaisayawan
38

6.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 ชอ findDBook


Java Web Services from Entity Class                      Thanachart Numnonda / Thanisa Kruawaisayawan
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.   กดป+@ม Save

6.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


                           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 โดยใช JAXP


7.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 ออก แลวกด Finish
7.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.xml

Listing ท 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

    <title>Web Services</title>
    <author>Jane</author>
    <price>1800.0</price>
  </book>
</books>

7.3          การพฒนาโปรแกรม XML Parser
ในขนตอนนจะเป2นการพฒนาโปรแกรมจาวาเพอท5าหนาทเป2น XML Parser ด/งขอม"ลออกมาจาก SOAP
Response ซ/งมขนอตอนการพฒนาดงน

        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.2


Listing ท 7.2 โปรแกรม JAXPDemo.java


package 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




                       รปท 7.1 แสดงการเลอก Override Methods ของ XMLFilterImpl

     6.   กดป+@ม Generate แลวเพมค5าสงในเมธอดต:างๆ ของคลาส XMLHandler ดงแสดงใน Listing ท 7.3

Listing ท 7.3 คลาส XMLHandler


class XMLHandler extends XMLFilterImpl {
  @Override


การพฒนาโปรแกรมโดยใช JAXP                                 Thanachart Numnonda / Thanisa Kruawaisayawan
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) throws
SAXException {
         System.out.println("Start Element: "+localName);
    }


}


        7.   จากนนใหท5าการเพมเตม source code ในเมธอด main ของคลาส JAXPDemo ดง Listing ท 7.4

Listing ท 7.4 คลาส JAXPDemo


public 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

              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


              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 Stubs

8.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 แลวกด Finish

8.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

           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 เพอใหสามารถตดต:อกบฐานขอม"ลโดยผ:าน Entity
Class ทพฒนาข/นได โดยจะมขนตอนการพฒนาดงน

      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




                                      รปท 8.2 การก#าหนดคา Entity Class

      5.   กดป+@ม Finish

8.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




                               รปท 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




                                      รปท 8.6 ผลลพธ*ทไดจากการเรยกใชเมธอด PUT




                  รปท 8.7 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด DELETE




                                 รปท 8.8 ผลลพธ*ทไดจากการเรยกใชเมธอด DELETE




การพฒนาโปรแกรม RESTful Web Services                         Thanachart Numnonda / Thanisa Kruawaisayawan
50




                    รปท 8.9 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด POST




        ร"ปท 8.10 ผลลพธ,ทไดจากการเรยกใชเมธอด POST




การพฒนาโปรแกรม RESTful Web Services                   Thanachart Numnonda / Thanisa Kruawaisayawan
51

                              Exercise 9
         การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google
                             Calendar API


       แบบฝ1กหดในบทนเป2นตวอย:างการใช Web Services ทมอย":ใน Social Networks โดยจะใช Web
Services ของ 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 ไปยง Twitter

9.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




                                        รปท 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

                ผ:านมายงเว4บไซต, Facebook ของเราไดโดยอตโนมตโดยการเลอก Facebook Application ชอ
                http://apps.facebook.com/twitter/ ดงตวอย:างในร"ป 9.3




                            รปท 9.3 การเชอมโยงระหวาง Facebook กบ Twitter

9.2 การสราง JSF Web Application สาหรบ Twitter

       ขนตอนนจะเป2นการสราง Web Application โดยใช JSF Visual Web Framework เพอท5าการส:ง
ขอความตอบค5าถาม What are you doing? จากโปรแกรมทพฒนาข/นไปยง Twitter โดยเรยกใช Web
Services ซ/งมขนตอนดงน

    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




                                 รปท 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

    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

                                                 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




                                 รปท 9.7 ผลลพธ*ทแสดงในหนาเว/บ Twitter

9.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

                <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.html
9.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


       โปรแกรม Servlet นจะเรยกใช Google API ซ/งผ"ใชจะตองท5าการดาวน,โหลดไฟล,
gdata-src.java-1.39.0.zip มาจาก http://code.google.com/p/gdata-java-
client/downloads/list และตองดาวน,โหลดไฟล, google-collect-1.0-rc3.zip มา
จาก http://code.google.com/p/google-collections/downloads/list จากนน
ใหท5าการ unzip และจะตองท5าการตดตง Library นใน NetBeans โดยมขนตอนดงน

    1.   เลอกเมน" Tool > Library..
    2.   ในไดอะล4อก Library Manager ใหเลอก New Library.. แลวก5าหนด Library Name เป2น GData
    3.   ก5าหนด Classpath ของ GData เป2น ดงร"ปท 9.10 โดยมไฟล,ต:างๆ ใน folder
         [$gdata-director$]gdatajavalib ดงน

                •   gdata-base-1.0.jar
                •   gdata-calendar-2.0.jar
                •   gdata-calendar-meta-2.0.jar
                •   gdata-client-1.0.jar
                •   gdata-client-meta-1.0.jar
                •   gdata-core-1.0.jar




                               รปท 9.10 การเพมไฟล*ของ Library ทชอ Gdata


    1.   ก5าหนด Sources เป2น [$gdata-director$]gdatajavasrc

การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API
                                   Thanachart Numnonda / Thanisa Kruawaisayawan
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

Contenu connexe

Similaire à Java Web Services and SOA Using GlassFish openESB and NetBeans

SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]Thanachart Numnonda
 
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and TomcatIMC Institute
 
Java Programming [1/12] : Introduction
Java Programming [1/12] : IntroductionJava Programming [1/12] : Introduction
Java Programming [1/12] : IntroductionIMC Institute
 
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeansJava Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeansIMC Institute
 
Eclipse
EclipseEclipse
Eclipsegzxc
 
ตัวอย่างโครงงาน
ตัวอย่างโครงงานตัวอย่างโครงงาน
ตัวอย่างโครงงานjokercoke
 
ความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวาความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวาThanachart Numnonda
 
๋Java Web Programming on Cloud Computing using Google App Engine
๋Java Web Programming on Cloud Computing using Google App Engine๋Java Web Programming on Cloud Computing using Google App Engine
๋Java Web Programming on Cloud Computing using Google App EngineIMC Institute
 

Similaire à Java Web Services and SOA Using GlassFish openESB and NetBeans (20)

SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]SOA Using GlassFishESB and NetBeans [in Thai]
SOA Using GlassFishESB and NetBeans [in Thai]
 
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using  Eclipse and TomcatJava Web Programming (JSP/Servlet) Using  Eclipse and Tomcat
Java Web Programming (JSP/Servlet) Using Eclipse and Tomcat
 
webprogramming eclipse-jsp
webprogramming eclipse-jspwebprogramming eclipse-jsp
webprogramming eclipse-jsp
 
Java intro
Java introJava intro
Java intro
 
650 1
650 1650 1
650 1
 
Java Programming [1/12] : Introduction
Java Programming [1/12] : IntroductionJava Programming [1/12] : Introduction
Java Programming [1/12] : Introduction
 
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeansJava Web Programming [Servlet/JSP] Using GlassFish and NetBeans
Java Web Programming [Servlet/JSP] Using GlassFish and NetBeans
 
20121102 joomla2-5
20121102 joomla2-520121102 joomla2-5
20121102 joomla2-5
 
EJB Programming Using Eclipse & JBoss
EJB Programming Using Eclipse & JBossEJB Programming Using Eclipse & JBoss
EJB Programming Using Eclipse & JBoss
 
Eclipse
EclipseEclipse
Eclipse
 
Proposal
ProposalProposal
Proposal
 
Ch07
Ch07Ch07
Ch07
 
ตัวอย่างโครงงาน
ตัวอย่างโครงงานตัวอย่างโครงงาน
ตัวอย่างโครงงาน
 
ความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวาความรู้เบื้องต้นภาษาจาวา
ความรู้เบื้องต้นภาษาจาวา
 
lesson3 JSP
lesson3 JSPlesson3 JSP
lesson3 JSP
 
๋Java Web Programming on Cloud Computing using Google App Engine
๋Java Web Programming on Cloud Computing using Google App Engine๋Java Web Programming on Cloud Computing using Google App Engine
๋Java Web Programming on Cloud Computing using Google App Engine
 
Google App Engine Using Eclipse
Google App Engine Using EclipseGoogle App Engine Using Eclipse
Google App Engine Using Eclipse
 
Exe2[1]
Exe2[1]Exe2[1]
Exe2[1]
 
Exe2[1]
Exe2[1]Exe2[1]
Exe2[1]
 
Exe2[1]
Exe2[1]Exe2[1]
Exe2[1]
 

Plus de Software Park Thailand

Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Thailand Newsletter (Thai) Vol2/2556Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Thailand Newsletter (Thai) Vol2/2556Software Park Thailand
 
Software Park Newsletter Thai Vol 3/25561
Software Park Newsletter Thai Vol 3/25561Software Park Newsletter Thai Vol 3/25561
Software Park Newsletter Thai Vol 3/25561Software Park Thailand
 
Solfware park Newsletter Vol 3/2013 Eng Version
Solfware park Newsletter Vol 3/2013 Eng VersionSolfware park Newsletter Vol 3/2013 Eng Version
Solfware park Newsletter Vol 3/2013 Eng VersionSoftware Park Thailand
 
Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand Newsletter Vol 3/2556Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand Newsletter Vol 3/2556Software Park Thailand
 
Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand Newsletter (Eng) Vol3/2012Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand Newsletter (Eng) Vol3/2012Software Park Thailand
 
Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand Newsletter (Eng) Vol5/2013Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand Newsletter (Eng) Vol5/2013Software Park Thailand
 
Software Park Thailand Newsletter (Thai) Vol4/2555
Software Park Thailand Newsletter (Thai) Vol4/2555Software Park Thailand Newsletter (Thai) Vol4/2555
Software Park Thailand Newsletter (Thai) Vol4/2555Software Park Thailand
 
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)Software Park Thailand
 
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"Software Park Thailand
 
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...Software Park Thailand
 
Software Park Newsletter Vol. 4/2012 English Version
Software Park Newsletter Vol. 4/2012 English VersionSoftware Park Newsletter Vol. 4/2012 English Version
Software Park Newsletter Vol. 4/2012 English VersionSoftware Park Thailand
 
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012Software Park Thailand
 
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012Software Park Thailand
 
Thai IT Business Development Delegation to Tokyo, Japan: November 2012
Thai IT Business Development Delegation to Tokyo, Japan: November 2012 Thai IT Business Development Delegation to Tokyo, Japan: November 2012
Thai IT Business Development Delegation to Tokyo, Japan: November 2012 Software Park Thailand
 

Plus de Software Park Thailand (20)

Smart industry Vol.33/2561
Smart industry Vol.33/2561Smart industry Vol.33/2561
Smart industry Vol.33/2561
 
Softwarepark news Vol.7/2561
Softwarepark news Vol.7/2561Softwarepark news Vol.7/2561
Softwarepark news Vol.7/2561
 
Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Thailand Newsletter (Thai) Vol2/2556Software Park Thailand Newsletter (Thai) Vol2/2556
Software Park Thailand Newsletter (Thai) Vol2/2556
 
Software Park Newsletter Thai Vol 3/25561
Software Park Newsletter Thai Vol 3/25561Software Park Newsletter Thai Vol 3/25561
Software Park Newsletter Thai Vol 3/25561
 
Smart Industry Vol.23
Smart Industry Vol.23Smart Industry Vol.23
Smart Industry Vol.23
 
Solfware park Newsletter Vol 3/2013 Eng Version
Solfware park Newsletter Vol 3/2013 Eng VersionSolfware park Newsletter Vol 3/2013 Eng Version
Solfware park Newsletter Vol 3/2013 Eng Version
 
Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand Newsletter Vol 3/2556Software Park Thailand Newsletter Vol 3/2556
Software Park Thailand Newsletter Vol 3/2556
 
Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand Newsletter (Eng) Vol3/2012Software Park Thailand Newsletter (Eng) Vol3/2012
Software Park Thailand Newsletter (Eng) Vol3/2012
 
Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand Newsletter (Eng) Vol5/2013Software Park Thailand Newsletter (Eng) Vol5/2013
Software Park Thailand Newsletter (Eng) Vol5/2013
 
Software Park Thailand Newsletter (Thai) Vol4/2555
Software Park Thailand Newsletter (Thai) Vol4/2555Software Park Thailand Newsletter (Thai) Vol4/2555
Software Park Thailand Newsletter (Thai) Vol4/2555
 
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
Thai ICT Trad Mission CommunicAsia 2013 (18-21 June 2013)
 
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
Smart Industry Vo.22/2556"E-transaction กระตุ้นธุรกิจอีคอมเมิร์สโต"
 
Software newsletter
Software newsletterSoftware newsletter
Software newsletter
 
Smart industry Vol. 21/2556
Smart industry Vol. 21/2556Smart industry Vol. 21/2556
Smart industry Vol. 21/2556
 
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...
 
Software Park Newsletter Vol. 4/2012 English Version
Software Park Newsletter Vol. 4/2012 English VersionSoftware Park Newsletter Vol. 4/2012 English Version
Software Park Newsletter Vol. 4/2012 English Version
 
Thai IT Delegation to Japan 2012
Thai IT Delegation to Japan 2012Thai IT Delegation to Japan 2012
Thai IT Delegation to Japan 2012
 
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
Thai IT Business Develop,emt Delegation to Tokyo, Japan, 2012
 
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
Thai IT Trade Delegation to Tokyo, Japan 11-16 November 2012
 
Thai IT Business Development Delegation to Tokyo, Japan: November 2012
Thai IT Business Development Delegation to Tokyo, Japan: November 2012 Thai IT Business Development Delegation to Tokyo, Japan: November 2012
Thai IT Business Development Delegation to Tokyo, Japan: November 2012
 

Java Web Services and SOA Using GlassFish openESB and NetBeans

  • 1. 1 Hand-on Exercises Java Web Services and Service Oriented Architecture Using GlassFish ESB and NetBeans Assoc.Prof.Dr.Thanachart Numnonda and Asst Prof.Thanisa Kruawaisayawan August 2010 Thanachart Numnonda / Thanisa Kruawaisayawan
  • 2. 2 สารบญ Exercise 1 Java RMI...........................................................................................................................4 Exercise 2 Web Services Using JAX-RPC ........................................................................................8 Exercise 3 การพฒนาโปรแกรม Web Services Client...........................................................................17 Exercise 4 การพฒนาโปรแกรม Web Services Provider.......................................................................26 Exercise 5 Axis2 Web Services.........................................................................................................31 Exercise 6 Java Web Services from Entity Class .............................................................................36 Exercise 7 การพฒนาโปรแกรมโดยใช JAXP .......................................................................................40 Exercise 8 การพฒนาโปรแกรม RESTful Web Services .....................................................................45 Exercise 9 การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API....................51 Exercise 10 การพฒนาโปรแกรมเพอเรยกใช Google Map Web Services .............................................64 Exercise 11 การพฒนาโปรแกรม Hello BPEL......................................................................................70 Exercise 12 BPEL for Writing to File...............................................................................................82 Exercise 13 BPEL for Writing to Database.......................................................................................96 Exercise 14 BPEL for Sending Message to a JMS Queue ............................................................105 Exercise 15 Simple BPEL Invoking Web Services ........................................................................116 Exercise 16 Advance BPEL Invoking Web Services .....................................................................134 Exercise 17 BPEL : Structured Activities.......................................................................................167 Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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 Exercise 1 Java RMI แบบฝ1กหดในบทนเป2นการพฒนาโปรแกรมแบบกระจาย (Distributed) โดยใช Java RMI ในการเคลอน ยาย Object ซ/งมขนตอนในการพฒนาโปรแกรมดงน 1. สราง Java Project 2. พฒนาโปรแกรม Server Interface 3. พฒนาโปรแกรม Server Implementation 4. พฒนาโปรแกรม Server Application 5. พฒนาโปรแกรม Client Application 1.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 ออก แลวกด Finish 1.2 การพฒนาโปรแกรม Server Interface ในขนตอนนจะเป2นการสราง Server Interface เพอประกาศเมธอดทตองการใหบรการ โดย Server Interface นจะตอง 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.1 Listing ท 1.1 โปรแกรม Hello.java Java RMI Thanachart Numnonda / Thanisa Kruawaisayawan
  • 5. 5 package 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.2 Listing 1.2 โปรแกรม HelloImpl.java package 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 จะใหบรการเมธอดต:างๆ ซ/งมขนตอนการพฒนาดงน 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.3 Listing ท 1.3 โปรแกรม HelloServer.java package 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.4 Java RMI Thanachart Numnonda / Thanisa Kruawaisayawan
  • 7. 7 Listing ท 1.4 โปรแกรม HelloClient.java package 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 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า Web Service ในทางปฏบตทตองการท5า Web Service เพอขยายโอกาสทางธ+รกจและคาดว:าน:าจะมผ"เขามาใช Service จ5านวนมากข/น ท5าให Web Server อาจไม:เหมาะสมกบการรองรบจ5านวนผ"ใชจ5านวนมาก ดงนนผ"พฒนา Java Web Services จ/งควรทจะมความร"ในการพฒนา Application Server โดยใช EJB แบบฝ1กหดจะแสดงขนตอนการใช NetBeans สราง Web Services ทชอ calculateTax โดยใช Servlet และสราง Web Services ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Entity Bean Using 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 Service 2.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 EE Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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 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 Services 2.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 Application Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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.4 Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 12. 12 รปท 2.4 ผลทไดจากการอางอง Web Service Client 8. ในหนาต:าง Projects ลากโหนด calculateTax ลงในไฟล, Main.java ของหนาต:าง Editor โปรแกรมจะ เพม source code ใหอตโนมต ใหแกไขค:า double1 เป2น 350000 9. ทดลองรนโปรแกรมจะเห4นค:าผลลพธ,เป2น Result = 37500.0 2.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.5 Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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.6 Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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 Project 2.4 การพฒนาโปรแกรม Web Application เพอเรยกใช Web Service ขนตอนนจะเป2นการพฒนา Web Application บน Sun Java Application Server 9 เพอเรยกใช Web Service ทชอ findBook โดยมขนตอนการพฒนาดงน 1. เลอกเมน" File => New Project..ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ Projects เป2น WebApplication แลวกด Next Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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. กดป+@ม Save 2.5 การทดสอบโปรแกรม Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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าหรบ JDK 6 ใหเลอกใช JAX-WS API ทจะกล:าวถ/งในแบบฝ1กหดถดไป Web Services Using JAX-RPC Thanachart Numnonda / Thanisa Kruawaisayawan
  • 17. 17 Exercise 3 การพฒนาโปรแกรม Web Services Client แบบฝกหดในบทนเปนการพฒนาโปรแกรมเพอเรยกใช Web Services ทมอย()แลว ซ-งจะเลอกมา 2 บร2การดงน การทดลองท 1 ราคาน4ามนล)าส6ดของ ปตท. การทดลองท 2 อตราแลกเปลยนเง2นตราระหว)างประเทศ โดยจะใช soapUI, NetBeans และ GlassFish Server 3.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 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 ไดโดยการดาวน,โหลด SoupUI NetBeans 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 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 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 รปท 3.5 ตวอยางผลลพธ*การรน SoapUI 3.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 แลวกด Finish 3.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 รปท 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 รปท 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 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 7. ท5าการ Build/Deploy แลว Run ไฟล, CurrencyServlet.java โปรแกรมจะแสดงอตราแลกเปลยนเงน ตรา ดงแสดงในร"ปท 3.9 รปท 3.9 แสดงผลลพธ*ทไดจากการเรยกใช Web Service Operation: ConversionRate การพฒนาโปรแกรม Web Services Client Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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) และ Web Service 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 Server 4.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 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 อกครง แลวเลอก Deploy 4.2 การทดสอบ Web Service โปรแกรม Web Service จะถ"กตดตงบน GlassFish V2.1 และสามารถเรยกด"ไดการใช System Admin 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 รปท 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 รปท 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 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 Exercise 5 Axis2 Web Services แบบฝ1กหดนเป2นการตดตง Axis2 Web Services บน Tomcat Web Server แลวทดลองพฒนา Web Service โดยใชโปรแกรม NetBeans 5.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.2 Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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 Axis2 5.2 การต%ดต#ง Axis2 Plugin สาหรบ NetBeans ขนตอนนจะเป2นการตดตง Axis2 Plugin เพอท5าให NetBeans สามารถพฒนา Axis2 Web Services ไดโดยมขนตอนดงน Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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 รปท 5.5 การ Config คาส#าหรบ Tomcat Axis2 5.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 Axis2Demo แลวเลอกค5าสง Deploy to Server 10. ทดสอบเว4บเซอร,วสได รนโปรแกรม Browser และการเลอก url ทชอ http://localhost:8084/axis2/ แลวคล=ก Services จะเห4นเว4บเซอร,วสทชอ TaxServices อย": Listing ท 5.1 โปรแกรม TaxServices.java package ws; public class TaxServices { public double calculateTax(double income) { return 0.1 * income; } } Axis2 Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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 สราง Web Services ทชอ findBook ซ/งเรยกใช Session Bean ทสรางข/นในแบบฝ1กหด Enterprise Java Bean โดย Service นจะเป2นการคนหาหนงสอจาก table ทชอ book ในฐานขอม"ล MySQL 6.1 การสราง Enterprise Application Project เราจะก5าหนดใหโปรแกรมนเป2นโปรแกม Enterprise Application ซ/งมทง EJB Module และ Web Module ขนตอนแรกจะเป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 Axis2 Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
  • 37. 37 6.2 การพฒนา Entity Class และ Session Bean ขนตอนนจะเป2นการสราง Entity Class และ Session Bean เพอตดต:อกบ table ทชอ books ใน MySQL โดยมขนตอนการพฒนาเช:นเดยวกบแบบฝ1กหดการพฒนา Enterprise Java Bean ซ/งเราจะได Entity Class ทชอ 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 Project Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
  • 38. 38 6.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 ชอ findDBook Java Web Services from Entity Class Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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. กดป+@ม Save 6.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 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 โดยใช JAXP 7.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 ออก แลวกด Finish 7.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.xml Listing ท 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 <title>Web Services</title> <author>Jane</author> <price>1800.0</price> </book> </books> 7.3 การพฒนาโปรแกรม XML Parser ในขนตอนนจะเป2นการพฒนาโปรแกรมจาวาเพอท5าหนาทเป2น XML Parser ด/งขอม"ลออกมาจาก SOAP Response ซ/งมขนอตอนการพฒนาดงน 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.2 Listing ท 7.2 โปรแกรม JAXPDemo.java package 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 รปท 7.1 แสดงการเลอก Override Methods ของ XMLFilterImpl 6. กดป+@ม Generate แลวเพมค5าสงในเมธอดต:างๆ ของคลาส XMLHandler ดงแสดงใน Listing ท 7.3 Listing ท 7.3 คลาส XMLHandler class XMLHandler extends XMLFilterImpl { @Override การพฒนาโปรแกรมโดยใช JAXP Thanachart Numnonda / Thanisa Kruawaisayawan
  • 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) throws SAXException { System.out.println("Start Element: "+localName); } } 7. จากนนใหท5าการเพมเตม source code ในเมธอด main ของคลาส JAXPDemo ดง Listing ท 7.4 Listing ท 7.4 คลาส JAXPDemo public 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 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 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 Stubs 8.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 แลวกด Finish 8.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 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 เพอใหสามารถตดต:อกบฐานขอม"ลโดยผ:าน Entity Class ทพฒนาข/นได โดยจะมขนตอนการพฒนาดงน 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 รปท 8.2 การก#าหนดคา Entity Class 5. กดป+@ม Finish 8.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 รปท 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 รปท 8.6 ผลลพธ*ทไดจากการเรยกใชเมธอด PUT รปท 8.7 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด DELETE รปท 8.8 ผลลพธ*ทไดจากการเรยกใชเมธอด DELETE การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  • 50. 50 รปท 8.9 การรนโปรแกรมทดสอบ RESTful Web Service โดยใชเมธอด POST ร"ปท 8.10 ผลลพธ,ทไดจากการเรยกใชเมธอด POST การพฒนาโปรแกรม RESTful Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
  • 51. 51 Exercise 9 การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API แบบฝ1กหดในบทนเป2นตวอย:างการใช Web Services ทมอย":ใน Social Networks โดยจะใช Web Services ของ 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 ไปยง Twitter 9.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 รปท 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 ผ:านมายงเว4บไซต, Facebook ของเราไดโดยอตโนมตโดยการเลอก Facebook Application ชอ http://apps.facebook.com/twitter/ ดงตวอย:างในร"ป 9.3 รปท 9.3 การเชอมโยงระหวาง Facebook กบ Twitter 9.2 การสราง JSF Web Application สาหรบ Twitter ขนตอนนจะเป2นการสราง Web Application โดยใช JSF Visual Web Framework เพอท5าการส:ง ขอความตอบค5าถาม What are you doing? จากโปรแกรมทพฒนาข/นไปยง Twitter โดยเรยกใช Web Services ซ/งมขนตอนดงน 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 รปท 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 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 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 รปท 9.7 ผลลพธ*ทแสดงในหนาเว/บ Twitter 9.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 <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.html 9.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 โปรแกรม Servlet นจะเรยกใช Google API ซ/งผ"ใชจะตองท5าการดาวน,โหลดไฟล, gdata-src.java-1.39.0.zip มาจาก http://code.google.com/p/gdata-java- client/downloads/list และตองดาวน,โหลดไฟล, google-collect-1.0-rc3.zip มา จาก http://code.google.com/p/google-collections/downloads/list จากนน ใหท5าการ unzip และจะตองท5าการตดตง Library นใน NetBeans โดยมขนตอนดงน 1. เลอกเมน" Tool > Library.. 2. ในไดอะล4อก Library Manager ใหเลอก New Library.. แลวก5าหนด Library Name เป2น GData 3. ก5าหนด Classpath ของ GData เป2น ดงร"ปท 9.10 โดยมไฟล,ต:างๆ ใน folder [$gdata-director$]gdatajavalib ดงน • gdata-base-1.0.jar • gdata-calendar-2.0.jar • gdata-calendar-meta-2.0.jar • gdata-client-1.0.jar • gdata-client-meta-1.0.jar • gdata-core-1.0.jar รปท 9.10 การเพมไฟล*ของ Library ทชอ Gdata 1. ก5าหนด Sources เป2น [$gdata-director$]gdatajavasrc การพฒนาโปรแกรมเรยกใช Twitter Web Services และ Google Calendar API Thanachart Numnonda / Thanisa Kruawaisayawan