๋Java Web Programming on Cloud Computing using Google App EngineIMC Institute
เอกสารประกอบการอบรมหลักสูตร Mini Master of Java Technology ปี 2011 เรื่อง Java Web Programming on Cloud Computing using Google App Engine โดยใช้ Eclipse เป็น Tool
๋Java Web Programming on Cloud Computing using Google App EngineIMC Institute
เอกสารประกอบการอบรมหลักสูตร Mini Master of Java Technology ปี 2011 เรื่อง Java Web Programming on Cloud Computing using Google App Engine โดยใช้ Eclipse เป็น Tool
The document summarizes the rise of the app economy in Thailand and opportunities for Thai software developers. Key points:
- Thailand is entering the era of the app economy, dominated by mobile devices, cloud computing, and social networking. This represents a shift from the PC era.
- The app economy provides opportunities for developers through jobs creating apps and maintaining app ecosystems and platforms. However, consumer apps face competition while enterprise apps have strict requirements.
- For Thai developers, opportunities exist in both consumer and enterprise mobile apps, as well as localization of apps. Success requires understanding business needs and processes. Monetization is also a challenge due to app discovery issues.
- Trends driving the app economy include the
Software Park Thailand aims to promote cloud computing adoption in Thailand and establish the country as a cloud outsourcing center. It will focus on encouraging software developers to create software-as-a-service and end users like SMEs to utilize cloud services. Several companies discuss their cloud computing services and partnerships to support these goals. Rapid growth is expected in cloud computing in Thailand in the coming years.
This document provides an overview of Thailand's IT market and contact information for 16 Thai exhibitor companies. It includes sections on Thailand's IT market trends, the Department of International Trade Promotion which organized the event, Software Park Thailand, mobile technology in Thailand, and lists the Thai exhibitor companies with contact information.
Software Park Newsletter 2/2554 "แท็บเล็ต สมาร์ทโพน โมบายแอพพลิเคชั่น ดาวเด่น...Software Park Thailand
1) Thailand's GDP in the first quarter of 2022 grew by 2.2% compared to the same period last year, totaling over 591,000 million baht. Private consumption rose by 20.4%, contributing over 112,000 million baht to GDP.
2) Exports of goods increased by 33,000 million baht or 2.5% compared to the same period last year, totaling over 445,000 million baht and accounting for 75% of GDP.
3) The top 3 industries that drove the economy in Q1 were manufacturing (17.6% of GDP), wholesale and retail trade (17%), and agricultural and agricultural product processing (10.1%).
The document discusses opportunities for Thai software developers in the mobile application market. It notes that developers should think globally and develop applications that can serve international markets given the borderless nature of software. It highlights several Thai companies that have successfully expanded into mobile services and applications. The rapidly growing markets for smartphones and tablets are opening up opportunities for developers to create business-driven mobile apps rather than standalone products.
The document discusses a Thai IT trade delegation visiting Tokyo, Japan from November 11-16, 2012. It includes an agenda item where Dr. Thanachart Numnonda, the director of Software Park Thailand, will speak on November 15. The rest of the document appears to be presentations and materials from various Thai IT companies promoting their products and services to potential Japanese partners and clients.
The document summarizes key details about a delegation of 16 Thai new media companies visiting Tokyo, Japan from November 12-16, 2012. It introduces the organizing bodies, Software Park Thailand and the Office of Small and Medium Enterprise Promotion (OSMEP), and their roles in supporting the Thai software industry and small businesses. The objectives of the delegation are to explore the Japanese market and find potential partners through business meetings and networking. Background on Thailand's growing internet usage and online economy is also provided.
The document summarizes a Thai IT trade delegation trip to Tokyo, Japan from November 11-16, 2012. It was led by the Office of Small and Medium Enterprises Promotion (OSMEP) and Software Park Thailand, and funded by OSMEP. The delegation included 16 software companies. The mission provided information on Thailand's IT industry and markets as well as Software Park Thailand, which provides office space, training and incubation for software startups.
Thai IT Business Development Delegation to Tokyo, Japan: November 2012 Software Park Thailand
Ms. Pimnara Sukkasem
Tel : +66 2 901 1111
Mobile : +66 81 893 7777
Website : www.dotcomdigital.co.th
Looking for: Business Partner, Distributor
Business Nature Product or Services:
Dotcom Digital is a full-service digital agency that specializes in online marketing, web design and
development, mobile application development, and social media marketing. We have been helping Thai
and international clients achieve their business goals through innovative digital solutions for over 10 years.
Our core services include:
- Online Marketing (Search Engine Optimization, Pay-Per-Click Advertising, Affiliate Marketing, Email
Thai IT Business Development Delegation to Tokyo, Japan: November 2012 Software Park Thailand
Ad
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
[email protected]
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
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
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
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
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
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
89. 89
รปท 12.7 แสดง BPEL Process ของทงระบบ
6. ท5าการ Clean และ Build โปรเจ4ค
12.5 การพฒนาโปรเจ-ค Composite Application
ขนตอนนเป2นการสราง Composite Application เพอทรน FileBPEL บน BPEL Engine ทใช
มาตรฐาน JBI โดยมขนตอนดงน
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น SOA และ Projects เป2น Composite
Application แลวกด Next
3. ก5าหนด Project Name เป2น FileCompositeApp แลวกด Finish
4. ในหนาต:าง Project เลอกโหนด FileCompositeApp แลวคล=กขวาเลอก Add JBI Module..
5. ใหเลอกโปรเจ4ค FileBPEL แลวกดป+@ม Add Project JAR Files
6. โปรแรม NetBeans จะเพมโหนด FileBPEL.jar ภายใต FileCompositeApp > JBI Module
7. คล=กขวาท FileCompositeApp เลอก Clean and Build
8. คล=กท Service Assembly จะเห4นผลลพธ,ดงแสดงในร"ปท 12.8
BPEL for Writing to File Thanachart Numnonda / Thanisa Kruawaisayawan
90. 90
รปท 12.8 แสดง Service Assembly ของ FileCompositeApp
12.6 การทดสอบโปรแกรมผ)าน TestCase
1. ท5าการ Deploy โปรเจ4ค FileCompositeApp
2. ในหนาต:าง Project เลอกโหนด FileCompositeApp > Test แลวคล=กขวาเลอก New Test Case
3. ในไดอะล4อก New Test Case ใหก5าหนด Test Case Name: เป2น TestCase1 แลวกด Next
4. หนาถดไปใน FileBPEL ใหเลอกไฟล, WSDL เป2น DataIO.wsdl แลวกด Next
5. ในหนาถดไปใหเลอก DataIOOperation แลวกด Finish
6. หนาต:าง Editor จะแสดงไฟล, Input.xml ใหแก source code ดงน
<id>1234</id>
<firstName>Somjai</firstName>
<lastName>Jaidee</lastName>
<salary>38000</salary>
7. กดป+@ม Save เลอกโหนด TestCase1 แลวคล=กขวาเลอก Run
8. จะเห4นผลลพธ,ปรากฎในไฟล, Output.xml ดงแสดงในร"ปท 12.9
รปท 12.9 แสดงผลลพธ*ทไดจากการรน TestCase1
9. และจะไดไฟล, result.txt ในไดเร4กทอร c:SOA_output ซ/งมขอม"ลดงน
Somjai Jaidee => 38000
12.7 การพฒนาโปรแกรมผ)าน Web Application
BPEL for Writing to File Thanachart Numnonda / Thanisa Kruawaisayawan
91. 91
ท5าการคนหาต5าแหน:ง url ของ soap:address ตามขนตอนดงน
1. คล=กท Service Assembly ใน FileCompositeApp และคล=กขวาท DataIOPort เลอก Clone WSDL
to edit… จากนนใหคล=กขวาท DataIOPort อกครงแลวเลอก Properties
2. ในหนาต:าง Properties ใหท5าการ copy ค:าของ Location ใน soap:address
3. ทดสอบโดยเปAด Web Browser แลว paste ค:าท copy ไว จากนนใหท5าการเปลยนค:าของ URL ใหเป2น
ดงน http://localhost:9080/DataIOService/DataIOPort?WSDL
พฒนาโปรแกรม Web Application เพอใหผ"ใชปBอนค:าขอม"ลต:างๆ จากนนโปรแกรมจะท5าการเขยน
ขอม"ลลงไฟล, โดยมขนตอนการพฒนาดงน
6. เลอกเมน" File > New Project
7. ในไดอะล4อก New Project ใหเลอก Categories เป2น Web และ Web Application แลวกด Next
8. ก5าหนด Project Name เป2น FileBPUI แลวเลอก Project Location เป2น folder ทเราตองการจะเก4บ
ไฟล,ไว
9. จากนนเลอก Server เป2น GlassFish V2.1 ก5าหนด Jave EE Version: เป2น Java EE 5 แลวกด Next
10. ในช:อง Frameworks ใหเลอก Visual Web JavaServer Faces จากนนกด Finish
11. คล=กขวาทโหนด FileBPUI จากนนเลอกค5าสง New > Other… ใหเลอก Categories เป2น Web
Services และ Web Service Client แลวกด Next
12. ในไดอะล4อก New Web Service Client ใหเลอก WSDL URL: แลวใส: URL เป2น
http://localhost:9080/DataIOService/DataIOPort?WSDL แลวกด Finish
13. เลอกไปท Page1.jsp ท5าการออกแบบ Page Layout ดงแสดงในร"ปท 12.10
BPEL for Writing to File Thanachart Numnonda / Thanisa Kruawaisayawan
92. 92
รปท 12.10 แสดงการออกแบบหนา Page1.jsp
14. ก5าหนดค:าค+ณสมบตของออปเจ4คต:างๆ ใน Page Layout น ดงในตารางท 12.1
ตารางท 12.1 แสดงการก5าหนดค:า properties ใหกบออปเจHคต:างๆ
Object Type id text
Label lbID ID:
Text Field inputID
Label lbFirstName FirstName:
Text Field inputFirstName
Label lbLastName LastName:
Text Field inputLastName
Label lbSalary Salary:
Text Field inputSalary
Button BtnSubmit Submit
Static Text resultText
15. กดป+@ม Save
16. ท5าการคล=กขวาท inputID แลวเลอก Add Binding Attribute ดงแสดงในร"ปท 12.11
BPEL for Writing to File Thanachart Numnonda / Thanisa Kruawaisayawan
93. 93
รปท 12.11 แสดงการ Add Binding Attribute
17. ท5าการ Add Binding Attribute ท inputFirstName, inputLastName, inputSalary และ
resultText
18. ดบเบลคล=กทป+@ม Submit หนาต:าง Editor จะแสดงแทบ Java และแสดง source code ท5าการคล=กขวาใน
เมธอด btnSubmit_action แลวเลอก Insert Code... > Call Web Service Operation เลอกไปท
DataIOOperation ใหแกไข source code ดงน
public String btnSubmit_action() {
try { // Call Web Service Operation
org.netbeans.j2ee.wsdl.filebpel.dataio.DataIOPortType port =
service.getDataIOPort();
java.lang.String id = (String) inputID.getText();
java.lang.String firstName = (String) inputFirstName.getText();
java.lang.String lastName = (String) inputLastName.getText();
String tmp = (String) inputSalary.getText();
int salary = Integer.parseInt(tmp);
// TODO process result here
java.lang.String result = port.dataIOOperation(id, firstName,
lastName, salary);
resultText.setText("Result = " + result);
} catch (Exception ex) {
resultText.setText(ex);
}
return null;
}
19. Clean and Build และ Run โปรเจ4ค หลงจากใส:ขอม"ล จะไดผลลพธ,ดงแสดงในร"ปท 12.12
BPEL for Writing to File Thanachart Numnonda / Thanisa Kruawaisayawan
94. 94
รปท 12.12 แสดงผลลพธ*หนา Page1.jsp
20. และไฟล, result.txt ในไดเร4กทอร c:SOA_output จะมขอม"ลดงน
Somjai Jaidee => 38000
Nipa Jinjai => 738000
BPEL for Writing to File Thanachart Numnonda / Thanisa Kruawaisayawan
95. 95
Exercise 13 BPEL for Writing to Database
แบบฝ1กหดนเป2นการสราง Business Process เพอเขยนขอม"ลลงในฐานขอม"ล โดยใชโปรแกรม
Business Process ทพฒนาโดยใช GlassFish Open ESB ผ:าน Database Binding Component
ขนตอนในการพฒนาโปรแกรม
1. สราง Table
2. พฒนาโปรเจ4ค DBBPEL
3. พฒนาไฟล, WSDL ส5าหรบ DatabaseBinding
4. พฒนาไฟล, WSDL ส5าหรบ SOAPBinding
5. พฒนา BPEL Process
6. พฒนาโปรเจ4ค Composite Application
7. ทดสอบโปรแกรมผ:าน TestCase
13.1 สราง Table
ขนตอนนเป2นการสราง table ในฐานขอม"ลเพอใชเก4บขอม"ลพนกงานของบรษท
1. ใชโปรแกรม NetBeans หรอ MySQL Query Browser เพอสราง Table ทชอ Employee ในฐาน
ขอม"ล MySQL ทชอ test โดยก5าหนดใหม column ต:างๆ ดงน
id VARCHAR(10) Primary Key
firstName VARCHAR(30)
lastName VARCHAR(30)
salary DOUBLE
หรอรนไฟล, employee.sql
DROP TABLE IF EXISTS test.employee;
CREATE TABLE test.employee (
id varchar(10) NOT NULL,
firstName varchar(30) NOT NULL,
lastName varchar(30) NOT NULL,
salary double NOT NULL,
PRIMARY KEY (id))
13.2 การพฒนาโปรเจ-ค DBBPEL
BPEL for Writing to Database Thanachart Numnonda / Thanisa Kruawaisayawan
96. 96
แบบฝ1กหดนจะท5าการสรางโปรเจ4คส5าหรบ Service Oriented Architecture ข/นมาใหม: โดยจะมขนตอน
การพฒนาดงน
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น SOA และ Projects เป2น BPEL Module แลว
กด Next
3. ก5าหนด Project Name เป2น DBBPEL แลวกด Finish
13.3 การพฒนาไฟล/ WSDL สาหรบ DatabaseBinding
ขนตอนถดไปเปนการก4าหนดไฟล` WSDL ทม Binding เปน Database ส4าหรบเขยนลงในฐานขอม(ล
โดยมขนตอนการพฒนาดงน
1. เลอกหนาต:าง Projects คล=กขวาทโหนด DBBPEL ใหเลอก New > WSDL Document ..
2. ในไดอะล4อก New WSDL Document ก5าหนด File Name: เป2น EmployeeDB ก5าหนด WSDL
Type: เป2น Concrete WSDL Document และก5าหนด Binding เป2น DATABASE และ Types
เป2น Table จากนนกด Next
3. ในหนาถดไป ก5าหนดค:า URL: เป2น jdbc:mysql://localhost:3306/test กด Next
4. เลอก Table: Employee จาก Available Tables: ไปยง Selected Tables: และกด Next จากนนใหใส:
jdbc/test ส5าหรบ JNDI Name แลวกด Finish
5. โปรแกรมจะสรางไฟล,ข/นมาสองไฟล,คอ EmployeeDB.wsdl ส5าหรบอธบาย service ต:างๆ ของ Table
และ employee.xsd ส5าหรบอธบาย XML Schema ของ Table
หมายเหต กรณทไม:มช:องใหใส: JNDI Name ใหท5าการเลอกแทป Source จากนนคนหาค5าว:า
jdbc/__defaultDS แลวแทนทดวย jdbc/test
เราสามารถตรวจสอบด"ค5าสงต:างๆ ในไฟล, EmployeeDB.wsdl อาทเช:น insert operation ของ table
ไดโดยเลอกไฟล,น หนาต:าง Editor จะแสดง Design View ของไฟล, ใหขยายแทป Bindings > binding >
insert > inputInsert ดงแสดงในร"ปท 13.1 แลวด"ท properties ของ jdbc:input จะเห4นค5าสง sql เป2น
insert into employee (firstName,id,salary,lastName) values (?,?,?,?)
BPEL for Writing to Database Thanachart Numnonda / Thanisa Kruawaisayawan
97. 97
รปท 13.1 แสดง Design View ของไฟล* Employee.wsdl
13.4 การพฒนาไฟล/ WSDL สาหรบ SOAPBinding
ขนตอนนเป2นการสรางไฟล, WSDL ส5าหรบ SOAPBinding ส5าหรบนยาม Business Process ทจะ
พฒนาข/น เพอใหสามารถเรยกใชเป2นเว4บเซอร,วสได โดยในทนจะก5าหนด inputData ใหเป2น XML ตาม
DataType ทนยามใน Employee.xsd และ result ใหเป2น String โดยมขนตอนการพฒนาดงน
1. เลอกหนาต:าง Projects คล=กขวาทโหนด DBBPEL ใหเลอก New > WSDL Document ..
2. ในไดอะล4อก New WSDL Document ก5าหนด File Name: เป2น DatabaseWSDL ก5าหนด WSDL
Type: เป2น Concrete WSDL Document และก5าหนด Binding เป2น SOAP และ Types เป2น RPC
Literal แลวกด Next
3. ในหนาถดไป ส5าหรบส:วนของ Input: ก5าหนด Message Part Name เป2น inputData แลวก5าหนด
Element Or Type เป2น employee ดงแสดงในร"ปท 13.2 และส5าหรบส:วนของ Output: ก5าหนด
Message Part Name เป2น result จากนนกด Next แลวกด Finish
BPEL for Writing to Database Thanachart Numnonda / Thanisa Kruawaisayawan
112. 112
รปท 14.10 แสดง Business Process ของทงระบบ
6. Clean and Build โปรเจ4ค
14.7 การพฒนาโปรเจ-ค Composite Application
ขนตอนนเป2นการสราง Composite Application เพอทรน JMSBPEL บน BPEL Engine ทใช
มาตรฐาน JBI โดยมขนตอนดงน
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น SOA และ Projects เป2น Composite
Application แลวกด Next
3. ก5าหนด Project Name เป2น JMSCompositeApp แลวกด Finish
4. ในหนาต:าง Project เลอกโหนด JMSCompositeApp แลวคล=กขวาเลอก Add JBI Module
5. ใหเลอกโปรเจ4ค JMSBPEL แลวกดป+@ม Add Project JAR Files
6. โปรแกรม NetBeans จะเพมโหนด JMSBPEL.jar ภายใต JMSCompositeApp > JBI Module
7. คล=กขวาท JMSCompositeApp เลอก Clean and Build
BPEL for Sending Message to a JMS Queue Thanachart Numnonda / Thanisa Kruawaisayawan
113. 113
8. คล=กท Service Assembly จะเห4นผลลพธ,ดงแสดงในร"ปท 14.11
รปท 14.11 แสดง CASA Editor ส#าหรบ JMSBPEL
14.8 การทดสอบโปรแกรมผ)าน TestCase
1. ท5าการ Deploy โปรเจ4ค JMSCompositeApp
2. ในหนาต:าง Project เลอกโหนด JMSCompositeApp > Test แลวคล=กขวาเลอก New Test Case
3. ในไดอะล4อก New Test Case ใหก5าหนด Test Case Name: เป2น TestCase1 แลวกด Next
4. หนาถดไปใน JMSBPEL ใหเลอกไฟล, WSDL เป2น JMSWSDL.wsdl แลวกด Next
5. ในหนาถดไปใหเลอก JMSWSDLOperation แลวกด Finish
6. หนาต:าง Editor จะแสดงไฟล, Input.xml ใหแก source code ดงน
<soapenv:Body>
<jms:JMSWSDLOperation>
<inData>This is a test message</inData>
</jms:JMSWSDLOperation>
</soapenv:Body>
7. กดป+@ม Save เลอกโหนด TestCase1 แลวคล=กขวาเลอก Run
8. เปAดโปรแกรม HermesJMS แลวคล=กท TestQueue จะไดผลลพธ,ดงตวอย:างในร"ปท 14.12
BPEL for Sending Message to a JMS Queue Thanachart Numnonda / Thanisa Kruawaisayawan
114. 114
รปท 14.12 แสดงตวอยางผลลพธ*ใน TestQueue
BPEL for Sending Message to a JMS Queue Thanachart Numnonda / Thanisa Kruawaisayawan
115. 115
Exercise 15 Simple BPEL Invoking Web Services
แบบฝ1กหดนเป2นการเขยน Business Process เพอเรยกใช Internal Web Service ทพฒนาข/นมาเอง
และ External Web Service ของทอนๆทมอย": โปรแกรม Web Service ทจะพฒนาข/นคอ TaxService ทมโอ
เปอร,เรชนทชอ calculateTax และ External Web Service คอเซอร,วสค5านวณอตราแลกเปลยนทอย":ท
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl
ขนตอนในการพฒนาโปรแกรม
1. พฒนา Web Services
2. พฒนาโปรเจ4ค WSBPEL
3. พฒนาไฟล, WSDL
4. พฒนา Business Process ส5าหรบเรยก Web Service
5. พฒนาโปรเจ4ค Composite Application
6. ทดสอบโปรแกรมผ:าน TestCase
7. ก5าหนด External WSDL Document
8. พฒนาไฟล, Client WSDL ใหม:
9. พฒนา Business Process ใหม:เพอเรยก External Web Service
10. พฒนาโปรแจ4ค Composite Application ส5าหรบเรยก Business Process ใหม: และท5าการทดสอบ
15.1 การพฒนา Web Services
ขนตอนการพฒนา Web Service นจะเป2นการพฒนา calculateTax Web Service เช:นเดยวกบในแบบ
ฝ1กหดท โดยม source code ดงน
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) {
return 0.1 * income;
}
}
Simple BPEL Invoking Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
116. 116
15.2 การพฒนาโปรเจ-ค WSBPEL
แบบฝ1กหดนจะท5าการสรางโปรเจ4คส5าหรบ Service Oriented Architecture ข/นมาใหม: โดยจะมขนตอน
การพฒนาดงน
1. เลอกเมน" File > New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น SOA และ Projects เป2น BPEL Module แลว
กด Next
3. ก5าหนด Project Name เป2น WSBPEL แลวกด Finish
15.3 การพฒนาไฟล/ WSDL
ขนตอนถดไปเป2นการสรางไฟล, WSDL ส5าหรบนยาม Business Process ทจะพฒนาข/น เพอใหสามารถ
เรยกใชเป2นเว4บเซอร,วสได โดยมขนตอนการพฒนาดงน
1. เลอกหนาต:าง Projects ขยายโหนด WSBPEL แลวคล=กขวาทโหนด Process Files จากนนเลอกค5าสง
New > WSDL Document
2. ในไดอะล4อก New WSDL Document ก5าหนด File Name: เป2น WebProcessWSDL ก5าหนด
WSDL Type: เป2น Concrete WSDL Document และก5าหนด Binding เป2น SOAP และ Types
เป2น RPC Literal แลวกด Next
3. ในหนาถดไป ส5าหรบส:วนของ Input: ก5าหนด Message Part Name เป2น inputData (เมอใส:ค:าเสร4จ
แลว ตองกดป+@ม Enter ดวยเสมอ มฉะนนค:าจะกลบไปเป2น part1 เหมอนเดม) และส5าหรบส:วน
ของ Output: ก5าหนด Message Part Name เป2น outputData กด Next แลวกด Finish
15.4 การพฒนา Business Process
ขนตอนนเป2นการสรางไฟล, BPEL ส5าหรบนยาม Business Process ทจะใชในโปรเจ4ค โดยมขนตอน
การพฒนาดงน
15.4.1 การเพม partner link
ขนตอนนจะท5าการก5าหนด partner link ส5าหรบ Web Services สองช+ดคอ TaxServicesService และ
WebProcessWSDL โดยมขนตอนดงน
1. ดบเบลคล=กทไฟล, WSBPEL.bpel เลอกแทป Design แลวลากไอคอน WebProcessWSDL.wsdl ใน
Simple BPEL Invoking Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
125. 125
รปท 15.10 WSDL ทถกตอง
15.8 การพฒนาไฟล/ Client WSDL ใหม)
ขนตอนถดไปเป2นการสรางไฟล, WSDL ส5าหรบนยาม Business Process ทจะพฒนาข/น มาใหม:เพอให
สามารถเรยกใชเป2นเว4บเซอร,วสได โดยในกรณจะก5าหนดใหม input parameter สองตวคอ fromCurrency และ
toCurrency โดยม output parameter คอ result โดยมขนตอนการพฒนาดงน
1. เลอกหนาต:าง Projects ขยายโหนด WSBPEL แลวคล=กขวาทโหนด Process Files จากนนเลอกค5าสง
New > WSDL Document
2. ในไดอะล4อก New WSDL Document ก5าหนด File Name: เป2น ExternalWSProcessWSDL
ก5าหนด WSDL Type: เป2น Concrete WSDL Document และก5าหนด Binding เป2น SOAP และ
Types เป2น RPC Literal แลวกด Next
3. ในหนาถดไป ส5าหรบส:วนของ Input: ก5าหนด Message Part Name เป2น fromCurrency ใหเป2น
ชนด xsd:String และ toCurrency ใหเป2นชนด xsd:String และส5าหรบส:วนของ Output: ก5าหนด
Message Part Name เป2น result ใหเป2นชนด xsd:String ดงร"ปท 15.11 กด Next แลวกด Finish
Simple BPEL Invoking Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
126. 126
รปท 15.11 การก#าหนดคา WSDL Document
15.9 การพฒนา Business Process ใหม)เพอเรยก External Web Service
ขนตอนนเป2นการสรางไฟล, BPEL ส5าหรบนยาม Business Process ใหม:ทจะใชในการเรยก External
Web Service โดยมขนตอนการพฒนาดงน
15.9.1 การสราง BPEL Process
1. คล=กขวาทโหนด WSBPEL จากนนเลอกค5าสง New > BPEL Process..
2. ในไดอะล4อก New BPEL Process ก5าหนด Project Name เป2น ExternalWSBPEL แลวกด Finish
15.9.2 การเพม partner link
ขนตอนนจะท5าการก5าหนด partner link ส5าหรบ Web Services สองช+ดคอ CurrencyConvertor และ
WebProcessWSDL โดยมขนตอนดงน
Simple BPEL Invoking Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
133. 133
Exercise 16 Advance BPEL Invoking Web Services
แบบฝ1กหดนเป2นการเขยน Business Process ทเรยกใช Web Service ทพฒนาข/นมาโดยใชค5าสง
Invoke แบบฝ1กหดนจะพฒนา Web Services ข/นมสองช+ดคอ DetermineRoomRate และ
CalculateBookingPayment โปรแกรม Business Process ทจะพฒนาข/นจะอ:านขอม"ลการจองทพกมา แลว
เรยกใชเว4บเซอร,วส DetermineRoomRate เพอหาอตราค:าทพก จากนนจะเรยกใชเว4บเซอร,วส
CalculateBookingPayment เพอค5านวณค:าทพกทงหมด จากนนจะเก4บขอม"ลการจองทพกลงฐานขอม"ล ซ/ง
Business Process ใหม:นสามารถประกาศเป2น Web Service โดยใช WSDL และเราจะท5าการพฒนาโปรแกรม
Web Application เพอเรยกใช Business Process นผ:าน WSDL ดงกล:าว
ขนตอนในการพฒนาโปรแกรม
1. พฒนา Determine Room Rate Web Services
2. พฒนา Calculate Booking Payment Web Services
3. พฒนาโปรเจ4ค RoomBooking
4. พฒนา XML Schema
5. พฒนาไฟล, WSDL
6. Import ไฟล, WSDL และ XML Schema
7. พฒนา Business Process
8. พฒนาโปรเจ4ค Composite Application
9. ทดสอบโปรแกรมผ:าน TestCase
10. เพม Business Process ส5าหรบเก4บขอม"ลลงฐานขอม"ล
11. พฒนาโปรแกรม Web Application เพอเรยกใช Business Process
16.1 การพฒนา Determine Room Rate Web Services
ขนตอนนจะเป2นการพฒนา Web Service ทพฒนาจาก EJB Module ทม Business Logic ในการแจง
ราคาทพกต:อคน ทงนจะก5าหนดให Web Service นมชอเมธอดและ argument ดงน
double getRate(String roomType)
16.1.1 การสราง EJB Project
Advance BPEL Invoking Web Services Thanachart Numnonda / Thanisa Kruawaisayawan
134. 134
เราจะก5าหนดโปรเจ4คใหเป2น EJB Project ทงนเนองจากแบบฝ1กหดนจะพฒนา Web Services จาก
Session Bean ซ/งมขนตอนการสรางโปรเจ4คดงน
1. เลอกเมน" File => New Project
2. ในไดอะล4อก New Project ใหเลอก Categories เป2น Java EE และเลอก Project เป2น EJBModule
แลวกด Next
3. ก5าหนด Project Name เป2น DetermineRoomRate แลวเลอก Project Location เป2น folder ทเรา
ตองการจะเก4บ project ไว กด Next
4. จากนนเลอก Server เป2น GlassFish V2.1 โดยก5าหนด Jave EE Version: เป2น Java EE 5 แลวกด
Finish
16.1.2 การพฒนา Web Service
หลกการพฒนา Web Services ทดนน ควรจะนยาม interface ก:อนทจะพฒนาโปรแกรม
implementation กล:าวคอตองก5าหนด XML Schema Definition (XSD) ก:อน แลวนยามไฟล, WSDL ก:อนท
จะพฒนาโปรแกรมในการ implement นยาม WSDL ดงกล:าว แต:ในโปรเจ4คนเราจะใชวธอย:างง:ายในการสราง
Web Service โดยการพฒนาโปรแกรม implementation ข/นมาก:อน แลวใชโปรแกรม NetBeans สราง
Interface (WSDL และ XSD) ทหลง
ขนตอนการสราง Web Service มดงน
1. เลอกหนาต:าง Projects แลวคล=กขวาทโหนด DetermineRoomRate จากนนเลอกค5าสง New >
Other...
2. ในไดอะล4อก New File ใหเลอก Categories ทชอ Web Services เลอก File Types: เป2น Web
Service แลวกด Next
3. ก5าหนดค:า Web Service Name เป2น DetermineRateService และค:า Package เป2น ws ส:วนค:าอนๆ
เป2นดงทตงไว ดงร"ปท 16.1 แลวกด Finish
Advance BPEL Invoking Web Services Thanachart Numnonda / Thanisa Kruawaisayawan