Professional Documents
Culture Documents
Java Web Services & SOA Using GlassFishESB and Netbeans 6.5 (In Thai)
Java Web Services & SOA Using GlassFishESB and Netbeans 6.5 (In Thai)
Hand-on
Exercises
Dr.Thanachart Numnonda
and
Asst Prof.Thanisa Kruawaisayawan
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
2
Exercises
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
3
การทดลองท 1
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
4
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
5
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
6
การทดลองท 2
1. คล2[กขวาทโหนด ExternalWSDemo จากนนเลอกค4าสง New > Web Service Client แลวกด Next
2. ในไดอะลMอก New Web Service Client ใหเลอก WSDL URL: แลวใส) URL เปน
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl
3. คล2[กขวาท ExternalWSDemo แลวเลอก Servlet จากนนใหก4าหนดชอเปน CurrencyServlet และ
Package: เปน servlets แลวกด Finish
4. คล2[กขวาภายในเมธอด processRequest ในไฟลW CurrencyServlet.java แลวเลอก Web Service
Client Resources > Call Web Service Operation เลอก ConversionRate แลวกด OK
5. แกไขไฟลW CurrencyServlet.java ดงน
การทดลองท 3
1. คล2[กขวาทโหนด ExternalWSDemo จากนนเลอกค4าสง New > Web Service Client แลวกด Next
2. ในไดอะลMอก New Web Service Client ใหเลอก WSDL URL: แลวใส) URL เปน
http://www.webservicex.com/stockquote.asmx?WSDL
3. คล2[กขวาท ExternalWSDemo แลวเลอก Servlet จากนนใหก4าหนดชอเปน StockServlet และ
Package: เปน servlets แลวกด Finish
4. คล2[กขวาภายในเมธอด processRequest ในไฟลW StockServlet.java แลวเลอก Web Service Client
Resources > Call Web Service Operation เลอก GetQuote แลวกด OK
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
7
6. Run ไฟลW
7. ทดสอบโปรแกรมโดยใส) ?symbol=java ต)อทาย URL ดงน
http://localhost:8080/ExternalWSDemo/StockServlet?symbol=java ไดผลลพธWดงแสดงในร(ปท 6
ร5ปท 6 แสดงผลลพธWทไดจากการเรยกใช Web Service Operation: GetQuote เมอปsอน symbol เปน java
ร5ปท 7 แสดงผลลพธWทไดจากการเรยกใช Web Service Operation: GetQuote เมอปsอน symbol เปน goog
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
8
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
9
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
1
การพฒนา Web Services จะแบ)งเปนสองส)วนคอ Web Service Provider (Server) และ Web
Service Requester (Client) แบบฝกหดนจะเร2มจากการพฒนา Web Service ซ-งสามารถท4าได 2 ว2ธคอ
1. Web Services ทรนบน Web Server โดยใช Java Servlet
2. Web Services ทรนบน Application Server โดยใช Session Bean
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
2
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;
}
}
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
3
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
4
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
5
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
6
ขนตอนในการพฒนาโปรแกรม
1. การต-ดตงโมด&ล RESTful Web Services
2. สราง Web Application Project
3. พฒนา Entity Class
4. พฒนา RESTful Web Service จาก Entity Class
5. ทดสอบ RESTful Web Service
6. พฒนา RESTful Web Service Client Stubs
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
7
3. กาหนด Project Name เปน RestfulWS แลวเล"อก Project Location เปน Director ทเราตองการจะ
เก5บไฟล0ไว กด Next
4. จากนนเล"อก Server เปน GlassFishV2 แลวกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
8
5. กดป)*ม Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
9
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
1
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
2
www.google.com/calendar และเมอท4าการลMอกอ2นเขาไปแลวจะไดตวอย)างเวMบดงร(ป
• กรณทผ(ใชม account อย()ใน Facebook เราสามารถทจะให status update ของ Twitter ถ(กส)งผ)าน
มายงเวMบไซตW Facebook ของเราไดโดยอตโนมต2โดยการเลอก Facebook Application ชอ
http://apps.facebook.com/twitter/ ดงตวอย)างในร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
3
โปรแกรมทจะพฒนาข2นยตองการจะใหมหนาจอส+วนต-ดต+อผ&ใชดงร&ป โดยผ&ใชสามารถป;อนขอความใน
TextField และเม"อกดป6ม Twitter Notification โปรแกรมจะส+งขอความไปยง Twitter โดยมขนตอนการ
พฒนาโปรแกรมดงน
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
4
try {
String status = (String) answerTf.getValue();
String inReplyToStatusId = null;
String format = "xml";
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
5
เราสามารถทดสอบรนโปรแกรมนแลวทดลองปsอนขอความดงร(ป จากนนเราสามารถทจะเรยกด(ผลขอ
การส)งขอความไปยง Twitter ไดจากเวMบ Twitter หรอกรณทเราเชอมโยง Twitter ไปยง Facebook เราจะ
สามารถเหMนการอปเดตเวMบ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
6
เปนการแสดง Web Page เพ"อใหผ&ใชป;อนขอม&ล account ของทง Google Calendar และ Twitter ดง
ร&ป โดยม source code ดงน
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="CalendarServlet" method="POST">
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
7
2. CalendarServlet.java
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
8
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
9
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
10
return resultFeed;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
setAuthenticationForTwitter(twitterUser, twitterPwd);
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet CalendarServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1> Today Events are </h1>");
out.println(" <form action='TwitterUpdate'>");
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
CalendarEventEntry entry = resultFeed.getEntries().get(i);
}
out.println("<p> <input type='submit' value='Twitter Notification' />");
out.println("<input type='reset' value='Reset' />");
out.println("</form>");
out.println("</body>");
out.println("</html>");
out.close();
}
3. TwitterUpdate.java
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
11
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet TwitterUpdate</title>");
out.println("</head>");
out.println("<body>");
String[] events = request.getParameterValues("eventName");
for (int i = 0; i < events.length; i++) {
String status = "Today Event: " + events[i] + " [Auto message from my own Java Application]";
String inReplyToStatusId = null;
String format = "xml";
try {
}
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
12
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
1
การสรMางฐานขMอม5ลโรงพยาบาล
ขนตอนแรกจะเปนการสราง table และเตรยมขอม(ลเพอใชในแบบฝกหด โดยใชโปรแกรม NetBeans
หรอ MySQL Query Browser เพอสราง Table ทชอ bkk_hospital ในฐานขอม(ล MySQL ทชอ test โดย
ก4าหนดใหม column ต)างๆ ดงน
หรอรนไฟลW bkk_hospital.sql
CREATE TABLE `test`.`bkk_hospital` (
`hospital_id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(60) NOT NULL,
`address` VARCHAR(100) NOT NULL,
`city` VARCHAR(30) NOT NULL,
`zipcode` VARCHAR(5) NOT NULL,
PRIMARY KEY(`hospital_id`)
)
ENGINE = InnoDB;
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
2
แบบฝกหดนจะสราง Project ทเปน Enterprise Application โดยม Entity Class ทช"อ BkkHospital
เพ"อทา ORM (Obeject Relational Mapping) กบ table ทช"อ bkk_hospital และมโปนแกรม Java Servlet
ในการแสดงรายช"อโรงพยาบาลทอย&+ในฐานขอม&ลใหผ&ใชเล"อกแลวเรยกใชโปรแกรม Java Servlet อกโปรแกรม
ในการแสดงตาแหน+งของโรงพยาบาลจาก Google Map โดยมขนตอนการสรางโปรเจ5คดงน
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
3
การพฒนาโปรแกรม HospitalSelector.java
import entity.BkkHospital;
import entity.BkkHospitalFacadeLocal;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
4
}
....
}
การพฒนาโปรแกรม DisplayLocation.java
try {
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
5
}
out.println("</body>");
out.println("</html>");
out.close();
}
การทดสอบโปรแกรม
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
6
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
7
ขนตอนในการพฒนาโปรแกรม
1. พฒนาโปรเจMค HelloBPEL
2. พฒนา XML Schema
3. พฒนาไฟลW WSDL
4. พฒนา BPEL Process
5. พฒนาโปรเจMค Composite Application
การพ#ฒนาโปรเจ`ค HelloBPEL
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
8
1) สรางไฟลW SampleData.xsd
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
9
4. กดป6zม Save
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
10
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/SampleData"
xmlns:tns="http://xml.netbeans.org/schema/SampleData"
elementFormDefault="qualified">
<xsd:complexType name="simpleProcess">
<xsd:sequence>
<xsd:element name="paramA" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="typeA" type="tns:simpleProcess"/>
</xsd:schema>
การพ#ฒนาไฟลe WSDL
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
11
3. กด Next ในหนาถดไป ส4าหรบส)วนของ Input: ก4าหนด Message Part Name เปน inputType และ
เลอกป6zม (...) ในส)วน Element Or Type แลวเลอก HelloBPEL > src/SampleData.xsd > Elements
> typeA จากรายการ ดงร(ป
4. ส4าหรบส)วนของ Output: ก4าหนด Message Part Name เปน resultType และเลอกป6zม (...) ในส)วน
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
12
Element Or Type แลวเลอก HelloBPEL > src/SampleData.xsd > Elements > typeA จากรายการ
และจะไดไดอะลMอกดงร(ป
5. กด Next ในหนาถดไป ส4าหรบค)า Binding Subtype เลอกป6zม Document Literal แลวกด Finish จะ
ไดไฟลW HelloSample.wsdl ดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
13
1) สรางไฟลW HelloProcess.bpel
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
14
3) การเพ2มธ6รกรรม Receive
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
15
3) การเพ2มธ6รกรรม Reply
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
16
4. ในช)อง Output Variable: กดป6มz Create.. เมอไดอะลMอก New Output Variable แสดงข-น
ใหก4าหนด Name: เปน outputVar แลวกด OK
4) การเพ2มธ6รกรรม Assign
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
17
4. กดป6ม Save
การทดสอบโปรแกรม
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
18
2. ในหนาต+าง Project เล"อกโหนด HelloApplication > Test แลวคล-:กขวาเล"อก New Test Case
3. ในไดอะล5อก New Test Case ใหกาหนด Test Case Name: เปน TestCase1 แลวกด Next
4. ในหนาถดไปใหเล"อกไฟล0 WSDL เปน HelloSample.wsdl แลวกด Next
5. ในหนาถดไปใหเล"อก HelloSampleOperation แลวกด Finish
6. หนาต+าง Editor จะแสดงไฟล0 Input.xml ใหแก source code ส+วน paramA ดงน
<sam:paramA>Hello Thana</sam:paramA>
7. เล"อกโหนด TestCase1 แลวคล-:กขวาเล"อก Run
8. จะเห5นผลลพธ0ปรากฎในไฟล0 Output.xml ดง Listing ท 2[หมายเหตการรนครงแรกจะไม+มผลเปรยบ
เทยบจ2งแสดงผลเปน fail แต+ครงต+อๆมาจะมผลเปรยบเทยบจ2งระบว+า pass ดงร&ป]
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
19
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns0="http://xml.netbeans.org/schema/SampleData" xmlns="http://xml.netbeans.org/schema/
SampleData">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<typeA xmlns="http://xml.netbeans.org/schema/SampleData">
<ns0:paramA xmlns:ns0="http://xml.netbeans.org/schema/SampleData">Hello
Thana</ns0:paramA>
</typeA>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
20
ขนตอนในการพฒนาโปรแกรม
12. พฒนาโปรเจMค FileBPEL
13. พฒนาไฟลW WSDL ส4าหรบ SOAPBinding
14. พฒนาไฟลW WSDL ส4าหรบ FileBinding
15. พฒนา BPEL Process
16. พฒนาโปรเจMค Composite Application
17. ทดสอบโปรแกรมผ)าน TestCase
18. ทดสอบโปรแกรมผ)าน Web Application
1. การพ#ฒนาโปรเจ`ค FileBPEL
แบบฝกหดนจะท4าการสรางโปรเจMคส4าหรบ Service Oriented Architecture ข-นมาใหม) โดยจะมขนตอน
การพฒนาดงน
6. เลอกเมน( File > New Project
7. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Projects เปน BPEL Module แลว
กด Next
8. ก4าหนด Project Name เปน FileBPEL แลวกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
21
5. ในหนาถดไป ส4าหรบส)วนของ Input: ก4าหนด Message Part Name เปน id กด Add แลวเพ2ม input
ส4าหรบ firstName, lastName, salary (int) และส4าหรบส)วนของ Output: ก4าหนด Message Part
Name เปน result ดงแสดงในร(ปท 2 จากนนกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
22
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
23
3. ในหนาถดไป ก4าหนดค)า File Name: เปน result.txt ส4าหรบ Path: ให กด Browse… เพอเลอก
Path: ไปท C:\SOA\_output (กรณทยงไม)ม folder จะตองท4าการสรางข-นมา) และเลอก File Exists:
เปน Append to Existing File ดงแสดงในร(ปท 4 จากนนกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
24
ร5ปท 4 แสดงการก4าหนดค)าส4าหรบการเขยนไฟลW
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
25
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
26
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
27
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
28
2. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Projects เปน Composite
Application แลวกด Next
3. ก4าหนด Project Name เปน FileCompositeApp แลวกด Finish
4. ในหนาต)าง Project เลอกโหนด FileCompositeApp แลวคล2[กขวาเลอก Add JBI Module..
5. ใหเลอกโปรเจMค FileBPEL แลวกดป6zม Add Project JAR Files
6. โปรแรม NetBeans จะเพ2มโหนด FileBPEL.jar ภายใต FileCompositeApp > JBI Module
7. คล2[กขวาท FileCompositeApp เลอก Clean and Build
8. คล2[กท Service Assembly จะเหMนผลลพธWดงแสดงในร(ปท 8
5. การทดสอบโปรแกรมผlาน TestCase
9. ท4าการ Deploy โปรเจMค FileCompositeApp
10. ในหนาต)าง Project เลอกโหนด FileCompositeApp > Test แลวคล2[กขวาเลอก New Test Case
11. ในไดอะลMอก New Test Case ใหก4าหนด Test Case Name: เปน TestCase1 แลวกด Next
12. หนาถดไปใน FileBPEL ใหเลอกไฟลW WSDL เปน DataIO.wsdl แลวกด Next
13. ในหนาถดไปใหเลอก DataIOOperation แลวกด Finish
14. หนาต)าง Editor จะแสดงไฟลW Input.xml ใหแก source code ดงน
<id>1234</id>
<firstName>Somjai</firstName>
<lastName>Jaidee</lastName>
<salary>38000</salary>
15. กดป6zม Save เลอกโหนด TestCase1 แลวคล2[กขวาเลอก Run
16. จะเหMนผลลพธWปรากฎในไฟลW Output.xml ดงแสดงในร(ปท 9
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
29
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
30
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
31
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
32
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
33
ขนตอนในการพฒนาโปรแกรม
1. สราง Table, Connection Pool และ JDBC Resources
2. พฒนาโปรเจMค DBBPEL
3. พฒนาไฟลW WSDL ส4าหรบ DatabaseBinding
4. พฒนาไฟลW WSDL ส4าหรบ SOAPBinding
5. พฒนา BPEL Process
6. พฒนาโปรเจMค Composite Application
7. ทดสอบโปรแกรมผ)าน TestCase
8. ทดสอบโปรแกรมผ)าน Web Application
1. ใชโปรแกรม NetBeans หรอ MySQL Query Browser เพอสราง Table ทชอ Employee ในฐาน
ขอม(ล MySQL ทชอ soa โดยก4าหนดใหม column ต)างๆ ดงน
id VARCHAR(10) Primary Key
firstName VARCHAR(30)
lastName VARCHAR(30)
salary DOUBLE
หรอรนไฟลW employee.sql
DROP TABLE IF EXISTS soa.employee;
CREATE TABLE soa.employee (
id varchar(10) NOT NULL,
firstName varchar(30) NOT NULL,
lastName varchar(30) NOT NULL,
salary double NOT NULL,
PRIMARY KEY (id) )
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
34
2. ในโปรแกรม NetBeans เลอกไปทแทบ Services คล2[กขวาท Servers > GlassFish V2 เลอก View
Admin Console
3. โปรแกรม Web Browser จะถ(กเป~ดข-นและแสดงหนาจอ Admin Console ใหปsอน User Name: เปน
admin และ Password: เปน adminadmin
4. ทางหนาต)างดานซายมอของ Admin Console ใหคล2[กท Resources > JDBC > Connection Pools
โปรแกรมจะแสดงรายชอ Connection Pool ทมอย() จากนนใหกด New และใส)ขอม(ลดงแสดงในร(ปท 1
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
35
8. คล2[กท Resources > JDBC > JDBC Resources จากนนใหกด New และใส)ขอม(ลดงแสดงในร(ปท 3
9. กด OK
10. ใช NetBeans เพอเชอมต)อกบ Database ไดโดยเลอกทแทบ Services จะเหMน MySQL Driver ทมมา
ใหแลว ซ-งถาขยายแทบ Databases > Drivers จะเหMน Driver ทชอ MySQL ใหท4าการคล2[กขวา แลว
เลอก Connect Using ดงแสดงในร(ปท 4
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
36
2. การพ#ฒนาโปรเจ`ค DBBPEL
แบบฝกหดนจะท4าการสรางโปรเจMคส4าหรบ Service Oriented Architecture ข-นมาใหม) โดยจะมขนตอน
การพฒนาดงน
1. เลอกเมน( File > New Project
2. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Projects เปน BPEL Module แลว
กด Next
3. ก4าหนด Project Name เปน DBBPEL แลวกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
37
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
38
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
39
designer
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
40
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
41
แสดงในร(ปท 10
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
42
7. การทดสอบโปรแกรมผlาน TestCase
1. ท4าการ Deploy โปรเจMค DBCompositeApp
2. ในหนาต)าง Project เลอกโหนด DBCompositeApp > Test แลวคล2[กขวาเลอก New Test Case
3. ในไดอะลMอก New Test Case ใหก4าหนด Test Case Name: เปน TestCase1 แลวกด Next
4. หนาถดไปใน DBBPEL ใหเลอกไฟลW WSDL เปน DatabaseWSDL.wsdl แลวกด Next
5. ในหนาถดไปใหเลอก DatabaseWSDLOperation แลวกด Finish
6. หนาต)าง Editor จะแสดงไฟลW Input.xml ใหแก source code ดงน
<tab:employee_Record>
<tab:id>1234</tab:id>
<tab:lastName>Jaidee</tab:lastName>
<tab:salary>38000</tab:salary>
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
43
<tab:firstName>Somjai</tab:firstName>
</tab:employee_Record>
7. กดป6zม Save เลอกโหนด TestCase1 แลวคล2[กขวาเลอก Run
8. จะเหMนผลลพธWปรากฎในไฟลW Output.xml ดงแสดงในร(ปท 13
9. และไดขอม(ลซ-งเขาไปอย()ในฐานขอม(ลดงแสดงในร(ปท 14
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
44
4. จากนนเลอก Server เปน GlassFish V2 ก4าหนด Jave EE Version: เปน Java EE 5 แลวกด Finish
5. ในช)อง Frameworks ใหเลอก Visual Web JavaServer Faces จากนนกด Finish
6. คล2[กขวาทโหนด DBBPUI จากนนเลอกค4าสง New > Other… ใหเลอก Categories เปน Web
Services และ Web Service Client แลวกด Next
7. ในไดอะลMอก New Web Service Client ใหเลอก WSDL URL: แลวใส) URL เปน
http://localhost:9080/DatabaseWSDLService/DatabaseWSDLPort?WSDL แลวกด Finish
8. เลอกไปท Page1.jsp ท4าการออกแบบ Page Layout ดงแสดงในร(ปท 15
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
45
Object id text
Type
Text Field inputFirstName
Label lbLastName LastName:
Text Field inputLastName
Label lbSalary Salary:
Text Field inputSalary
Button BtnSubmit Submit
Static Text resultText
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
46
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
47
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
48
ขนตอนในการพฒนาโปรแกรม
1. ต2ดตงโปรแกรม HermesJMS
2. ต2ดตงและครวจสอบ JMS Binding Components
3. พฒนาโปรเจMค JMSBPEL
4. พฒนาไฟลW WSDL ส4าหรบ JMSBinding
5. พฒนาไฟลW WSDL ส4าหรบ SOAPBinding
6. พฒนา BPEL Process
7. พฒนาโปรเจMค Composite Application
8. ทดสอบโปรแกรมผ)าน TestCase
1. ตrดต#sงโปรแกรม HermesJMS
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
49
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
50
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
51
11. ขยายโหนด sessions แลวคล2[กทโหนด JavaMQ แลวเลอกค4าสง New > Add queue..
12. ในไดอะลMอก Destination Properties ก4าหนด Name: เปน TestQueue ก4าหนดค)า UserName เปน
admin และ Password เปน admin แลวกด OK จะไดดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
52
3. การพ#ฒนาโปรเจ`ค JMSBPEL
แบบฝกหดนจะท4าการสรางโปรเจMคส4าหรบ Service Oriented Architecture ข-นมาใหม) โดยจะมขนตอน
การพฒนาดงน
1. เลอกเมน( File > New Project
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
53
2. ในไดอะลMอก New Project ใหเลอก Categories เปน SOA และ Projects เปน BPEL Module แลว
กด Next
3. ก4าหนด Project Name เปน JMSBPEL แลวกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
54
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
55
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
56
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
57
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
58
8. การทดสอบโปรแกรมผlาน TestCase
1. ท4าการ Deploy โปรเจMค JMSCompositeApp
2. ในหนาต)าง Project เลอกโหนด JMSCompositeApp > Test แลวคล2[กขวาเลอก New Test Case
3. ในไดอะลMอก New Test Case ใหก4าหนด Test Case Name: เปน TestCase1 แลวกด Next
4. หนาถดไปใน JMSBPEL ใหเลอกไฟลW WSDL เปน JMSWSDL.wsdl แลวกด Next
5. ในหนาถดไปใหเลอก JMSWSDLOperation แลวกด Finish
6. หนาต)าง Editor จะแสดงไฟลW Input.xml ใหแก source code ดงน
<soapenv:Body>
<jms:JMSWSDLOperation>
<inData>This is a test message</inData>
</jms:JMSWSDLOperation>
</soapenv:Body>
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
59
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
60
ขนตอนในการพฒนาโปรแกรม
1. พฒนา Determine Room Rate Web Services
2. พฒนา Calculate Booking Payment Web Services
3. พฒนาโปรเจMค RoomBooking
4. พฒนา XML Schema
5. พฒนาไฟลW WSDL
6. Import ไฟลW WSDL และ XML Schema
7. พฒนา Business Process
8. พฒนาโปรเจMค Composite Application
9. ทดสอบโปรแกรมผ)าน TestCase
10. เพ2ม Business Process ส4าหรบเกMบขอม(ลลงฐานขอม(ล
11. พฒนาโปรแกรม Web Application เพอเรยกใช Business Process
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
61
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
62
6. ในไดอะลMอก Add Operation ก4าหนด Method เปน getRate ชน2ดของ Return Type เปน double
และ เพ2ม Input parameter ชอ roomType ชน2ด String ดงร(ปแลวกด OK
@WebMethod(operationName = "getRate")
public double getRate(@WebParam(name = "roomType") String roomType) {
if (roomType.equals("Deluxe")) {
return 4000.0;
} else if (roomType.equals("Superior")) {
return 3000.0;
} else {
return 2000.0;
}
}
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
63
@WebMethod(operationName = "getPayment")
public double getPayment(@WebParam(name = "dayLength")
int dayLength, @WebParam(name = "roomRate")
double roomRate) {
return roomRate * dayLength;
}
โปรแกรม NetBeans จะสราง XML ไฟลWทเปน XSD เพอก4าหนด Schema ของ Datatype ของ Web
Service ทสรางข-น และสรางไฟลW WSDL เพอน2ยาม Web Service ทสรางข-น โดยเราสามารถทจะเรยกด(ไฟลW
เหล)านไดตามขนตอนดงน
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
64
5. เราสามารถทจะเรยก url ของ XSD ดงกล)าว จากโปรแกรม Web Browser ซ-งเราจะได Web Service
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
65
3 การพ#ฒนาโปรเจ`ค RoomBooking
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
66
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
67
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
68
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
69
5. การพ#ฒนาไฟลe WSDL
ขนตอนถดไปเปนการสรางไฟลW WSDL ส4าหรบน2ยาม Business Process ทจะพฒนาข-น เพอให
สามารถเรยกใชเปนเวMบเซอรWว2สได โดยมขนตอนการพฒนาดงน
1. เลอกหนาต)าง Projects ขยายโหนด RoomBooking แลวคล2[กขวาทโหนด Process Files จากนนเลอก
ค4าสง New > WSDL Document
2. ในไดอะลMอก New WSDL Document ก4าหนด File Name: เปน RoomBookingWSDL ก4าหนด
WSDL Type: เปน Concrete WSDL Document และก4าหนด Binding เปน SOAP และ Types เปน
Document Literal แลวกด Next
3. ในหนาถดไป ส4าหรบส)วนของ Input: ก4าหนด Message Part Name เปน inputData (เมอใส)ค)าเสรMจ
แลว ตองกดป6zม Enter ดวยเสมอ ม2ฉะนนค)าจะกลบไปเปน part1 เหมอนเด2ม)
4. เลอก Element or Type โดยเลอกป6zม ellipse (...) แลวเลอก RoomBookingRequest ใตโหนด
Element ดงร(ป
5. และส4าหรบส)วนของ Output: ก4าหนด Message Part Name เปน outputData และ Element or Type
เปน RoomBookingResponse โดยจะไดไดอะลMอกดงร(ป แลวกด Next
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
70
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
71
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
72
โหมด designer
ใน )
2. โปรแกรมจะแสดงไดอะลMอก PartnerLink1 [Partner Link] – Property Editor ใหก4าหนดค)า Name:
เปน RoomBookingPartnerLink โดยการกดดบเบ2ลคล2[กทชอ PartnerLink1 เด2มแลวกด OK
3. ลากไอคอน DetermineRateServiceService.wsdl ทอย()ในหนาต)าง Project ภายใตโหนด
RoomBooking มาไวภายใตหนาต)าง design ทางดานขวามอ [เราตองท4าการ deploy โปรเจMคนก)อนท
จะสามารถก4าหนด partner link ได]
4. โปรแกรมจะแสดงไดอะลMอก PartnerLink1 [Partner Link] – Property Editor ใหก4าหนดค)า Name:
เปน DetermineRatePartnerLink แลวกด OK
5. ลากไอคอน CalculateBookingPaymentService.wsdl ทอย()ในหนาต)าง Project ภายใตโหนด Ro
omBooking ,าไวภายใตหนาต)าง design [เราตองท4าการ deploy โปรเจMคนก)อนทจะสามารถก4าหนด
partner link ได]
6. โปรแกรมจะแสดงไดอะลMอก PartnerLink1 [Partner Link] – Property Editor ใหก4าหนดค)า Name:
เปน CalculatePaymentPartnerLink แลวกด OK
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
73
3. ในไดอะลMอก Receive1 [Receive] - – Property Editor ใหก4าหนด Name: เปน start และเลอก
Partner Link: เปน RoomBookingPartnerLink
4. ในช)อง Input Variable: กดป6zม Create เมอไดอะลMอก New Input Variable แสดงข-น ใหก4าหนด
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
74
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
75
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
76
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
77
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
78
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
79
11. Mapper Canvas จะเพ2มโหนด Concat ใหเพ2มขอความ 'your payment is ' ในช)อง String แรก และ
เชอมโยงโหนด return ในส)วน GetPaymentOut ในหนาต)างดานซายเขากบช)อง String ทสองของ
โหนด Concat และเชอมโยงส)วน output String ของโหนด Concat เขากบโหนด result ในส)วน
outData ในหนาต)างดานซาย ดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
80
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
81
9. เพอระบ6 Web Service ทจะเรยกใชใหลากไอคอน soap ทอย()ใน palette มาไวในส)วน WSDL Ports
ของ CASA Editor สองครง และท4าการเชอมโยงดงร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
82
10. ระบ6 endpoint ของ WSDL port โดยการคล2[กขวาท casaPort1 แลวเลอก Properties แลวก4าหนดค)า
Location เปน http://localhost:8080/DetermineRateServiceService/DetermineRateService และ
Endpoint Name เปน DetermineRate
11. คล2[กขวาท casaPort2 แลวเลอก Properties แลวก4าหนดค)า Location เปน
http://localhost:8080/CalculatePayment/CalculateBookingPaymentService และ Endpoint Name
เปน CalculatePayment
12. ท4าการ Deploy โปรเจMค RoomBookingCompositeApp
9. การทดสอบโปรแกรมผlาน TestCase
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
83
2. ในไดอะลMอก New Test Case ใหก4าหนด Test Case Name: เปน TestCase1 แลวกด Next
3. หนาถดไปใน RoomBooking ใหเลอกไฟลW WSDL เปน RoomBookingWSDL.wsdl แลวกด Next
4. ในหนาถดไปใหเลอก RoomBookingWSDLOperation แลวกด Finish
5. หนาต)าง Editor จะแสดงไฟลW Input.xml ใหแก source code ส)วน inputData ดงน
<soapenv:Body>
<room:RoomBookingRequest>
<room:firstName>Thanachart</room:firstName>
<room:lastName>Numnonda</room:lastName>
<room:phone>027777777</room:phone>
<room:checkInDate>21/05/2009</room:checkInDate>
<room:lengthOfStay>3</room:lengthOfStay>
<room:roomType>Deluxe</room:roomType>
</room:RoomBookingRequest>
</soapenv:Body>
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
84
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
85
เปน
phone,payment,firstName,lastName
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
86
ดงแสดงในร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
87
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
88
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
89
2. คล2[กท RoomBookingWSDLPort
3. ในหนาต)าง properties ใหท4าการ copy ค)าของ soap:address
4. ทดสอบโดยเป~ด Web Browser แลว paste ค)าท copy ไว จากนนใหท4าการเปลยนค)าของ URL ใหเปน
ดงน http://localhost:9080/RoomBookingWSDLService/RoomBookingWSDLPort?WSDL
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
90
<body>
<form action="RoomBookingBP" method="POST">
First Name: <input name="firstName" /> <br>
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
91
<option value="Deluxe">Deluxe</option>
<option value="Superior">Superior</option>
<option value="Standard">Standard</option>
</select> <br>
<input type="submit" value="Book Room" />
</form>
</body>
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet RoomBooking</title>");
out.println("</head>");
out.println("<body>");
org.netbeans.xml.schema.roombookinglschema.RoomBookingInput
inputData = new org.netbeans.xml.schema.roombookinglschema.RoomBookingInput();
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
92
}
out.println("</body>");
out.println("</html>");
out.close();
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
93
ขนตอนในการพฒนาโปรแกรม
1. พฒนาโปรเจMค BPELStructure
2. พฒนา XML Schema
3. พฒนาไฟลW WSDL
4. การพฒนา WSDL เพอใหเกMบขอม(ลลงฐานขอม(ล
5. พฒนา Business Process ส4าหรบ ForEach
6. พฒนาโปรเจMค Composite Application
7. ทดสอบโปรแกรมผ)าน TestCase
1 การพ#ฒนาโปรเจ`ค BPELStructure
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
94
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
95
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
96
3. การพ#ฒนาไฟลe WSDL
ขนตอนถดไปเปนการสรางไฟลW WSDL ส4าหรบน2ยาม Business Process ทจะพฒนาข-น เพอให
สามารถเรยกใชเปนเวMบเซอรWว2สได โดยมขนตอนการพฒนาดงน
1. เลอกหนาต)าง Projects ขยายโหนด BPELStructure แลวคล2[กขวาทโหนด Process Files จากนนเลอก
ค4าสง New > WSDL Document
2. ในไดอะลMอก New WSDL Document ก4าหนด File Name: เปน BPELStructureWSDL1 ก4าหนด
WSDL Type: เปน Concrete WSDL Document และก4าหนด Binding เปน SOAP และ Types เปน
Document Literal แลวกด Next
3. ในหนาถดไป ก4าหนด Operation Type เปน One-Way Operation ส4าหรบส)วนของ Input: ก4าหนด
Message Part Name เปน inputData
4. เลอก Element or Type โดยเลอกป6zม ellipse (...) แลวเลอก PO ใตโหนด Element แลวกด Next
5. ในหนาถดไปใหคงค)าเด2มไว แลวกด Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
97
ใหแกไขเปน
insert into purchasingorder (itemNumber,PONumber,itemQuantity) values (?,?,?)
เปน
itemNumber,PONumber,itemQuantity
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
98
โดยใหลากไปทแทบเทาๆ และใส)ใน )
2. โปรแกรมจะแสดงไดอะลMอก PartnerLink1 [Partner Link] – Property Editor ใหก4าหนดค)า Name:
เปน BPELStructurePartnerLink โดยการกดดบเบ2ลคล2[กทชอ PartnerLink1 เด2มแลวกด OK
3. ลากไอคอน PurchasingOrderDB.wsdl ทอย()ในหนาต)าง Project ภายใตโหนด BPELStructure มา
ไวภายใตหนาต)าง design ทางดานขวามอ [เราตองท4าการ deploy โปรเจMคนก)อนทจะสามารถก4าหนด
partner link ได]
4. โปรแกรมจะแสดงไดอะลMอก PartnerLink1 [Partner Link] – Property Editor ใหก4าหนดค)า Name:
เปน DBPartnerLink แลวกด OK
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
99
5. คล2[กทโหนด Final Value ในส)วน For Each เลอก Count จากเมน( Node ทอย()ส)วนบนของ
BPELMapper แลวท4าการโยงโหนด item ในส)วน items > inputData > inData ทางดานซายเขากบ
โหนด NodeSet ของ Count และโยงโหนด Number ของ Count กบโหนด Final Value ในส)วน For
Each ทางดานขวา ดงแสดงในร(ป
6. กด Save
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
100
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
101
ดงแสดงในร(ป
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
102
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
103
7. การทดสอบโปรแกรมผlาน TestCase
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
104
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan