1. 1
Hand-on
Exercises
Java Web Services
and
Service Oritened Architecture
Using GlassFish ESB
and NetBeans 6.5
Dr.Thanachart Numnonda
and
Asst Prof.Thanisa Kruawaisayawan
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
2. 2
Exercises
Exercise 1: Calling External Web Services
Exercise 2: Java Web Service
Exercise 3: RESTful Web Services
Exercise 4: Twitter Web Services and Google
Calendar API
Exercise 5: Google Map Web Services
Exercise 6: Developing a Simple Synchronous BPEL
program
Exercise 7: BPEL for writing to file
Exercise 8: BPEL for Writing to Database
Exercise 9: BPEL for Sending Message to a JMS
Queue
Exercise 10: BPEL Invoking Web Services
Exercise 11: BPEL : Structured Activities
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
3. 3
Exercise 1: Calling External Web Services
āđāļāļāļāļāļŦāļāđāļāļāļāļāđāļāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄāđāļāļāđāļĢāļĒāļāđāļ Web Services āļāļĄāļāļĒ()āđāļĨāļ§ āļ-āļāļāļ°āđāļĨāļāļāļĄāļē 3
āļāļĢ2āļāļēāļĢāļāļāļ
āļāļēāļĢāļāļāļĨāļāļāļ 1 āļĢāļēāļāļēāļ4āļēāļĄāļāļĨ)āļēāļŠ6āļāļāļāļ āļāļāļ.
āļāļēāļĢāļāļāļĨāļāļāļ 2 āļāļāļĢāļēāđāļĨāļāđāļāļĨāļĒāļāđāļ2āļāļāļĢāļēāļĢāļ°āļŦāļ§)āļēāļāļāļĢāļ°āđāļāļĻ
āļāļēāļĢāļāļāļĨāļāļāļ 3 āļĢāļēāļāļēāļŦ6āļ
āđāļāļĒāļāļ°āđāļ NetBeans āđāļĨāļ° GlassFish V2 Server
āļāļēāļĢāļ#āļāļāļē Web Service Client
āđāļāļāļāļāļŦāļāļāļāļ°āļŠāļĢāļēāļ Web Application Project āļ-āļāđāļŦāļĄ) āđāļāļāđāļāđāļāļāļēāļĢāđāļĢāļĒāļ Web Services āđāļāļĒāļĄāļāļ
āļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File > New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ Java Web āđāļĨāļ° Web Application āđāļĨāļ§āļāļ
Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ ExternalWSDemo āđāļĨāļ§āđāļĨāļāļ Project Location āđāļāļ folder āļāđāļĢāļē
āļāļāļāļāļēāļĢāļāļ°āđāļMāļāđāļāļĨWāđāļ§
4. āļāļēāļāļāļāđāļĨāļāļ Server āđāļāļ GlassFish V2 āļ4āļēāļŦāļāļ Jave EE Version: āđāļāļ Java EE 5 āđāļĨāļ§āļāļ
Finish
āļāļēāļĢāļāļāļĨāļāļāļ 1
1. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ ExternalWSDemo āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ New > OtherâĶ āđāļŦāđāļĨāļāļ Categories āđāļāļ
Web Services āđāļĨāļ° Web Service Client āđāļĨāļ§āļāļ Next
2. āđāļāđāļāļāļ°āļĨMāļāļ New Web Service Client āđāļŦāđāļĨāļāļ WSDL URL: āđāļĨāļ§āđāļŠ) URL āđāļāļ
http://www.pttplc.com/pttinfo.asmx?wsdl āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 1 āđāļĨāļ§āļāļ Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
4. 4
āļĢ5āļāļ 1 āđāļŠāļāļāđāļāļāļ°āļĨMāļāļ New Web Service Client
3. āđāļāļŦāļāļēāļ)āļēāļ Projects āļāļ°āļĄ Folder āļāļāļ Web Service References āļ-āļāļĄāļē
4. āļāļĨ2[āļāļāļ§āļēāļ ExternalWSDemo āđāļĨāļ§āđāļĨāļāļ Servlet āļāļēāļāļāļāđāļŦāļ4āļēāļŦāļāļāļāļāđāļāļ PTTServlet āđāļĨāļ°
Package: āđāļāļ servlets āđāļĨāļ§āļāļ Finish
5. āļāļĨ2[āļāļāļ§āļēāļ āļēāļĒāđāļāđāļĄāļāļāļ processRequest āđāļāđāļāļĨW PTTServlet.java āđāļĨāļ§āđāļĨāļāļ Web Service Client
Resources > Call Web Service Operation āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 2
āļĢ5āļāļ 2 āđāļŠāļāļāļāļēāļĢāđāļĢāļĒāļāđāļ operation āļāļāļ Web Service
6. āđāļĨāļāļ CurrentOilPrice āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 3 āđāļĨāļ§āļāļ OK
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
5. 5
āļĢ5āļāļ 3 āđāļŠāļāļāļāļēāļĢāđāļĢāļĒāļāđāļ Operation: CurrentOilPrice āļāļāļāļāļāļ.
7. āļ āļēāļĒāđāļāđāļāļĨW PTTServlet.java āđāļŦāđāļŠ) language āđāļāļ TH āđāļĨāļ§ Run āđāļāļĨW āļāļ°āđāļŠāļāļāļĢāļēāļāļēāļ4āļēāļĄāļāļĨ)āļēāļŠ6āļ āļāļ
āđāļŠāļāļāđāļāļĢ(āļāļ 4
āļĢ5āļāļ 4 āđāļŠāļāļāļāļĨāļĨāļāļWāļāđāļāļāļēāļāļāļēāļĢāđāļĢāļĒāļāđāļ Web Service Operation: CurrentOilPrice āļāļāļāļāļāļ.
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
6. 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 āļāļāļ
6. Run āđāļāļĨW CurrencyServlet.java āļāļ°āđāļŠāļāļāļāļāļĢāļēāđāļĨāļāđāļāļĨāļĒāļāđāļ2āļāļāļĢāļē āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 5
āļĢ5āļāļ 5 āđāļŠāļāļāļāļĨāļĨāļāļWāļāđāļāļāļēāļāļāļēāļĢāđāļĢāļĒāļāđāļ Web Service Operation: ConversionRate
āļāļēāļĢāļāļāļĨāļāļāļ 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. 7
5. āđāļāđāļāđāļāļĨW StockServlet.java āđāļāļĒāđāļŠ) symbol āđāļāļ request.getParameter("symbol");
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
8. āļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāđāļāļĒāđāļŠ) ?symbol=goog āļ)āļāļāļēāļĒ URL āļāļāļ
http://localhost:8080/ExternalWSDemo/StockServlet?symbol=goog āđāļāļāļĨāļĨāļāļWāļāļāđāļŠāļāļāđāļāļĢ(āļāļ 7
āļĢ5āļāļ 7 āđāļŠāļāļāļāļĨāļĨāļāļWāļāđāļāļāļēāļāļāļēāļĢāđāļĢāļĒāļāđāļ Web Service Operation: GetQuote āđāļĄāļāļsāļāļ symbol āđāļāļ goog
āļāļēāļĢāļāļāļŠāļāļ Web Services āđāļāļĒāđāļM SoapUI
āđāļāļĢāđāļāļĢāļĄ SoupUI āđāļāļāđāļāļĢāđāļāļĢāļĄ Open Source āļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļāđāļāļĢāļāļāļĄāļāđāļāļāļēāļĢāļāļāļŠāļāļāđāļ§MāļāđāļāļāļĢWāļ§2āļŠ
āļāļ2āļĒāļĄāđāļāļāļāļāļĒ)āļēāļāļāļ§āļēāļāļāļ§āļēāļ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ°āđāļāļāļēāļ§āļWāđāļŦāļĨāļāđāļāļĢāđāļāļĢāļĄāļāđāļāļ www.soupui.org āđāļĨāļ°āļ4āļēāļāļēāļĢ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
8. 8
āļāļāļŠāļāļāđāļ§MāļāđāļāļāļĢWāļ§2āļŠāđāļāļāļēāļĢāļāļāļĨāļāļāļāļāļŠāļēāļĄāļāļēāļāļāļ āļāļāļāļāļēāļāļāđāļĢāļēāļĒāļāļŠāļēāļĄāļēāļĢāļāļ2āļāļāļāđāļāļĢāđāļāļĢāļĄ SoapUI āļ āļēāļĒāđāļ
NetBeans āđāļāđāļāļĒāļāļēāļĢāļāļēāļ§āļWāđāļŦāļĨāļ SoupUI NetBeans Plugin (āđāļāļĨW com-eviware-soapui-netbeans-module-
2.5.1.nbm) āđāļĨāļ°āļ4āļēāļāļēāļĢāļ2āļāļāļāļāļēāļĄāļāļāļāļāļāļāļāļ
1. āđāļāđāļāļĢāđāļāļĢāļĄ NetBeans āđāļĨāļāļāđāļĄāļ( Tools > Plugins
2. āđāļāđāļāļāļ°āļĨMāļāļ Plugins āđāļĨāļāļāđāļāļ Downloaded āđāļĨāļ§āļāļāļ6zāļĄ Add Plugins..āđāļĨāļ§āđāļĨāļāļāđāļāļĨW com-eviware-
soapui-netbeans-module-2.5.1.nbm āļ-āļāļ4āļēāļāļēāļĢāļāļēāļ§āļWāđāļŦāļĨāļāļĄāļēāļ)āļāļāļŦāļāļēāļ āļāļ°āđāļāđāļāļāļ°āļĨMāļāļāļāļāļĢ(āļ
3. āļāļāļ6zāļĄ Install āđāļĨāļ§āļāļāļ6zāļĄ Next āļāļāļ4āļēāļāļēāļĢāļ2āļāļāļāđāļŠāļĢMāļāđāļĨāļ§āđāļĨāļāļāđāļŦ Restart āđāļāļĢāđāļāļĢāļĄ NetBeans āļ-āļāļĄāļē
āđāļŦāļĄ)
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļŠāļāļāļāļēāļĢāđāļāļāļēāļ SoupUI āļāļ2āļāļāļāļ-āļāļĄāļēāđāļ NetBeans āđāļāļāļāļāļŠāļāļāđāļ§MāļāđāļāļāļĢWāļ§2āļŠāļ(āļāļāļĢāļē
āđāļĨāļāđāļāļĨāļĒāļāļāļēāļĄāļāļāļāļāļāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File > New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ SOA āđāļĨāļ° Web Services Testing Project
āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ CurrencyExcangeWSTestProject āđāļĨāļ§āđāļĨāļāļ Project Location āđāļāļ
folder āļāđāļĢāļēāļāļāļāļāļēāļĢāļāļ°āđāļMāļāđāļāļĨWāđāļ§
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
10. 1
Exercise 2: Java Web Services
āđāļāļāļāļāļŦāļāđāļāļāļāļāđāļāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Services āļŠ4āļēāļŦāļĢāļ Java EE āđāļāļĒāđāļāļ6āļāļ4āļēāļŠāļ
JAX-WS āļ-āļāļāļ°āđāļāļāļāļēāļĢāļāļāļāļēāļāļ Server āļāļĢāļāļāļ Java EE āđāļāļĒāļ6āļāļ4āļēāļŠāļ JAX-WS āļāļ°āļ)āļ§āļĒāļ4āļēāđāļŦāļāļēāļĢāļŠāļĢāļēāļāđāļĨāļ°
āđāļĢāļĒāļāđāļ Web Services āļāļ§āļĒāļ āļēāļĐāļē Java āđāļāļāđāļāđāļāļ)āļēāļĒāļ-āļ
āļāļēāļĢāļāļāļāļē 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
āđāļāļāļāļāļŦāļāļāļāļ°āđāļŠāļāļāļāļāļāļāļāļāļēāļĢāđāļ NetBeans āļŠāļĢāļēāļ Web Service āļāļāļ calculateTax āđāļāļĒāđāļ Servlet
āļ-āļāļāļ°āļĢāļāļāļĒ()āļāļ GlassFish V2 Server āđāļāļāđāļŠāļāļ Web Services āļāļēāļĢāļŠ)āļ SOAP message āđāļĨāļ° WSDL āļāļāļ
Services
āļāļēāļĢāļ#āļāļāļē calculateTax Web Service
āđāļāļāļāļāļŦāļāļāļāļ°āļŠāļĢāļēāļ Web Application Project āļ-āļāđāļŦāļĄ) āđāļāļāđāļāđāļāļāļēāļĢāđāļMāļ Web Service āđāļāļĒāļĄāļāļāļāļāļ
āļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File > New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ Java Web āđāļĨāļ° Projects āđāļāļ Web
Application āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ TaxWSDemo āđāļĨāļ§āđāļĨāļāļ Project Location āđāļāļ folder āļāđāļĢāļēāļāļāļāļāļēāļĢāļāļ°
āđāļMāļāđāļāļĨWāđāļ§
4. āļāļēāļāļāļāđāļĨāļāļ Server āđāļāļ GlassFish V2 āļ4āļēāļŦāļāļ Jave EE Version: āđāļāļ Java EE 5 āđāļĨāļ§āļāļ Finish
5. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ TaxWSDemo āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ New > OtherâĶ āđāļŦāđāļĨāļāļ Categories āđāļāļ Web
Services āđāļĨāļ° Web Service āđāļĨāļ§āļāļ Next
6. āđāļāđāļāļāļ°āļĨMāļāļ New Web Service āļ4āļēāļŦāļāļ Web Service Name: āđāļāļ TaxServices āđāļĨāļ° Package:
āđāļāļ ws āđāļĨāļ§āļāļ Finish
7. āđāļāļĢāđāļāļĢāļĄāļāļ°āļāļĢāļ°āļāļēāļĻ Web Services āļāļāļ TaxServices āđāļāđāļŦāļāļ Web Services āļāļāļāļŦāļāļēāļ)āļēāļ
Project āđāļĨāļ°āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨWāļāļāļ TaxServices.java
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
11. 2
8. āđāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ TaxWSDemo > Web Services āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ TaxServices
āđāļĨāļāļāļ4āļēāļŠāļ Add OperationâĶ
9. āđāļāđāļāļāļ°āļĨMāļāļ Add Operation āļ4āļēāļŦāļāļ Method āđāļāļ calculateTax āļāļ2āļāļāļāļ Return Type āđāļāļ
double āđāļĨāļ° āđāļ2āļĄ Input parameter āļŦāļ-āļāļāļ§āļāļ income āļāļ2āļ double āđāļĨāļ§āļāļ OK
10. āļāļĨ2[āļāļāđāļāļ Source āļāļāļ TaxServices.java āđāļĨāļ°āļāļĢāļāļāļĢ6āļāđāļĄāļāļāļ 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;
}
}
}
TaxWSDemo āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ Clean and Build āļāļēāļāļāļāļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ
11. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ
TaxWSDemo āļāļāļāļĢāļ āđāļĨāļ§āđāļĨāļāļ Deploy
āļāļēāļĢāļāļāļŠāļāļ Web Service
āđāļāļĢāđāļāļĢāļĄ Web Service āļāļ°āļ(āļāļ2āļāļāļāļāļ GlassFish V2 āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāđāļĢāļĒāļāļ(āđāļāļāļēāļĢāđāļ System
Admin Console āđāļāļĒāļāļēāļĢāđāļ~āļ Web Browser āđāļĨāļ°āđāļĢāļĒāļ url āļ http://localhost:4848 āđāļāļĒāļ4āļēāļŦāļāļ user āđāļāļ
admin āđāļĨāļ° password āđāļāļ adminadmin
1. āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļŠāļāļ Applications āđāļĨāļ° Web Services āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 1
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
12. 3
āļĢ5āļāļ 1 āđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĒāļāđāļ GlassFish V2 (Sun Java Application Server)
2. āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ°āļāļāļŠāļāļ Web Service āļāļ)āļēāļāļāļēāļ Admin Console āđāļāđāļāļĒāļāļāļ6zāļĄ Test āļŦāļĢāļāļāļāļŠāļāļ
āļāļēāļ Netbeans āđāļāļĒāļāļĨ2[āļāļāļ§āļēāļ TaxServices āđāļ Web Services āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 2
āļĢ5āļāļ 2 āđāļŠāļāļāļ§2āļāļāļēāļĢāļāļāļŠāļāļ Web Service āđāļ Netbeans
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
13. 4
3. āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļŠāļāļāļŦāļāļēāļāļāđāļāļāđāļŦāđāļĢāļēāļsāļāļāļāļāļĄ(āļĨāļ2āļāļ6āļ āļ-āļāļāļāļ4āļēāļāļ§āļāđāļ2āļāļāļāļāļāļāļēāļĢāļ4āļēāļāļ§āļāļ āļēāļĐ āđāļāļāļāļāļ°
āđāļŠ)āļāļ§āđāļĨāļāđāļāļ 730000 āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 3
āļĢ5āļāļ 3 āđāļŠāļāļāļŦāļāļēāļ)āļēāļāļŠ4āļēāļŦāļĢāļāđāļŦāļāļāļŠāļāļāđāļĢāļĒāļ Web Service
4. āđāļĨāļ§āļāļāļ6zāļĄ calculateTax āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļĢāļĒāļāđāļ Web Services āđāļĨāļ°āļāļ°āđāļŠāļāļāļāļĨāļĨāļāļWāļāđāļ āļāļĢāļāļĄāļāļāđāļŠāļāļ
āļ)āļē SOAP Request āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 4
āļĢ5āļāļ 4 āđāļŠāļāļāļāļĨāļĨāļāļWāļāđāļāļāļēāļāļāļēāļĢāđāļĢāļĒāļāđāļ Web Service āđāļĨāļ°āđāļŠāļāļ SOAP Request
5. āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ°āđāļŠāļāļāļ4āļēāļŠāļ WSDL āļāļāļ Web Service āļāđāļāļĒāļāļēāļĢāđāļĨāļāļ WSDL File āđāļāļĢāđāļāļĢāļĄāļāļ°āļ4āļēāļāļēāļĢ
āđāļĢāļĒāļ url āļāļ http://localhost:8080/TaxWSDemo/TaxServicesService?WSDL āđāļĨāļ°āļāļ°āđāļāļāļĨāļĨāļāļWāļāļ
āđāļŠāļāļāđāļāļĢ(āļāļ 5
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
14. 5
āļĢ5āļāļ 5 āđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĒāļāļāļāļ WSDL
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
15. 6
Exercise 3: RESTful Web Services
āđāļāļāļŦāļēāļāļāļāļāļĻāļāļĐāļēāļāļāļ Enterprise Java Bean
āđāļāļāļāļāļŦāļāđāļāļāļāļāđāļāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ RESTful Web Services āđāļāļĒāđāļāļāļāļāļēāļŠāļ JAX-RS āđāļ"āļ
āļŠāļĢāļēāļ Web Services āļāļāļ°āđāļĢāļĒāļāļ&āļāļāļĄ&āļĨāļāļēāļāļāļēāļāļāļāļĄ&āļĨ MySQL āļ+āļēāļāļāļāļāļēāļŠāļ Java Persistence API (JPA)
āļāļāļāļāļāđāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
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
āļāļēāļĢāļāļāļāļāđāļĄāļāļĨ RESTful Web Services
āļāļāļāļāļāļāļāļēāđāļāļāđāļāļāļēāļ°āđāļāļĢāđāļāļĢāļĄ NetBeans āđāļ§āļāļĢ0āļāļ 6.0 āļ2āļāđāļĄ+āđāļāļ-āļāļāļāđāļĄāļ&āļĨāļāļĄāļē āđāļ+āļŠāļēāļŦāļĢāļāļ&āđāļ
āđāļāļĢāđāļāļĢāļĄ NetBeans 6.1 āļ2āļāđāļāļŠāļēāļĄāļēāļĢāļāļāļēāļĄāļāļāļāļāļāļāđāļāđāļ āļŠāļēāļŦāļĢāļāļāļāļāļāļāļāļēāļĢāļ-āļāļāļāđāļĄāļ&āļĨāļāļĄāļāļāļ
1. āđāļĨ"āļāļāđāļĄāļ& Tools => Plugin
2. āđāļāđāļāļāļ°āļĨ5āļāļ Plugins āđāļĨ"āļāļāđāļāļ Available Plugins āđāļĨāļ§āđāļĨ"āļāļāļ+āļāļ RESTful Web Services
3. āļāļāļ6āļĄ Install āđāļĨāļ§āļāļēāļāļēāļĢāļ-āļāļāļāđāļāļĒāļāļēāļĢāļāļāļ6āļĄ OK āđāļĨāļ°āļĒāļāļĄāļĢāļāđāļ"āļāļāđāļāļāļāļāļĨ-āļāļŠ-āļāļ-8āđāļāļĢāđāļāļĢāļĄ
āļāļēāļĢāļŠāļĢāļēāļ Web Application Project
āđāļĢāļēāļāļ°āļāļēāļŦāļāļāđāļŦāđāļāļĢāđāļāļĢāļĄāļāđāļāļāđāļāļĢāđāļāļĄ Web Application āļāļāļāļāļāđāļĢāļāļāļ°āđāļāļāļāļēāļĢāļŠāļĢāļēāļ Project āđāļŦāļĄ+
āļ2āļāļĄāļēāđāļ NetBeans āļ2āļāļĄāļāļāļāļāļāļāļāļ
1. āđāļĨ"āļāļāđāļĄāļ& File => New Project..
2. āđāļāđāļāļāļ°āļĨ5āļāļ New Project āđāļŦāđāļĨ"āļāļ Categories āđāļāļ Java Web āđāļĨāļ°āđāļĨ"āļāļ Project āđāļāļ Web
Application āđāļĨāļ§āļāļ Next
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
16. 7
3. āļāļēāļŦāļāļ Project Name āđāļāļ RestfulWS āđāļĨāļ§āđāļĨ"āļāļ Project Location āđāļāļ Director āļāđāļĢāļēāļāļāļāļāļēāļĢāļāļ°
āđāļ5āļāđāļāļĨ0āđāļ§ āļāļ Next
4. āļāļēāļāļāļāđāļĨ"āļāļ Server āđāļāļ GlassFishV2 āđāļĨāļ§āļāļ Finish
āļāļēāļĢāļāļāļāļē Entity Class
āļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļĢāļŠāļĢāļēāļ Entity Class āđāļ"āļāļ-āļāļ+āļāļāļ table āļāļ"āļ books āđāļ MySQL āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢ
āļāļāļāļēāđāļ+āļāđāļāļĒāļ§āļāļāđāļāļāļāļāļŦāļāļāļēāļĢāļāļāļāļē Enterprise Java Bean āļ2āļāđāļĢāļēāļāļ°āđāļ Entity Class āļāļ"āļ Books āđāļĨāļ°
Persistence Unit
āļāļēāļāļēāļĢāđāļāđāļāđāļ"āļāđāļ-āļĄ property āļāļāļ āđāļāļĨ0 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"
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="MySQL_password" />
</properties>
</persistence-unit>
</persistence>
āļāļēāļĢāļāļāļāļē Restful Web Service āļāļēāļ Entity Class
āļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļĢāļāļāļāļē Restful Web Services āđāļ"āļāđāļŦāļŠāļēāļĄāļēāļĢāļāļ-āļāļ+āļāļāļāļāļēāļāļāļāļĄ&āļĨāđāļāļĒāļ+āļēāļ Entity
Class āļāļāļāļāļēāļ2āļāđāļ āđāļāļĒāļāļ°āļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļāļēāļ Projects āđāļĨāļ§āļāļĨāļāļāļ§āļēāļāđāļŦāļāļ RestfulWS āļāļēāļāļāļāđāļĨāļāļāļāļēāļŠāļ New > Other...
2. āđāļāđāļāļāļ°āļĨ!āļāļ New File āđāļŦāđāļĨāļāļ Categories āļāļāļ Web Services āđāļĨāļāļ File Types: āđāļ$āļ RESTful
Web Services from Entity Class āđāļĨāļ§āļāļ Next
3. āđāļāđāļāļāļ°āļĨ!āļāļ New RESTful Web Services from Entity Class āđāļŦāđāļĨāļāļ Books āļāļāļĢ&āļ āđāļĨāļ§āļāļ Next
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
17. 8
4. āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āļŠāļĢāļēāļ class āļāļēāļāđ āļāļāļĢ&āļ
5. āļāļāļ)*āļĄ Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
18. 9
āļāļēāļĢāļāļāļŠāļāļ RESTful Web Service āļāļēāļ Entity Class
āļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļĢāļāļāļŠāļāļ RESTful Web Services āļāļāļāļāļēāļ2āļāđāļāļĒāļāļ°āļĄāļāļāļāļāļāļāļāļ
1. āđāļĨ"āļāļāļŦāļāļēāļ+āļēāļ Projects āđāļĨāļ§āļāļĨ-:āļāļāļ§āļēāļāđāļŦāļāļ RestfulWS āļāļēāļāļāļāđāļĨ"āļāļāļāļēāļŠāļ Test Restful Web
Services
2. āđāļāļĢāđāļāļĢāļĄ Browser āļāļ°āđāļŠāļāļ uri āļāļāļ RESTful Web Services āđāļŦāđāļĨ"āļāļāđāļŦāļāļ books āđāļĨāļ°āļāļĨ-:āļ isbn
āļāļ°āđāļāļāļĨāļĨāļāļ0āļāļāļĢ&āļ
3. āļāļāļĨāļāļāļ;āļāļāļāļāļĄ&āļĨ isbn āđāļāļ 123 āđāļĨāļ§āļāļāļ6āļĄ Test āļāļ°āđāļāļāļĨāļĨāļāļ0āļāļ§āļāļĒ+āļēāļāļāļāļĢ&āļ
4. āļāļāļĨāļāļāđāļāļĨāļĒāļ method āđāļāļ DELETE āđāļĨāļ° PUT āđāļ"āļāļāļēāļāļēāļĢāļĨāļāđāļĨāļ°āđāļ-āļĄāļāļāļĄ&āļĨāđāļāļēāđāļāđāļāļāļēāļĢāļēāļ books
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
19. 1
Exercise 4:Twitter Web Services
and Google Calendar API
āđāļāļāļāļāļŦāļāđāļāļāļāļāđāļāļāļāļ§āļāļĒ)āļēāļāļāļēāļĢāđāļ Web Services āļāļĄāļāļĒ()āđāļ Social Networks āđāļāļĒāļāļ°āđāļ Web
Services āļāļāļ Twitter āđāļāļāđāļāļĒāļāđāļāļĢāđāļāļĢāļĄ update status āļāļāļ Twitter āļŠ)āļ§āļāļāļ§ āļāļēāļ Web Application āļ
āļāļāļāļēāļ-āļ āļāļēāļāļāļāļāļ°āđāļāļĒāļāđāļāļĢāđāļāļĢāļĄāļ2āļāļ)āļāļāļ Google Calendar āđāļāļĒāđāļ Java API āļāļāļ Google āđāļāļāđāļĢāļĒāļāļ(
āļ4āļēāļŦāļāļāļāļāļŦāļĄāļēāļĒāļāļāļ(āđāļāđāļāļ§āļāļâŽāļāļ6āļāļ āļāļēāļāļāļāļāļ°āļŠāļēāļĄāļēāļĢāļāđāļĨāļāļāļāļāļŦāļĄāļēāļĒāļāđāļŠāļāļāļ-āļāđāļāļāļŠ)āļāļ)āļēāļāđāļāļĒāļ Twitter āđāļāļĒ
āļāļēāļĢāđāļĢāļĒāļāđāļ Web Services
āļāļēāļĢāļŠāļĢMāļēāļ User Account āļŠSāļēāļŦāļĢ#āļ Twitter āđāļĨāļ° Google Calendar
āđāļāļāļāļāļŦāļāļāļāļ°āđāļĢāļĒāļāđāļāđāļ§MāļāđāļāļWSocial Network āļŠāļāļāđāļŦ)āļāļāļ Twitter āđāļĨāļ° Google Calendar
âĒ āđāļ§Māļ Twitter āđāļāļāļāļĢ2āļāļēāļĢāļŠ4āļēāļŦāļĢāļāđāļŦāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ°āđāļāļāļĄāļ)āļāļāļ āđāļāļāļ āļŠāļĄāļēāļ2āļāđāļāļāļĢāļāļāļāļĢāļ§ āđāļĨāļ°āđāļāļāļ
āļĢ)āļ§āļĄāļāļēāļāđāļāļāļĒ()āļāļĨāļāļāđāļ§āļĨāļē āđāļāļĒāļāļēāļĢāļāļāļāļ4āļēāļāļēāļĄāļŠāļāđāļāļĒ)āļēāļāļ)āļāļĒāļāļĢāļāļ§)āļē What are you doing? āđāļĢāļēāļŠāļēāļĄāļēāļĢāļ
āļāļāļ°āļĨāļāļāļ°āđāļāļĒāļāđāļ§Māļāļāđāļāļ twitter.com āđāļĨāļ°āđāļĄāļāļ4āļēāļāļēāļĢāļĨMāļāļāļ2āļāđāļāļēāđāļāđāļĨāļ§āļāļ°āđāļāļāļ§āļāļĒ)āļēāļāđāļ§MāļāļāļāļĢ(āļ
âĒ āđāļ§Māļ Google Calendar āđāļāļāđāļ§MāļāļāđāļŦāļ(āđāļāļāļāļāļēāļĢāļ4āļēāļŦāļāļāļāļēāļĢāļāļāļŦāļĄāļēāļĒāļ)āļēāļāđāđāļāđāļāļĒāļŠāļēāļĄāļēāļĢāļāļŠāļĢāļēāļ āđāļŠāļāļ
āđāļāđāļ āđāļĨāļ°āļĨāļāđāļāļ)āļēāļāđāļāļĢāđāļāļĢāļĄāđāļ§MāļāļāļĢāļēāļ§āđāļāļāļĢW āđāļāļĒāļāļāļĄ(āļĨāļāļēāļĢāļāļāļŦāļĄāļēāļĒāļāļ°āļ(āļāđāļMāļāđāļ§āļ Google āļ4āļēāđāļŦāļ(āđāļ
āļŠāļēāļĄāļēāļĢāļāđāļĢāļĒāļāļ)āļēāļāđāļ§MāļāļāļēāļāđāļāļĢāļāļāđāļāđāļMāđāļ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ°āļĨāļāļāļ°āđāļāļĒāļāđāļ§Māļāļāđāļāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
20. 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/ āļāļāļāļ§āļāļĒ)āļēāļāđāļāļĢ(āļ
āļāļēāļĢāļŠāļĢāļēāļ JSF Web Application āļŠāļēāļŦāļĢāļ Twitter
āļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļŠāļĢāļēāļ Web Application āđāļāļĒāđāļ JSF Visual Web Framework āđāļ"āļāļāļēāļāļēāļĢāļŠ+āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
21. 3
āļāļāļāļ§āļēāļĄāļāļāļāļāļēāļāļēāļĄ What are you doing? āļāļēāļāđāļāļĢāđāļāļĢāļĄāļāļāļāļāļēāļ2āļāđāļāļĒāļ Twitter āđāļāļĒāđāļĢāļĒāļāđāļ Web
Services āļ2āļāļĄāļāļāļāļāļāļāļāļ
1. āđāļĨ"āļāļāđāļĄāļ& File > New Project..
2. āđāļāđāļāļāļ°āļĨ5āļāļ New Project āđāļŦāđāļĨ"āļāļ Categories āđāļāļ Java Web āđāļĨāļ°āđāļĨ"āļāļ Projects āđāļāļ Web
Application āđāļĨāļ§āļāļ Next
3. āļāļēāļŦāļāļ Project Name āđāļāļ TwitterJSF āđāļĨāļ§āđāļĨ"āļāļ Project Location āđāļāļ Director āļāđāļĢāļēāļāļāļāļāļēāļĢāļāļ°
āđāļ5āļāđāļāļĨ0āđāļ§ āļāļēāļāļāļāđāļĨ"āļāļ Server āđāļāļ GlassFish V2 āļāļēāļāļāļāļāļ Next
4. āđāļāļ+āļāļ Frameworks āđāļŦāđāļĨ"āļāļ Visual Web JavaServer Faces āļāļēāļāļāļāļāļ Finish
āđāļāļĢāđāļāļĢāļĄāļāļāļ°āļāļāļāļēāļ2āļāļĒāļāļāļāļāļēāļĢāļāļ°āđāļŦāļĄāļŦāļāļēāļāļāļŠ+āļ§āļāļ-āļāļ+āļāļ&āđāļāļāļāļĢ&āļ āđāļāļĒāļ&āđāļāļŠāļēāļĄāļēāļĢāļāļ;āļāļāļāļāļāļ§āļēāļĄāđāļ
TextField āđāļĨāļ°āđāļĄ"āļāļāļāļ6āļĄ Twitter Notification āđāļāļĢāđāļāļĢāļĄāļāļ°āļŠ+āļāļāļāļāļ§āļēāļĄāđāļāļĒāļ Twitter āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢ
āļāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļāļ
1. āđāļāđāļāļĢāđāļ5āļ TwitterJSF āđāļŦāđāļĨ"āļāļāđāļāļĨ0 Page1.jsp āļŦāļāļēāļ+āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨ0āļāđāļāđāļŦāļĄāļ Design
2. āđāļāļŦāļāļēāļ+āļēāļ Properties āđāļŦāļāļēāļŦāļāļāļ+āļēāļāļāļ Title āđāļāļ Twitter Notification
3. āđāļāļŦāļāļēāļāļēāļ Palette āļĨāļēāļāđāļāļāļāļ Label āļāļāļĒ&āļ āļēāļĒāđāļāđāļŦāļāļ Basic āļĄāļēāđāļ§āđāļāļŦāļāļēāļāļēāļāļāļēāļĢāļāļāļāđāļāļāļāļāļ
Page1.jsp āđāļĨāļ§āđāļāđāļāļāļāļāļ§āļēāļĄāđāļ$āļ What are you doing? āđāļĨāļ§āļāļ Enter āđāļāļŦāļāļēāļāļēāļ Properties
āļŠāļēāļŦāļĢāļ Label1 āđāļŦāđāļāļĨāļĒāļ Style āđāļāļāđāļĨāļāļ Font āđāļ$āļ Time News Roman āļāļāļēāļ 18
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
22. 4
4. āļĨāļēāļāđāļāļāļāļ TextField āļāļāļĒ&āļ āļēāļĒāđāļāđāļŦāļāļ Basic āļĄāļēāđāļ§āđāļāļŦāļāļēāļāļēāļāļāļēāļĢāļāļāļāđāļāļāļāļāļ Page1.jsp āđāļ
āļāļēāđāļŦāļāļāļāļāļĢ&āļāļāđāļŠāļāļāļāļēāļāļāļ
5. āđāļāļŦāļāļēāļāļēāļ Properties āļŠāļēāļŦāļĢāļ TextField1 āđāļŦāđāļāļĨāļĒāļāļāļē columns āđāļ$āļ 60 āđāļĨāļ°āļāļē id āļāļēāļ textField1
āđāļ$āļ answerTf
6. āđāļŦāļāļēāļāļēāļĢāļāļĨāļāļāļ§āļēāļ answerTf āđāļĨāļ§āđāļĨāļāļ Add Binding Attribute
7. āļĨāļēāļāđāļāļāļāļ Button āļāļāļĒ&āļ āļēāļĒāđāļāđāļŦāļāļ Basic āļĄāļēāđāļ§āđāļāļŦāļāļēāļāļēāļāļāļēāļĢāļāļāļāđāļāļāļāļāļ Page1.jsp āđāļāļāļēāđāļŦāļāļ
āļāļāļĢ&āļāļāđāļŠāļāļāļāļēāļāļāļ āđāļĨāļ§āđāļāđāļāļāļāļāļ§āļēāļĄāđāļ$āļ Twitter Notification
8. āđāļāļŦāļāļēāļāļēāļ Properties āļŠāļēāļŦāļĢāļ Button āđāļŦāđāļāļĨāļĒāļāļāļē id āļāļēāļ button1 āđāļ$āļ sendButton
āļāļāļāļāļāļāļāļĄāļēāļāļ°āđāļāļāļāļēāļĢāđāļāļĒāļ Source code āđāļ"āļāļāļēāļŦāļāļāļāļēāļĢāļāļēāļāļēāļāļāļāļāļāļēāļĢāļāļāļ6āļĄ Twitter Notification āđāļāļĒāļĄ
āļāļāļāļāļāļāļēāļĢāļāļēāļāļēāļāļāļāļ
9. āđāļāļŦāļāļēāļ+āļēāļ editor āđāļŦāļāļĨāļāļĄāļēāđāļĨ"āļāļāđāļāļ Design āđāļĨāļ§āļāļāļāļāđāļ-āļĨāļāļĨ-:āļāļāļ6āļĄ Twitter Notification
10. āđāļĨ"āļāļāđāļāļ Services āđāļĨāļ§āļāļĒāļēāļĒāđāļŦāļāļ Web Services > Twitter > What are you doing service >
statuses > [update.{format}]
11. āļĨāļēāļāđāļāļāļĢ0āļ§-āļŠ updateStatus āļĄāļēāđāļ§āđāļāļŦāļāļēāļ+āļēāļ editor āļ2āļāđāļŠāļāļ source code āđāļāļāļēāļŠāļ action āļāļāļāļ6āļĄ āđāļĨāļ°
āđāļŦāđāļāđāļ source code āļāļāļ
public String sendButton_action() {
try {
String status = (String) answerTf.getValue();
String inReplyToStatusId = null;
String format = "xml";
RestResponse result = TwitterWhatAreYouDoingService.updateStatus(status, inReplyToStatusId,
format);
if (result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.StatusType.class)
instanceof twitter.whatareyoudoingservice.twitterresponse.StatusType) {
twitter.whatareyoudoingservice.twitterresponse.StatusType resultObj =
result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.StatusType.class);
} else if (result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.NilClasses.class)
instanceof twitter.whatareyoudoingservice.twitterresponse.NilClasses) {
twitter.whatareyoudoingservice.twitterresponse.NilClasses resultObj =
result.getDataAsObject(twitter.whatareyoudoingservice.twitterresponse.NilClasses.class);
}
//TODO - Uncomment the print Statement below to print result.
//System.out.println("The SaasService returned: "+result.getDataAsString());
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
23. 5
āđāļĢāļēāļāļ°āļāļāļāļ4āļēāļāļēāļĢāļĢāļ°āļ6 username āđāļĨāļ° password āļāļāļ Twitter āđāļāļĒāļāļēāļĢāļ4āļēāļŦāļāļāļ)āļē properties āļāļāļĒ()āđāļ
āđāļāļĨW twitterwhatareyoudoingserviceauthenticator.properties āļāļāļĒ()āđāļāđāļŦāļāļ TwitterJSF > Source
Packages > org.netbeans.saas.twitter āļāļāļāļ§āļāļĒ)āļēāļ
# To change this template, choose Tools | Templates
# and open the template in the editor.
username=thananum@yahoo.com
password=xxxxxxxx
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļŠāļāļāļĢāļāđāļāļĢāđāļāļĢāļĄāļāđāļĨāļ§āļāļāļĨāļāļāļsāļāļāļāļāļāļ§āļēāļĄāļāļāļĢ(āļ āļāļēāļāļāļāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ°āđāļĢāļĒāļāļ(āļāļĨāļāļ
āļāļēāļĢāļŠ)āļāļāļāļāļ§āļēāļĄāđāļāļĒāļ Twitter āđāļāļāļēāļāđāļ§Māļ Twitter āļŦāļĢāļāļāļĢāļāļāđāļĢāļēāđāļāļāļĄāđāļĒāļ Twitter āđāļāļĒāļ Facebook āđāļĢāļēāļāļ°
āļŠāļēāļĄāļēāļĢāļāđāļŦMāļāļāļēāļĢāļāļāđāļāļāđāļ§Māļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
24. 6
āļāļēāļĢāļŠāļĢāļēāļ Web Application āļŠāļēāļŦāļĢāļāļŠāļāļāļāļŦāļĄāļēāļĒāđāļ Google Calendar āđāļāļĒāļ Twitter
āļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļŠāļĢāļēāļ Web Application āđāļāļĒāđāļāđāļ"āļāļāļēāļāļēāļĢāđāļŠāļāļāļāļāļŦāļĄāļēāļĒāļāļēāļ Google Calendar
āđāļĨāļ§āđāļĨ"āļāļāļāļāļŦāļĄāļēāļĒāđāļ"āļāļŠ+āļāđāļāļĒāļ Twitter āđāļāļĢāđāļāļĢāļĄāļāļ°āļ&āļāļāļēāļŦāļāļāđāļŦāļāļĒ&+āļ āļēāļĒāđāļ Web Project āļāļ"āļ TwitterTester
āļāļĄāđāļāļĨ0āļ+āļēāļāđāļ"āļ
1. CalendarTwitter.html
āđāļāļāļāļēāļĢāđāļŠāļāļ 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
35. 5
Object id = (Object) new Integer(request.getParameter("hospital_id"));
BkkHospital hospital = bkkHospitalFacade.find(id);
String address = hospital.getName() + ", " + hospital.getCity();
java.lang.Integer zoom = 15;
String iframe = "false";
out.println("<h1>Google Map for " + hospital.getName() + "</h1>");
RestResponse result = GoogleMapService.getGoogleMap(address, zoom, iframe);
out.println(result.getDataAsString());
} catch (Exception ex) {
ex.printStackTrace();
}
out.println("</body>");
out.println("</html>");
out.close();
}
7. āđāļāļĢāđāļāļĢāļĄāļāļāļ°āđāļĢāļĒāļāđāļāđāļ§5āļāđāļāļāļĢ0āļ§-āļŠāļāļāļ Google Map āļ2āļāđāļĢāļēāļāļ°āļāļāļāļāļēāļāļēāļĢāļĨāļāļāļ°āđāļāļĒāļāļ url āļāļ"āļ
http://code.google.com/apis/maps/signup.html āđāļāļĒāļāļēāļŦāļāļāļ+āļē My web site URL āđāļāļ
http://localhost:8080 āđāļĨāļ§āļāļāļ6āļĄ Generate API Key
8. āļāļēāļāļēāļĢāļ5āļāļāļ@Aāļ+āļē API Key āļāđāļāđāļāđāļŠ+āđāļāđāļāļĨ0āļāļ"āļ googlemapservices.properties āļāļāļĒ&+āļ āļēāļĒāđāļāđāļŦāļāļ
HospitalGoogleMap > Source Packages > org.netbeans.saas.google āļāļāļāļ§āļāļĒ+āļēāļāđāļ+āļ
api_key=ABQIAAAAMB8Fi4WQk4tMcbmiA9JGFhTwM0brOpm-All5BF6PoaKBxRWWERSQ1U63ApJ18ThqyosJ6592jq20Bg
āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄ
1. āļāļēāļāļēāļĢ Build āđāļĨāļ° Deploy āđāļāļĢāđāļāļĢāļĄ BkkHospitalGoogleMap
2. Run āđāļāļĢāđāļāļĢāļĄ BkkHospitalGoogleMap
3. āđāļĨ"āļāļ URL āļāļāļ Web Browser āđāļāļāļāļ°āđāļāļāļĨāļĨāļāļ0āđāļāļāļēāļĢāļĢāļāđāļāļĢāđāļāļĢāļĄāļāļāļāļ§āļāļĒ+āļēāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
36. 6
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
37. 7
Exercise 6: Developing a simple synchronous
BPEL program
āđāļāļāļāļāļŦāļāļāđāļāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ BPEL āđāļāļāđāļŠāļāļāļāļ§āļāļĒ)āļēāļāļāļēāļĢāđāļāļĒāļ Business Process āđāļāļ
Synchronous āđāļāļāļāļāļŦāļāļāļāļ°āļāļ2āļāļēāļĒāļāļēāļĢāđāļ NetBeans āđāļāļāļŠāļĢāļēāļāđāļāļĨW XML Schema, āđāļāļĨW WSDL āđāļĨāļ°āđāļāļĨW
BPEL āđāļāļĢāđāļĢāļĄ BPEL Process āļāļāļ°āļāļāļāļēāļ-āļāđāļāļāļ6āļĢāļāļĢāļĢāļĄāđāļāļāļ4āļēāļāļēāļĢāļāļāļĨāļāļāļāļāļāļ§āļēāļĄ
āļāļāļāļāļāđāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
1. āļāļāļāļēāđāļāļĢāđāļMāļ HelloBPEL
2. āļāļāļāļē XML Schema
3. āļāļāļāļēāđāļāļĨW WSDL
4. āļāļāļāļē BPEL Process
5. āļāļāļāļēāđāļāļĢāđāļMāļ Composite Application
āļāļēāļĢāļ#āļāļāļēāđāļāļĢāđāļ`āļ HelloBPEL
āđāļāļāļāļāļŦāļāļāļāļ°āļ4āļēāļāļēāļĢāļŠāļĢāļēāļāđāļāļĢāđāļMāļāļŠ4āļēāļŦāļĢāļ Service Oriented Architecture āļ-āļāļĄāļēāđāļŦāļĄ) āđāļāļĒāļāļ°āļĄāļāļāļāļāļ
āļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File => New Project..
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ SOA āđāļĨāļ° Projects āđāļāļ BPEL Module āđāļĨāļ§āļāļ
Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ HelloBPEL āđāļĨāļ§āļāļ Finish
āļāļēāļĢāļ#āļāļāļē XML Schema
āļāļāļāļāļāļāļāđāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW XML Schema āđāļāļāļ4āļēāļŦāļāļāļĢ(āļāđāļāļāļāļāļāđāļāļĨW XML āļāļ Listing āļ 1 āļ-āļ
āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āļĄ Wizard āđāļāļāļēāļĢāļŠāļĢāļēāļ XML Schema āļāļāđāļāļĄāļ2 āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
38. 8
1) āļŠāļĢāļēāļāđāļāļĨW SampleData.xsd
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ HelloBPEL āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Process Files āļāļēāļāļāļāđāļĨāļāļāļ4āļē
āļŠāļ New > Other..
2. āđāļāđāļāļāļ°āļĨMāļāļ New File āđāļĨāļāļ Categories: āđāļāļ XML āđāļĨāļ° File Types: āđāļāļ XML Schema āđāļĨāļ§āļāļ
Next
3. āļ4āļēāļŦāļāļ File Name: āđāļāļ SampleData āđāļĨāļ§āļāļ Finish
4. āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨW SampleData.xsd āļāļāļĢ(āļ
2) āļŠāļĢāļēāļ Complex Type āļŠ4āļēāļŦāļĢāļ XML schema
1. āđāļāđāļāļĨW SampleData.xsd āđāļĨāļāļāđāļāļ Design āđāļĨāļ§āļĨāļēāļāđāļāļāļāļ Complex Type āđāļāļŦāļāļēāļ)āļēāļ Palette
āļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ Complex Type
2. āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āđāļ2āļĄ complex type āđāļŦāļĄ)āļāļāļ newComplexType āđāļŦāļ4āļēāļŦāļāļāļāļāđāļŦāļĄ)āđāļāļ
simpleProcess āļāļ°āđāļāļāļĨāļĨāļāļWāļāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
39. 9
3) āļāļēāļĢāđāļ2āļĄ local element āļŠ4āļēāļŦāļĢāļ simpleProcess
1. āđāļāđāļāļĨW SampleData.xsd āđāļĨāļāļāđāļāļ Design āđāļĨāļ§āļĨāļēāļāđāļāļāļāļ Element āđāļāļŦāļāļēāļ)āļēāļ Palette āļĄāļēāđāļ§āļ āļēāļĒ
āđāļāđāļŦāļāļ simpleProcess āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āđāļ2āļĄāđāļŦāļāļāđāļŦāļĄ)āļāļ newElement
2. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ newElement āđāļĨāļ§āđāļĨāļāļ Properties
3. āđāļāđāļāļāļ°āļĨMāļāļ newElement āļ4āļēāļŦāļāļāļ)āļē Name: āđāļāļ paramA āđāļĨāļ°āđāļĨāļāļāļ6zāļĄ ellipse (...) āļāļ)āļē Definition
āđāļĨāļ§āļāļĒāļēāļĒāđāļŦāļāļ Built-in Types āđāļ List āđāļĨāļ§āđāļĨāļāļāđāļŦāļāļ string āđāļāļĒāđāļĨāļ§āļāļāļ6zāļĄ Close āļāļ°āđāļāļāļĨāļĨāļāļWāļāļ
āļĢ(āļ
4) āļāļēāļĢāđāļ2āļĄ global element
1. āđāļāđāļāļĨW SampleData.xsd āđāļĨāļāļāđāļāļ Design āđāļĨāļ§āļĨāļēāļāđāļāļāļāļ Element āđāļāļŦāļāļēāļ)āļēāļ Palette āļĄāļēāđāļ§āļ āļēāļĒ
āđāļāđāļŦāļāļ Element āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āđāļ2āļĄāđāļŦāļāļāđāļŦāļĄ)āļāļ newElement āļ āļēāļĒāđāļāđāļŦāļāļ Element
2. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ newElement āđāļĨāļ§āđāļĨāļāļ Properties
3. āđāļāđāļāļāļ°āļĨMāļāļ newElement āļ4āļēāļŦāļāļāļ)āļē Name: āđāļāļ typeA āđāļĨāļ°āđāļĨāļāļāļ6zāļĄ ellipse (...) āļāļ)āļē Definition
āđāļĨāļ§āļāļĒāļēāļĒāđāļŦāļāļ Complex Types āđāļ List āđāļĨāļ§āđāļĨāļāļāđāļŦāļāļ simpleProcess āđāļāļĒāđāļĨāļ§āļāļāļ6zāļĄ Close āļāļ°
āđāļāļāļĨāļĨāļāļWāļāļāļĢ(āļ
4. āļāļāļ6zāļĄ Save
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
40. 10
Listing āļ 1 āđāļāļĨ0 SampleData.xsd
<?xml version="1.0" encoding="UTF-8"?>
<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
āļāļāļāļāļāļāļāđāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW WSDL āļŠ4āļēāļŦāļĢāļāļ2āļĒāļēāļĄāđāļ§MāļāđāļāļāļĢWāļ§2āļŠāļāļāļ°āđāļāđāļāđāļāļĢāđāļMāļ āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢ
āļāļāļāļēāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ HelloBPEL āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Process Files āļāļēāļāļāļāđāļĨāļāļāļ4āļē
āļŠāļ New > WSDL Document...
2. āđāļāđāļāļāļ°āļĨMāļāļ New WSDL Document āļ4āļēāļŦāļāļ File Name: āđāļāļ HelloSample āđāļĨāļāļāļ)āļāļ Import XML
Schema File(s) āđāļĨāļ§āđāļĨāļāļāđāļāļĨW src/SampleData.xsd āđāļāļĒāļāļēāļĢāļāļāļ6zāļĄ Browse āđāļĨāļ§āđāļĨāļāļāđāļāļĨWāļāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
41. 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
42. 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
43. 13
āļāļēāļĢāļ#āļāļāļē BPEL Process
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW BPEL āļŠ4āļēāļŦāļĢāļāļ2āļĒāļēāļĄ Business Process āļāļāļ°āđāļāđāļāđāļāļĢāđāļMāļ āđāļāļĒāļĄāļāļāļāļāļ
āļāļēāļĢāļāļāļāļēāļāļāļ
1) āļŠāļĢāļēāļāđāļāļĨW HelloProcess.bpel
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ HelloBPEL āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Process Files āļāļēāļāļāļāđāļĨāļāļāļ4āļē
āļŠāļ New > BPEL Process..
2. āļ4āļēāļŦāļāļ File Name: āđāļāļ HelloProcess āđāļĨāļ§āļāļ Finish
3. āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āļŠāļĢāļēāļāđāļāļĨW HelloProcess.bpel āđāļĨāļ°āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨWāđāļāđāļŦāļĄāļ
designer āļāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
50. 20
Exercise 7: BPEL for Writing to File
āđāļāļāļāļāļŦāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļ Business Process āđāļāļāđāļāļĒāļāļāļāļĄ(āļĨāļāđāļāļĢāļāļ(āđāļāļāļēāļāļĨāļāđāļāļĨW āđāļāļĒāđāļāđāļāļĢāđāļāļĢāļĄ
BPEL
āļāļāļāļāļāđāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
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
2. āļāļēāļĢāļ#āļāļāļēāđāļāļĨe WSDL āļŠSāļēāļŦāļĢ#āļ SOAPBinding
āļāļāļāļāļāļāļāđāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW WSDL āļŠ4āļēāļŦāļĢāļ SOAPBinding āļŠ4āļēāļŦāļĢāļāļ2āļĒāļēāļĄ Business Process āļāļāļ°
āļāļāļāļēāļ-āļ āđāļāļāđāļŦāļŠāļēāļĄāļēāļĢāļāđāļĢāļĒāļāđāļāđāļāļāđāļ§MāļāđāļāļāļĢWāļ§2āļŠāđāļ āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
3. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ FileBPEL āđāļŦāđāļĨāļāļ New > WSDL Document ..
4. āđāļāđāļāļāļ°āļĨMāļāļ New WSDL Document āļ4āļēāļŦāļāļ File Name: āđāļāļ DataIO āļ4āļēāļŦāļāļ WSDL Type: āđāļāļ
Concrete WSDL Document āđāļĨāļ°āļ4āļēāļŦāļāļ Binding āđāļāļ SOAP āđāļĨāļ° Types āđāļāļ RPC Literal āļāļ
āđāļŠāļāļāđāļāļĢ(āļāļ 1 āđāļĨāļ§āļāļ Next
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
51. 21
āļĢ5āļĢ5āļāļ 1 āđāļŠāļāļāļāļēāļĢāļ4āļēāļŦāļāļāļ)āļē WSDL Document
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
71. 41
āđāļŠāļāļāđāļāļĢ(āļāļ 10
āļĢ5āļāļ 10 āđāļŠāļāļ Business Rule āļĢāļ°āļŦāļ§)āļēāļ invokeWriteToDB āđāļĨāļ° end
5. āđāļĢāļēāļāļ°āđāļāđāļāļĢāđāļāļĢāļĄ BPEL āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 11
āļĢ5āļāļ 11 āđāļŠāļāļ BPEL Process āļāļāļāļāļāļĢāļ°āļāļ
6. Clean and Build āđāļāļĢāđāļMāļ
6. āļāļēāļĢāļ#āļāļāļēāđāļāļĢāđāļ`āļ Composite Application
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļ Composite Application āđāļāļāļāļĢāļ DBBPEL āļāļ BPEL Engine āļāđāļāļĄāļēāļāļĢāļāļēāļ
JBI āđāļāļĒāļĄāļāļāļāļāļāļāļāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
72. 42
1. āđāļĨāļāļāđāļĄāļ( File > New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ SOA āđāļĨāļ° Projects āđāļāļ Composite
Application āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ DBCompositeApp āđāļĨāļ§āļāļ Finish
4. āđāļāļŦāļāļēāļ)āļēāļ Project āđāļĨāļāļāđāļŦāļāļ DBCompositeApp āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāđāļĨāļāļ Add JBI Module
5. āđāļŦāđāļĨāļāļāđāļāļĢāđāļMāļ DBBPEL āđāļĨāļ§āļāļāļ6zāļĄ Add Project JAR Files
6. āđāļāļĢāđāļĢāļĄ NetBeans āļāļ°āđāļ2āļĄāđāļŦāļāļ DBBPEL.jar āļ āļēāļĒāđāļ DBCompositeApp > JBI Module
7. āļāļĨ2[āļāļāļ§āļēāļ DBCompositeApp āđāļĨāļāļ Clean and Build
8. āļāļĨ2[āļāļ Service Assembly āļāļ°āđāļŦMāļāļāļĨāļĨāļāļWāļāļāđāļŠāļāļāđāļāļĢ(āļāļ 12
āļĢ5āļāļ 12 āđāļŠāļāļ Service Assembly āļāļāļ DBCompositeApp
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
73. 43
<tab:firstName>Somjai</tab:firstName>
</tab:employee_Record>
7. āļāļāļ6zāļĄ Save āđāļĨāļāļāđāļŦāļāļ TestCase1 āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāđāļĨāļāļ Run
8. āļāļ°āđāļŦMāļāļāļĨāļĨāļāļWāļāļĢāļēāļāļāđāļāđāļāļĨW Output.xml āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 13
āļĢ5āļāļ 13 āđāļŠāļāļāļāļĨāļĨāļāļWāļāđāļāļāļēāļāļāļēāļĢāļĢāļ TestCase1
9. āđāļĨāļ°āđāļāļāļāļĄ(āļĨāļ-āļāđāļāļēāđāļāļāļĒ()āđāļāļāļēāļāļāļāļĄ(āļĨāļāļāđāļŠāļāļāđāļāļĢ(āļāļ 14
āļĢ5āļāļ 14 āđāļŠāļāļāļāļāļĄ(āļĨāļāļāļĒ()āđāļāļāļēāļĢāļēāļ Employee āđāļāļāļēāļāļāļāļĄ(āļĨ soa
8. āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāļlāļēāļ Web Application
āļ4āļēāļāļēāļĢāļāļāļŦāļēāļ4āļēāđāļŦāļ)āļ URL āļāļāļ soap:address āļāļēāļĄāļāļāļāļāļāļāļāļ
1. āļāļĨ2[āļāļ Service Assembly āđāļ DBCompositeApp āđāļĨāļ°āļāļĨ2[āļāļ DatabaseWSDLPort
2. āđāļāļŦāļāļēāļ)āļēāļ properties āđāļŦāļ4āļēāļāļēāļĢ copy āļ)āļēāļāļāļ soap:address
3. āļāļāļŠāļāļāđāļāļĒāđāļ~āļ Web Browser āđāļĨāļ§ paste āļ)āļēāļ copy āđāļ§ āļāļēāļāļāļāđāļŦāļ4āļēāļāļēāļĢāđāļāļĨāļĒāļāļ)āļēāļāļāļ URL āđāļŦāđāļāļ
āļāļāļ http://localhost:9080/DatabaseWSDLService/DatabaseWSDLPort?WSDL
āļāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application āđāļāļāđāļŦāļ(āđāļāļsāļāļāļ)āļēāļāļāļĄ(āļĨāļ)āļēāļāđ āļāļēāļāļāļāđāļāļĢāđāļāļĢāļĄāļāļ°āļ4āļēāļāļēāļĢāđāļāļĒāļ
āļāļāļĄ(āļĨāļĨāļāļāļēāļāļāļāļĄ(āļĨ āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File > New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ Web āđāļĨāļ° Web Application āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ DBBPUI āđāļĨāļ§āđāļĨāļāļ Project Location āđāļāļ folder āļāđāļĢāļēāļāļāļāļāļēāļĢāļāļ°āđāļMāļ
āđāļāļĨWāđāļ§
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
74. 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
āļĢ5āļāļ 15 āđāļŠāļāļāļāļēāļĢāļāļāļāđāļāļāļŦāļāļē Page1.jsp
9. āļ4āļēāļŦāļāļāļ)āļēāļ6āļāļŠāļĄāļāļ2āļāļāļāļāļāļāđāļMāļāļ)āļēāļāđ āđāļ Page Layout āļ āļāļāđāļāļāļēāļĢāļēāļāļ 1
āļāļēāļĢāļēāļāļ 1 āđāļŠāļāļāļāļēāļĢāļ4āļēāļŦāļāļāļ)āļē properties āđāļŦāļāļāļāļāļāđāļâāļāļ)āļēāļāđ
Object id text
Type
Label lbID ID:
Text Field inputID
Label lbFirstName FirstName:
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
75. 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
10. āļāļāļ6zāļĄ Save
11. āļ4āļēāļāļēāļĢāļāļĨ2[āļāļāļ§āļēāļ inputID āđāļĨāļ§āđāļĨāļāļ Add Binding Attribute āļāļāđāļŠāļāļāđāļāļĢ(āļāļ 16
āļĢ5āļāļ 16 āđāļŠāļāļāļāļēāļĢ Add Binding Attribute
12. āļ4āļēāļāļēāļĢAdd Binding Attribute āļ inputFirstName, inputLastName āđāļĨāļ° inputSalary
13. āļāļāđāļ2āļĨāļāļĨ2[āļāļāļ6zāļĄ Submit āļŦāļāļēāļ+āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļ Java āđāļĨāļ°āđāļŠāļāļ source code āļ4āļēāļāļēāļĢāļāļĨ2[āļāļāļ§āļē
āđāļāđāļĄāļāļāļ btnSubmit_action āđāļĨāļ§āđāļĨāļāļ Web Service Client Resources > Call Web Service
Operation āđāļĨāļāļāđāļāļ DatabaseWSDLOperation āđāļŦāđāļāđāļ source code āļāļāļ
public String btnSubmit_action() {
try { // Get port
org.netbeans.j2ee.wsdl.dbbpel.databasewsdl.DatabaseWSDLPort-
Type port = service_1.getDatabaseWSDLPort();
// Retrieve values in text fields on UI
java.lang.String id = (String) inputID.getText();
java.lang.String firstName = (String)
inputFirstName.getText();
java.lang.String lastName = (String) inputLastName.getText();
String temp = (String) inputSalary.getText();
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
76. 46
int salary = Integer.parseInt(temp);
org.netbeans.j2ee.xsd.tableschema.Employee inputData =
new
org.netbeans.j2ee.xsd.tableschema.Employee();
// Set input values
EmployeeRecord emp = new EmployeeRecord();
emp.setId(id);
emp.setFirstName(firstName);
emp.setLastName(lastName);
emp.setSalary(salary);
inputData.getEmployeeRecord().add(emp);
// Call Web Service
java.lang.String result =
port.databaseWSDLOperation(inputData);
resultText.setText("Result = " + result);
} catch (Exception ex) {
resultText.setText(ex);
}
return null;
}
Clean and Build āđāļĨāļ° Run āđāļāļĢāđāļMāļ
āļĢ5āļāļ 17 āđāļŠāļāļāļāļĨāļĨāļāļWāļŦāļāļē Page1.jsp
āđāļĨāļ°āđāļāļāļāļĄ(āļĨāļ-āļāđāļāļēāđāļāļāļĒ()āđāļāļāļēāļāļāļāļĄ(āļĨāļāļāđāļŠāļāļāđāļāļĢ(āļāļ 18
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
77. 47
āļĢ5āļāļ 18 āđāļŠāļāļāļāļāļĄ(āļĨāļāļāļĒ()āđāļāļāļēāļĢāļēāļ Employee āđāļāļāļēāļāļāļāļĄ(āļĨ soa
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
78. 48
Exercise 9: BPEL for Sending Message to
a JMS Queue
āđāļāļāļāļāļŦāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļ Business Process āđāļāļāļŠ)āļāļāļāļāļ§āļēāļĄāđāļāļĒāļ JMS Queue āđāļāļĒāļāļēāļĢāđāļ JMS
Binding Component āļāļāļĒ() OpenESB āđāļĨāļ°āļāļ°āđāļāđāļāļĢāđāļāļĢāļĄ HermesJMS āđāļāļāđāļĢāļĒāļāļ(āļāļāļāļ§āļēāļĄāļāļāļĒ()āđāļ Queue
āļāļāļāļāļāđāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
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
āđāļāļĢāđāļāļĢāļĄ HermesJMS āđāļāļāđāļāļĢāđāļāļĢāļĄ Open Source āļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļāļēāļĢāļāļāļāļēāļĢ Meessage Queues
āļāļāļ Messaging Server āđāļ āđāļāļāļāļāļŦāļāļāļāļ°āđāļĨāļāļāđāļāđāļāļĢāđāļāļĢāļĄāļāđāļāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļāļāļ§āļēāļĄāļāļŠ)āļāļĄāļēāļĒāļ JMS
Queue āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ° download āđāļāļĢāđāļāļĢāļĄāļāđāļāļ http://www.hermesjms.com/confluence/display/HJMS/
Home āđāļāļĒāļāļēāļĢāđāļĨāļāļāđāļāļĨW hetmesJMS version 1.13 āđāļĨāļ§āļ2āļāļāļāđāļāļĨWāđāļāļ jar āđāļāļĒāļāļēāļĢāđāļĢāļĒāļāđāļāļ4āļēāļŠāļ
āđāļĄāļāļ2āļāļāļāđāļāļĢāđāļāļĢāļĄāđāļĢāļĒāļāļĢāļāļĒāđāļĨāļ§ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļ4āļēāļāļēāļĢ config āđāļāļĢāđāļāļĢāļĄāļāđāļāļāļēāļĄāļāļāļāļāļāļāļāļ
1. āđāļ~āļāđāļāļĢāđāļāļĢāļĄ HermesJMS āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļ sessions āđāļĨāļ°āđāļĨāļāļāļ4āļēāļŠāļ New / NewSession
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
79. 49
2. āđāļāđāļāļāļ°āļĨMāļāļ Preference āđāļŦāđāļāļĨāļĒāļāļāļāļāļ§āļēāļĄāļāļēāļ <new> āđāļāļ JavaMQ āļāļāļĢ(āļ āđāļĨāļ§āđāļĨāļāļāđāļāļ Provider
āļāļāļĒ()āļāļēāļāļĨ)āļēāļāļāļāļāđāļāļāļ°āļĨMāļāļ
3. āļāļĨ2[āļāļāļ§āļēāļāđāļāļāļ°āļĨMāļāļāđāļāđāļāļ Provider āđāļĨāļ§āđāļĨāļāļāļ4āļēāļŠāļ Add Group
4. āļ4āļēāļŦāļāļāļ)āļē Classpath group name āđāļāļ JavaMQClasspathGroup āđāļĨāļ§āļāļ OK
5. āļāļĒāļēāļĒāđāļŦāļāļ JavaMQClasspathGroup āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļ Library āđāļĨāļ°āđāļĨāļāļāļ4āļēāļŠāļ Add JAR(s)
6. āđāļĨāļāļāđāļāļĨWāđāļāļ jar āļ)āļāđāļāļāļāļāļĒ()āđāļāđāļāđāļĢMāļāļāļāļĢāļāļāļ GlassFish ESB āļāļāļ imq/lib
4. fscontext.jar
5. imq.jar
6. imqadmin.jar
7. imqbroker.jar
8. imqjmx.jar
9. imqutil.jar
10. imqxm.jar
11. jaxm-api.jar
12. jhall.jar
13. jms.jar
7. āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļāđāļāļāļ°āļĨMāļāļāļāļāļĢ(āļ āđāļĨāļ§āļāļāļ6zāļĄ Apply āđāļĨāļ§āļāļ OK āđāļāļāļ~āļāđāļāļāļ°āļĨMāļāļ Preference
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
80. 50
8. āļāļĒāļēāļĒāđāļŦāļāļ sessions āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļ JavaMQ āđāļĨāļ§āđāļĨāļāļāļ4āļēāļŠāļ Edit.. āļāļāļĢ(āļ
9. āđāļāđāļāļāļ°āļĨMāļāļ Preference āđāļĨāļāļāđāļāļ Session āđāļĨāļ§āđāļĨāļāļ JavaMQClasspathGroup āļŠ4āļēāļŦāļĢāļ Loader
āđāļĨāļ° com.sun.messaging.QueueConnectionFactory āļŠ4āļēāļŦāļĢāļ Class āļāļāļĢ(āļ
10. āļāļāļ6zāļĄ Apply āļāļēāļĄāļāļ§āļĒ OK āđāļāļāļ~āļāđāļāļāļ°āļĨMāļāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
81. 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
82. 52
2. āļāļēāļĢāļrāļāļ#sāļ āđāļĨāļ°āļāļĢāļ§āļāļŠāļāļ JMS Binding Component
āđāļāļāļāļāļŦāļāļāļāļāļāļāļēāļĢāđāļ JMS Binding Component āļāļ2āļāļāļāļāļĒ()āđāļ OpenESB āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĢāļ§āļāļŠāļāļ
Service Engines āđāļĨāļ° Binding Components āļāļ2āļāļāļāļāļĒ()āđāļ Open ESB āļāļāļ GlassFish V2 āđāļāđāļāļĒāļāļēāļĢāđāļ~āļ
āđāļāļĢāđāļāļĢāļĄ NetBeans āđāļĨāļ§āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Services āđāļĨāļ§āļāļĒāļēāļĒāđāļŦāļāļ Servers > GlassFish V2 > JBI āđāļĢāļēāļāļ°āđāļŦMāļ
āđāļĄāļ(āļĨāļ)āļēāļāđ āļāļāļāļ§āļāļĒ)āļēāļāđāļāļĢ(āļ
āļāļē GlassFish V2 āđāļĄ)āļĄ sun-jms-binding āļāļĒ()āđāļŦāđāļāļ4āļēāļāļēāļĢ download āđāļĄāļ(āļĨāļāđāļāļ https://open-
esb.dev.java.net/Components.html āļāļēāļāļāļāļ4āļēāļāļēāļĢāļ2āļāļāļāđāļāđāļāļĒāļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Binding Components āđāļĨāļ§
āđāļĨāļāļāļ4āļēāļŠāļ Install and Start.. āđāļāļĒāđāļĨāļāļāļ2āļāļāļāđāļāļĨWāļ download āļĄāļē
3. āļāļēāļĢāļ#āļāļāļēāđāļāļĢāđāļ`āļ JMSBPEL
āđāļāļāļāļāļŦāļāļāļāļ°āļ4āļēāļāļēāļĢāļŠāļĢāļēāļāđāļāļĢāđāļMāļāļŠ4āļēāļŦāļĢāļ Service Oriented Architecture āļ-āļāļĄāļēāđāļŦāļĄ) āđāļāļĒāļāļ°āļĄāļāļāļāļāļ
āļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File > New Project
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
83. 53
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ SOA āđāļĨāļ° Projects āđāļāļ BPEL Module āđāļĨāļ§
āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ JMSBPEL āđāļĨāļ§āļāļ Finish
4. āļāļēāļĢāļ#āļāļāļēāđāļāļĨe WSDL āļŠSāļēāļŦāļĢ#āļ JMS Binding
āļāļāļāļāļāļāļāđāļāđāļāļāļāļēāļĢāļ4āļēāļŦāļāļāđāļāļĨW WSDL āļāļĄ Binding āđāļāļ JMS āļŠ4āļēāļŦāļĢāļāļāļēāļĢāļŠ)āļāļāļāļāļ§āļēāļĄ āđāļāļĒāļĄāļāļ
āļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ JMSBPEL āđāļŦāđāļĨāļāļ New > WSDL Document ..
2. āđāļāđāļāļāļ°āļĨMāļāļ New WSDL Document āļ4āļēāļŦāļāļ File Name: āđāļāļ TestQueueWSDL āļ4āļēāļŦāļāļ WSDL
Type: āđāļāļ Concrete WSDL Document āđāļĨāļ°āļ4āļēāļŦāļāļ Binding āđāļāļ JMS āđāļĨāļ° Types āđāļāļ Send
āļāļēāļāļāļāļāļ Next
3. āđāļāļŦāļāļēāļāļāđāļ āļ4āļēāļŦāļāļāļ)āļē Connection URL: āđāļāļ mq://localhost:7676 āļāļ)āļē User Name āđāļāļ
admin āđāļĨāļ° Password āđāļāļ admin āļāļāļĢ(āļ āđāļĨāļ§āļāļ Next
4. āđāļāļŦāļāļēāļāļāđāļ āļ4āļēāļŦāļāļāļ)āļē Destination āđāļāļ TestQueue āļŠ)āļ§āļāļ)āļēāļāļāđāļŦāļāļāļāļēāļĄāļāļ4āļēāļŦāļāļāļĄāļē āđāļĨāļ§āļāļ
Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
84. 54
5. āļāļēāļĢāļ#āļāļāļēāđāļāļĨe WSDL āļŠSāļēāļŦāļĢ#āļ SOAPBinding
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW WSDL āļŠ4āļēāļŦāļĢāļ SOAPBinding āļŠ4āļēāļŦāļĢāļāļ2āļĒāļēāļĄ Business Process āļāļāļ°
āļāļāļāļēāļ-āļ āđāļāļāđāļŦāļŠāļēāļĄāļēāļĢāļāđāļĢāļĒāļāđāļāđāļāļāđāļ§MāļāđāļāļāļĢWāļ§2āļŠāđāļ āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ JMSBPEL āđāļŦāđāļĨāļāļ New > WSDL Document ..
2. āđāļāđāļāļāļ°āļĨMāļāļ New WSDL Document āļ4āļēāļŦāļāļ File Name: āđāļāļ JMSWSDL āļ4āļēāļŦāļāļ WSDL Type:
āđāļāļ Concrete WSDL Document āđāļĨāļ°āļ4āļēāļŦāļāļ Binding āđāļāļ SOAP āđāļĨāļ° Types āđāļāļ RPC Literal
āđāļĨāļ§āļāļ Next
3. āđāļāļŦāļāļēāļāļāđāļ āļŠ4āļēāļŦāļĢāļāļŠ)āļ§āļāļāļāļ Input: āļ4āļēāļŦāļāļ Message Part Name āđāļāļ inData āđāļĨāļ§āļ4āļēāļŦāļāļ
Element Or Type āđāļāļ xsd:String āđāļĨāļ°āļŠ4āļēāļŦāļĢāļāļŠ)āļ§āļāļāļāļ Output: āļ4āļēāļŦāļāļ Message Part Name āđāļāļ
outData āđāļĨāļ§āļ4āļēāļŦāļāļ Element Or Type āđāļāļ xsd:String āļāļēāļāļāļāļāļ Next āđāļĨāļ§āļāļ Finish
6. āļāļēāļĢāļ#āļāļāļē BPEL Process
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW BPEL āļŠ4āļēāļŦāļĢāļāļ2āļĒāļēāļĄ Business Process āļāļāļ°āđāļāđāļāđāļāļĢāđāļMāļ āđāļāļĒāļĄāļāļāļāļāļ
āļāļēāļĢāļāļāļāļēāļāļāļ
6.1 āļŠāļĢāļēāļāđāļāļĨW JMSProcess.bpel
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ JMSBPEL āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ New > BPEL Process
2. āļ4āļēāļŦāļāļ File Name: āđāļāļ JMSProcess āđāļĨāļ§āļāļ Finish
3. āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āļŠāļĢāļēāļāđāļāļĨW JMSProcess.bpel āđāļĨāļ°āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨWāđāļāđāļŦāļĄāļ
designer
6.2 āļāļēāļĢāđāļ2āļĄ partner link
1. āđāļāđāļāļĨW JMSProcess.bpel āđāļĨāļāļāđāļāļ Design āđāļĨāļ§āļĨāļēāļāđāļāļāļāļ JMSWSDL.wsdl āđāļāļŦāļāļēāļ)āļēāļ Project
āļĄāļēāđāļ§āđāļāđāļāļāđāļāļēāļāļēāļāļāļēāļĒāļĄāļāļ āļēāļĒāđāļāļŦāļāļēāļ)āļēāļ design
2. āļāļāđāļ2āļĨāļāļĨ2[āļāļāļĢāļāļāļāļāļ§āļēāļĄ PartnerLink1 āđāļĨāļ°āđāļāļĨāļĒāļāļāļāđāļāļ JMSWSDLPartnerLink
3. āļĨāļēāļāđāļāļāļāļ TestQueue.wsdl āđāļāļŦāļāļēāļ)āļēāļ Project āļĄāļēāđāļ§āđāļāđāļāļāđāļāļēāļāļēāļāļāļ§āļēāļĄāļāļ āļēāļĒāđāļāļŦāļāļēāļ)āļēāļ
design
4. āļāļāđāļ2āļĨāļāļĨ2[āļāļāļĢāļāļāļāļāļ§āļēāļĄ PartnerLink1 āđāļĨāļ°āđāļāļĨāļĒāļāļāļāđāļāļ TestQueuepartnerLink
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
87. 57
6. Clean and Build āđāļāļĢāđāļMāļ
7. āļāļēāļĢāļ#āļāļāļēāđāļāļĢāđāļ`āļ Composite Application
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļ Composite Application āđāļāļāļāļĢāļ JMSBPEL āļāļ BPEL Engine āļāđāļ
āļĄāļēāļāļĢāļāļēāļ JBI āđāļāļĒāļĄāļāļāļāļāļāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File > New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ SOA āđāļĨāļ° Projects āđāļāļ Composite
Application āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ JMSCompositeApp āđāļĨāļ§āļāļ Finish
4. āđāļāļŦāļāļēāļ)āļēāļ Project āđāļĨāļāļāđāļŦāļāļ JMSCompositeApp āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāđāļĨāļāļ Add JBI Module
5. āđāļŦāđāļĨāļāļāđāļāļĢāđāļMāļ JMSBPEL āđāļĨāļ§āļāļāļ6zāļĄ Add Project JAR Files
6. āđāļāļĢāđāļĢāļĄ NetBeans āļāļ°āđāļ2āļĄāđāļŦāļāļ JMSBPEL.jar āļ āļēāļĒāđāļ JMSCompositeApp > JBI Module
7. āļāļĨ2[āļāļāļ§āļēāļ JMSCompositeApp āđāļĨāļāļ Clean and Build
8. āļāļĨ2[āļāļ Service Assembly āļāļ°āđāļŦMāļāļāļĨāļĨāļāļWāļāļāđāļŠāļāļāđāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
88. 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>
7. āļāļāļ6zāļĄ Save āđāļĨāļāļāđāļŦāļāļ TestCase1 āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāđāļĨāļāļ Run
8. āđāļ~āļāđāļāļĢāđāļāļĢāļĄ HermesJMS āđāļĨāļ§āļāļĨ2[āļāļ TestQueue āļāļ°āđāļāļāļĨāļĨāļāļWāļāļāļāļ§āļāļĒ)āļēāļāđāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
89. 59
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
90. 60
Exercise 10: BPEL Invoking Web Services
āđāļāļāļāļāļŦāļāļāđāļāļāļāļēāļĢāđāļāļĒāļ Business Process āļāđāļĢāļĒāļāđāļ Web Service āļāļāļāļāļēāļ-āļāļĄāļēāđāļāļĒāđāļāļ4āļēāļŠāļ
Invoke āđāļāļāļāļāļŦāļāļāļāļ°āļāļāļāļē Web Services āļ-āļāļĄāļŠāļāļāļ6āļāļāļ DetermineRoomRate āđāļĨāļ°
CalculateBookingPayment āđāļāļĢāđāļāļĢāļĄ Business Process āļāļāļ°āļāļāļāļēāļ-āļāļāļ°āļ)āļēāļāļāļāļĄ(āļĨāļāļēāļĢāļāļāļāļāļāļāļĄāļē āđāļĨāļ§
āđāļĢāļĒāļāđāļāđāļ§MāļāđāļāļāļĢWāļ§2āļŠ DetermineRoomRate āđāļāļāļŦāļēāļāļāļĢāļēāļ)āļēāļāļāļ āļāļēāļāļāļāļāļ°āđāļĢāļĒāļāđāļāđāļ§MāļāđāļāļāļĢWāļ§2āļŠ
CalculateBookingPayment āđāļāļāļ4āļēāļāļ§āļāļ)āļēāļāļāļāļāļāļŦāļĄāļ āļāļēāļāļāļāļāļ°āđāļMāļāļāļāļĄ(āļĨāļāļēāļĢāļāļāļāļāļāļāļĨāļāļāļēāļāļāļāļĄ(āļĨ āļ-āļ
Business Process āđāļŦāļĄ)āļāļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļāļēāļĻāđāļāļ Web Service āđāļāļĒāđāļ WSDL āđāļĨāļ°āđāļĢāļēāļāļ°āļ4āļēāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
Web Application āđāļāļāđāļĢāļĒāļāđāļ Business Process āļāļ)āļēāļ WSDL āļāļāļāļĨ)āļēāļ§
āļāļāļāļāļāđāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
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
1. āļāļēāļĢāļ#āļāļāļē Determine Room Rate Web Services
āļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļĢāļāļāļāļē Web Service āļāļāļāļāļēāļāļēāļ EJB Module āļāļĄ Business Logic āđāļāļāļēāļĢāđāļāļ
āļĢāļēāļāļēāļāļāļāļ)āļāļāļ āļāļāļāļāļ°āļ4āļēāļŦāļāļāđāļŦ Web Service āļāļĄāļāļāđāļĄāļāļāļāđāļĨāļ° argument āļāļāļ
double getRate(String roomType)
1.1 āļāļēāļĢāļŠāļĢāļēāļ EJB Project
āđāļĢāļēāļāļ°āļ4āļēāļŦāļāļāđāļāļĢāđāļMāļāđāļŦāđāļāļ EJB Project āļāļāļāđāļāļāļāļāļēāļāđāļāļāļāļāļŦāļāļāļāļ°āļāļāļāļē Web Services āļāļēāļ
Session Bean āļ-āļāļĄāļāļāļāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĢāđāļMāļāļāļāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
91. 61
1. āđāļĨāļāļāđāļĄāļ( File => New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ Java EE āđāļĨāļ°āđāļĨāļāļ Project āđāļāļ EJBModule
āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ DetermineRoomRate āđāļĨāļ§āđāļĨāļāļ Project Location āđāļāļ folder āļāđāļĢāļē
āļāļāļāļāļēāļĢāļāļ°āđāļMāļ project āđāļ§ āļāļ Next
4. āļāļēāļāļāļāđāļĨāļāļ Server āđāļāļ GlassFish V2 āđāļāļĒāļ4āļēāļŦāļāļ Jave EE Version: āđāļāļ Java EE 5 āđāļĨāļ§āļāļ
Finish
1.2 āļāļēāļĢāļāļāļāļē Web Service
āļŦāļĨāļāļāļēāļĢāļāļāļāļē Web Services āļāļāļāļ āļāļ§āļĢāļāļ°āļ2āļĒāļēāļĄ interface āļ)āļāļāļāļāļ°āļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
implementation āļāļĨ)āļēāļ§āļāļāļāļāļāļ4āļēāļŦāļāļ XML Schema Definition (XSD) āļ)āļāļ āđāļĨāļ§āļ2āļĒāļēāļĄāđāļāļĨW WSDL āļ)āļāļāļāļāļ°
āļāļāļāļēāđāļāļĢāđāļāļĢāļĄāđāļāļāļēāļĢ implement āļ2āļĒāļēāļĄ WSDL āļāļāļāļĨ)āļēāļ§ āđāļ)āđāļāđāļāļĢāđāļMāļāļāđāļĢāļēāļāļ°āđāļāļ§2āļāļāļĒ)āļēāļāļ)āļēāļĒāđāļāļāļēāļĢāļŠāļĢāļēāļ
Web Service āđāļāļĒāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ implementation āļ-āļāļĄāļēāļ)āļāļ āđāļĨāļ§āđāļāđāļāļĢāđāļāļĢāļĄ NetBeans āļŠāļĢāļēāļ
Interface (WSDL āđāļĨāļ° XSD) āļāļŦāļĨāļ
āļāļāļāļāļāļāļēāļĢāļŠāļĢāļēāļ Web Service āļĄāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ DetermineRoomRate āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ New > Oth-
er...
2. āđāļāđāļāļāļ°āļĨMāļāļ New File āđāļŦāđāļĨāļāļ Categories āļāļāļ Web Services āđāļĨāļāļ File Types: āđāļāļ Web Ser-
vice āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļāļ)āļē Web Service Name āđāļāļ DetermineRateService āđāļĨāļ°āļ)āļē Package āđāļāļ ws āļŠ)āļ§āļāļ)āļēāļāļāđ
āđāļāļāļāļāļāļāļāđāļ§ āļāļāļĢ(āļāđāļĨāļ§āļāļ Finish
4. āđāļāļĢāđāļāļĢāļĄāļāļ°āļāļĢāļ°āļāļēāļĻ Web Services āļāļāļ DetermineRateService āđāļāđāļŦāļāļ Web Services āļāļāļ
āļŦāļāļēāļ)āļēāļ Project āđāļĨāļ°āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨWāļāļāļ DetermineRateService .java āđāļāļĒāļāļ°āđāļŠ
āļāļāđāļāļ Design
5. āđāļāļŦāļāļēāļ)āļēāļ Editor āļāļāļāđāļāļĨW DetermineRateService.java āđāļĨāļāļāđāļāļ Design āļāļāļ6zāļĄ Add
OperationâĶ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
92. 62
6. āđāļāđāļāļāļ°āļĨMāļāļ Add Operation āļ4āļēāļŦāļāļ Method āđāļāļ getRate āļāļ2āļāļāļāļ Return Type āđāļāļ double
āđāļĨāļ° āđāļ2āļĄ Input parameter āļāļ roomType āļāļ2āļ String āļāļāļĢ(āļāđāļĨāļ§āļāļ OK
7. āļāļĨ2[āļāļāđāļāļ Source āļāļāļ DetermineRoomRate.java āđāļĨāļ°āļāļĢāļāļāļĢ6āļāđāļĄāļāļāļ processBooking āļāļāļ
@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;
}
}
8. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ DetermineRoomRate āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ Clean and Build āļāļēāļāļāļāļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ
DetermineRoomRate āļāļāļāļĢāļ āđāļĨāļ§āđāļĨāļāļ Deploy
2. āļāļēāļĢāļ#āļāļāļē Calculating Booking Payment Web Services
āļāļāļāļāļāļāļ)āļēāļāļĄāļēāđāļāļāļāļēāļĢāļāļāļāļē Web Service āļāļēāļ EJB Module āđāļāļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļĢāļāļāļāļē Web
Service āļāļāļ§2āļāļŦāļ-āļ āđāļāļĒāļāļēāļĢāļāļāļāļēāļāļēāļ Web Application āđāļāļĒāļĄ Business Logic āđāļāļāļēāļĢāļ4āļēāļāļ§āļāļĢāļēāļāļēāļ)āļēāļāļāļāļ
āļāļāļāļ4āļēāļĢāļ° āļāļāļāļāļ°āļ4āļēāļŦāļāļāđāļŦ Web Service āļāļĄāļāļāđāļĄāļāļāļāļāļāļ getPayment āļ-āļāļāļ°āļŠ)āļāļāļāļĄ(āļĨāļāļ2āļ double āļāļĨāļ
āļĄāļēāđāļĨāļ°āļĄ argument āļāļāļ dayLength āļāļ2āļ int āđāļĨāļ° roomRate āļāļ2āļ double āļāļāļāļāļēāļāļāļāļāļāļāļāļāļāļ°āļŠāļēāļ2āļāļāļēāļĢ
āđāļ NetBeans āđāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW XSD āđāļĨāļ° WSDL XML document āļ-āļāļĄāļē
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
93. 63
2.1 āļāļēāļĢāļŠāļĢāļēāļ Web Application Project
āđāļĢāļēāļāļ°āļ4āļēāļŦāļāļāđāļāļĢāđāļMāļāđāļŦāđāļāļ EJB Project āļāļāļāđāļāļāļāļāļēāļāđāļāļāļāļāļŦāļāļāļāļ°āļāļāļāļē Web Services āļāļēāļ
Session Bean āļ-āļāļĄāļāļāļāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĢāđāļMāļāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File => New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ Java Web āđāļĨāļ°āđāļĨāļāļ Projects āđāļāļ Web Ap-
plication āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ CalculatePayment āđāļĨāļ§āđāļĨāļāļ Project Location āđāļāļ folder āļāđāļĢāļē
āļāļāļāļāļēāļĢāļāļ°āđāļMāļ project āđāļ§ āļāļ Next
4. āļāļēāļāļāļāđāļĨāļāļ Server āđāļāļ GlassFish V2 āđāļāļĒāļ4āļēāļŦāļāļ Jave EE Version: āđāļāļ Java EE 5 āđāļĨāļ§āļāļ
Finish
2.2 āļāļēāļĢāļāļāļāļē Web Service
āļāļāļāļāļāļāļēāļĢāļŠāļĢāļēāļ Web Service āļāļ°āđāļāļāđāļ)āļāđāļāļĒāļ§āļāļāļāļēāļĢāļāļāļāļēāđāļāļāļāļāļāļāļ 1.2 āđāļāļĒāļāļ°āļ4āļēāļŦāļāļ Web
Services āđāļŦāļĄāļāļāļ§)āļē CalculateBookingPayment āļāļĒ()āđāļ Package āļāļāļ payment āđāļĨāļ°āļĄ operation āļāļāļ
getPayment āļ-āļāļĄ source code āļāļāļ
@WebMethod(operationName = "getPayment")
public double getPayment(@WebParam(name = "dayLength")
int dayLength, @WebParam(name = "roomRate")
double roomRate) {
return roomRate * dayLength;
}
2.3 āļāļēāļĢāļāļĢāļ§āļāļ(āđāļāļĨW XSD āđāļĨāļ° WSDL
āđāļāļĢāđāļāļĢāļĄ 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
99. 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
100. 70
6. āđāļāļŦāļāļēāļāļāđāļāđāļŦāļāļāļ)āļēāđāļ2āļĄāđāļ§ āđāļĨāļ§āļāļ Finish
6 āļāļēāļĢ Import āđāļāļĨeXML Schema āđāļĨāļ° WSDL
āļāļāļāļāļāļāđāļāļāļāļēāļĢ Import āđāļāļĨW WSDL āđāļĨāļ° XML Schema āļāļāļĒ()āđāļāđāļāļĢāđāļMāļ DetermineRoomRate
āđāļĨāļ° CalculatePayment āļĄāļēāđāļ§āđāļāđāļāļĢāđāļMāļ RoomBooking āđāļāļĒāļĄāļāļāļāļāļāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ DetermineRoomRate > Webservices
2. āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ DetermineRateService āđāļĨāļ§āđāļĨāļāļāļ4āļēāļŠāļ Generate and Copy WSDL ..
3. āđāļāđāļāļāļ°āļĨMāļāļ Generate and Copy WSDL āđāļŦāđāļĨāļāļāđāļāđāļĢMāļāļāļāļĢ src āļ āļēāļĒāđāļ RoomBooking āļāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
101. 71
4. āļ4āļēāļāļāļāļāļāļāļēāļāļāļāļ4āļēāļāļ Web Service āļāļāļ CalculateBookingPayment āđāļāđāļāļĢāđāļMāļ
CalculatePayment
7. āļāļēāļĢāļ#āļāļāļē Business Process
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW BPEL āļŠ4āļēāļŦāļĢāļāļ2āļĒāļēāļĄ Business Process āļāļāļ°āđāļāđāļāđāļāļĢāđāļMāļ āđāļāļĒāļĄāļāļāļāļāļ
āļāļēāļĢāļāļāļāļēāļāļāļ
67.1 āļŠāļĢāļēāļāđāļāļĨW RoomBookingProcess.bpel
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ BPEL āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Process Files āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ
New > BPEL Process
2. āļ4āļēāļŦāļāļ File Name: āđāļāļ RoomBookingProcess āđāļĨāļ§āļāļ Finish
3. āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āļŠāļĢāļēāļāđāļāļĨW RoomBookingProcess.bpel āđāļĨāļ°āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨWāđāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
117. 87
4. āđāļĢāļēāļāļ°āđāļāđāļāļĢāđāļāļĢāļĄ BPEL āļāļāđāļŠāļāļāđāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
118. 88
10.4 āļ4āļēāļāļēāļĢ Deploy āđāļāļĢāđāļMāļ
1. āļ4āļēāļāļēāļĢ Clean and Build āđāļāļĢāđāļMāļ RoomBooking āđāļŦāļĄ)
2. āļ4āļēāļāļēāļĢ Clean and Build āđāļāļĢāđāļMāļ RoomBookingCompositeApp āđāļŦāļĄ) āļāļ°āđāļ CASA Editor āļāļāļĢ(āļ
3. āļ4āļēāļāļēāļĢ Deploy āđāļāļĢāđāļMāļ RoomBookingCompositeApp āđāļŦāļĄ)
4. āļĢāļ TestCase1 āļāļāļāļĢāļ āđāļĨāļ§āļāļĢāļ§āļāļŠāļāļāļāļāļĄ(āļĨāđāļ Table āļāļāļ RoomBooking āđāļĢāļēāļāļ°āđāļŦMāļāļāļāļĄ(āļĨāļāļāļ
11. āļ#āļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application āļŠSāļēāļŦāļĢ#āļ User Interface
āđāļāļĢāđāļāļĢāļĄ Business Process āļāļāļāļāļēāļ-āļāļāļ°āđāļāļ Web Services āļāļĢāļāļāļĒ()āđāļ GlassFish Application
Server āļ-āļāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļāļ°āļāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application āđāļāļāđāļāļāļŠ)āļ§āļ User Interface (Presentation) āđāļ
āļāļēāļĢāđāļĢāļĒāļāđāļ Business Process
11.1 āļāļēāļĢāļŦāļēāļ4āļēāđāļŦāļ)āļ URL āļāļāļ WSDL āļŠ4āļēāļŦāļĢāļ Business Process
āļāļāļāļāļāļāļāļ°āđāļāļāļāļēāļĢāđāļĢāļĒāļāļ( url āļāļāļ WSDL āļŠ4āļēāļŦāļĢāļ Business Process āļāļāļāļāļēāļ-āļāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ RoomBookingCompositeApp āđāļĨāļ§āļāļāđāļ2āļĨāļāļĨ2[āļ Service
Assembly āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļŠāļāļ CASA Editor
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
119. 89
2. āļāļĨ2[āļāļ RoomBookingWSDLPort
3. āđāļāļŦāļāļēāļ)āļēāļ properties āđāļŦāļ4āļēāļāļēāļĢ copy āļ)āļēāļāļāļ soap:address
4. āļāļāļŠāļāļāđāļāļĒāđāļ~āļ Web Browser āđāļĨāļ§ paste āļ)āļēāļ copy āđāļ§ āļāļēāļāļāļāđāļŦāļ4āļēāļāļēāļĢāđāļāļĨāļĒāļāļ)āļēāļāļāļ URL āđāļŦāđāļāļ
āļāļāļ http://localhost:9080/RoomBookingWSDLService/RoomBookingWSDLPort?WSDL
11.2 āļāļēāļĢāļāļāļāļēāđāļāļĢāđāļMāļ Web Application
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļMāļ Web Application āđāļāļāđāļŦāļ(āđāļāļsāļāļāļāļāļĄ(āļĨāđāļāļāļēāļĢāļāļāļāļāļāļ āđāļāļŦāļāļē
āđāļ§Māļ roomlBooking.html āđāļĨāļ§āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļĢāļĒāļāđāļāļĢāđāļāļĢāļĄ Servlet āļāļāļ RoomBookingBP.java āđāļāļāđāļŠāļāļ
āļāļĨāļĨāļāļWāļāļāļāļĄāļē āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File > New Project
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ Web āđāļĨāļ° Web Application āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ RoomBookingUI āđāļĨāļ§āđāļĨāļāļ Project Location āđāļāļ folder āļāđāļĢāļēāļāļāļāļāļēāļĢ
āļāļ°āđāļMāļāđāļāļĨWāđāļ§
4. āļāļēāļāļāļāđāļĨāļāļ Server āđāļāļ GlassFish V2 āļ4āļēāļŦāļāļ Jave EE Version: āđāļāļ Java EE 5 āđāļĨāļ§āļāļ Finish
5. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ RoomBookingUI āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ New > OtherâĶ āđāļŦāđāļĨāļāļ Categories āđāļāļ
Web Services āđāļĨāļ° Web Service Client āđāļĨāļ§āļāļ Next
6. āđāļāđāļāļāļ°āļĨMāļāļ New Web Service Client āđāļŦāđāļĨāļāļ WSDL URL: āđāļĨāļ§āđāļŠ) URL āđāļāļ
http://localhost:9080/RoomBookingWSDLService/RoomBookingWSDLPort?WSDL āļāļ
āđāļŠāļāļāđāļāļĢ(āļ āđāļĨāļ§āļāļ Finish
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
120. 90
11.3 āļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ roomBooking.html
āđāļāļĢāđāļāļĢāļĄ roomBookingP.html āđāļāļāđāļ§MāļāđāļāļāļāđāļāđāļŠāļāļāļāļāļĢWāļĄāļŠ4āļēāļŦāļĢāļāđāļŦāļ(āđāļāļsāļāļāļāļāļĄ(āļĨāļāļēāļĢāļāļāļāļāļāļ
āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
1. āđāļāđāļāļāļ°āļĨMāļāļ New File āđāļŦāđāļĨāļāļ Categories āļāļāļ Web āđāļĨāļāļ File Types: āđāļāļ HTML āđāļĨāļ§āļāļ Next
2. āļ4āļēāļŦāļāļ HTML File Name: āđāļāļ roomBooking āđāļĨāļ§āļāļ Finish
3. āđāļāļĒāļ source code āļāļāļāđāļāļĨW roomBooking.html āļāļēāļĄ Listing āļ 1
Listing 1 āđāļāļĢāđāļāļĢāļĄ roomBooking.html
<body>
<form action="RoomBookingBP" method="POST">
First Name: <input name="firstName" /> <br>
Last Name: <input name="lastName" /> <br>
Phone: <input name="phone" /> <br>
Check in Date: <input name="checkInDate" /> <br>
Length of stay: <input name="lengthOfStay" /> <br>
Room type: <select name="roomType">
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
121. 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>
10.4 āļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ RoomBookingBP.java
āđāļāļĢāđāļāļĢāļĄ RoomBookingBP.java āđāļāļāđāļāļĢāđāļāļĢāļĄ Java Servlet āļāļāļ°āļ)āļēāļāļāļāļĄ(āļĨāļāļēāļĢāļāļāļāļāļāļ āļāļ(āđāļāļsāļāļ
āļĄāļēāļāļēāļāļŦāļāļē roomBooking.html āđāļĨāļ°āļāļ°āđāļĢāļĒāļ Web Process āđāļāļāđāļŠāļāļāļāļĨāļĨāļāļW āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļē
āđāļāļĢāđāļāļĢāļĄāļāļāļ
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ RoomBookingPUI āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ New > Other...
2. āđāļāđāļāļāļ°āļĨMāļāļ New File āđāļŦāđāļĨāļāļ Categories āļāļāļ Web āđāļĨāļāļ File Types: āđāļāļ Servlet āđāļĨāļ§āļāļ Next
3. āļ4āļēāļŦāļāļ File Name: āđāļāļ RoomBookingBP āđāļĨāļ° Package: āđāļāļ servlets āļāļ Next āđāļĨāļ§āļāļ Finish
4. āđāļāļŦāļāļēāļ)āļēāļ Editor āđāļŦāļāļĨ2[āļāļāļ§āļēāļ āļēāļĒāđāļāđāļĄāļāļāļ processRequest āđāļĨāļ§āđāļĨāļāļ Web Service Client Re-
sources > Call Web Service Operation āđāļĨāļāļāđāļāļ RoomBookingWSDLOperation
5. āđāļŦāļāļĢāļāļāļĢ6āļ Source code āđāļāđāļĄāļāļāļ processRequest āļāļāļ
protected void processRequest(HttpServletRequest request, HttpServletRe-
sponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet RoomBooking</title>");
out.println("</head>");
out.println("<body>");
try { // Call Web Service Operation
org.netbeans.j2ee.wsdl.roombooking.roombookingwsdl.RoomBook-
ingWSDLPortType port = service.getRoomBookingWSDLPort();
org.netbeans.xml.schema.roombookinglschema.RoomBookingInput
inputData = new org.netbeans.xml.schema.roombookinglschema.RoomBookingInput();
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
122. 92
String firstName = request.getParameter("firstName");
String lastName = request.getParameter("lastName");
String phone = request.getParameter("phone");
String checkInDate = request.getParameter("checkInDate");
String lengthOfStay = request.getParameter("lengthOfStay");
String roomType = request.getParameter("roomType");
int dayLength = Integer.parseInt(lengthOfStay);
inputData.setFirstName(firstName);
inputData.setLastName(lastName);
inputData.setPhone(phone);
inputData.setLengthOfStay(dayLength);
inputData.setRoomType(roomType);
org.netbeans.xml.schema.roombookinglschema.RoomBookingOutput
result = port.roomBookingWSDLOperation(inputData);
out.println("Booking is done: " + result.getResult());
} catch (Exception ex) {
}
out.println("</body>");
out.println("</html>");
out.close();
}
6. Run āđāļāļĨW roomBooking.html āđāļāļāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
123. 93
Exercise 11: BPEL : Structured Activities
āđāļāļāļāļāļŦāļāļāđāļāļāļāļēāļĢāđāļāļĒāļ BPEL 2.0 āđāļāļĒāđāļĢāļĒāļāđāļ Structured Activities āđāļ)āļ ForEach āđāļāļĒāļāļ°āļŠāļĢāļēāļ
Business Process āļ-āļāļĄāļēāđāļāļāļ)āļēāļāļāļāļĄ(āļĨāļāļēāļĢāļŠāļāļŠ2āļāļāļē (PO) āļ-āļāļāļēāļāļĄāļĢāļēāļĒāļāļēāļĢāļŠ2āļāļāļēāļāļĒ()āļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢāđāļĨāļ°āļāļ°
āļ4āļēāļāļēāļĢāļāļāļ-āļāļĢāļēāļĒāļāļēāļĢāđāļŦāļĨ)āļēāļāļāļĨāļāļāļēāļāļāļāļĄ(āļĨ
āļāļāļāļāļāđāļāļāļēāļĢāļāļāļāļēāđāļāļĢāđāļāļĢāļĄ
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
āļāļēāļĢāļāļāļāļē Business Process āđāļāđāļāļāļāļāļŦāļāļāļāļ°āļāļāļāļ4āļēāļāļēāļĢāļŠāļĢāļēāļāđāļāļĢāđāļMāļāļ-āļāļĄāļēāđāļŦāļĄ) āļ-āļāļ āļēāļĒāđāļāđāļāļĢāđāļMāļāļ
āļāļ°āļĄāđāļāļĨW BPEL, XSD āđāļĨāļ° WSDL āļāđāļāļĒāļ§āļāļāļāļāļĒ() āđāļāļĒāļāļ°āļĄāļāļāļāļāļāļŠāļĢāļēāļāđāļāļĢāđāļMāļāļāļāļ
1. āđāļĨāļāļāđāļĄāļ( File => New Project..
2. āđāļāđāļāļāļ°āļĨMāļāļ New Project āđāļŦāđāļĨāļāļ Categories āđāļāļ SOA āđāļĨāļ° Projects āđāļāļ BPEL Module āđāļĨāļ§āļāļ
Next
3. āļ4āļēāļŦāļāļ Project Name āđāļāļ BPELStructure āđāļĨāļ§āļāļ Finish
2 āļāļēāļĢāļ#āļāļāļē XML Schema
āļāļāļāļāļāļāļāđāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW XML Schema āđāļāļāļ4āļēāļŦāļāļāļĢ(āļāđāļāļāļāļāļ XML Datatype āļāļāļ°āđāļāđāļāļ
input argument āļāļāļ Business Process āļāļāļ°āļāļāļāļēāļ-āļ āđāļāļĒāđāļāļāļāļāļ°āļ4āļēāļŦāļāļāđāļāļ PO.xsd āļ-āļ
āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āļĄ Wizard āđāļāļāļēāļĢāļŠāļĢāļēāļ XML Schema āļāļāđāļāļĄāļ2 āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
124. 94
2.1) āļŠāļĢāļēāļāđāļāļĨW PO.xsd
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ BPELStructure āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Process Files āļāļēāļāļāļ
āđāļĨāļāļāļ4āļēāļŠāļ New > Other..
2. āđāļāđāļāļāļ°āļĨMāļāļ New File āđāļĨāļāļ Categories: āđāļāļ XML āđāļĨāļ° File Types: āđāļāļ XML Schema āđāļĨāļ§āļāļ
Next
3. āļ4āļēāļŦāļāļ File Name: āđāļāļ PO āđāļĨāļ§āļāļ Finish
4. āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨW PO.xsd
2.2) āļŠāļĢāļēāļ Complex Type āļŠ4āļēāļŦāļĢāļ XML schema
1. āđāļāđāļāļĨW PO.xsd āđāļĨāļāļāđāļāļ Design āđāļĨāļ§āļĨāļēāļāđāļāļāļāļ Element āđāļāļŦāļāļēāļ)āļēāļ Palette āļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ
Elements
2. āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āđāļ2āļĄ element āđāļŦāļĄ)āļāļāļ newElement āđāļŦāļ4āļēāļŦāļāļāļāļāđāļŦāļĄ)āđāļāļ PO
3. āļĨāļēāļāđāļāļāļāļ Sequence āđāļāļŦāļāļēāļ)āļēāļ Palette āļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ PO
4. āļĨāļēāļāđāļāļāļāļ Element āđāļāļŦāļāļēāļ)āļēāļ Palette āļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ PO
5. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ newElement āđāļĨāļ§āđāļĨāļāļ Properties
6. āđāļāđāļāļāļ°āļĨMāļāļ newElement āļ4āļēāļŦāļāļāļ)āļē Name: āđāļāļ PONumber āđāļĨāļ°āđāļĨāļāļāļ6zāļĄ ellipse (...) āļāļ)āļē
Definition āđāļĨāļ§āļāļĒāļēāļĒāđāļŦāļāļ Built-in Types āđāļ List āđāļĨāļ§āđāļĨāļāļāđāļŦāļāļ integer āđāļāļĒāđāļĨāļ§āļāļāļ6zāļĄ Close
7. āļ4āļēāļ4āļēāđāļāļāđāļ2āļĄ element āļ āļēāļĒāđāļ POt āļāļāļ
1. PODate(Built-In Types/ string)
2. Items [āđāļĄ)āļāļāļāļĢāļ°āļ6 Data Type]
8. āļĨāļēāļāđāļāļāļāļ Sequence āđāļāļŦāļāļēāļ)āļēāļ Palette āļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ Items
9. āļĨāļēāļāđāļāļāļāļ Element āđāļāļŦāļāļēāļ)āļēāļ Palette āļŠāļāļāļ6āļāļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ Items āđāļĨāļ§āļ4āļēāļŦāļāļāļ)āļē āđāļāļ Item
10. āļĨāļēāļāđāļāļāļāļ Sequence āđāļāļŦāļāļēāļ)āļēāļ Palette āļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ Item [āđāļĄ)āļāļāļāļĢāļ°āļ6 Data Type]
11. āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Item āđāļĨāļ§āđāļĨāļāļ Properties āđāļĨāļ§āļ4āļēāļŦāļāļāļ)āļē Max Occurs āđāļāļ unbounded āļāļāļĢ(āļ āđāļāļ
āļĢāļ°āļ6āļ§)āļē Item āļĄāđāļāđāļĄ)āļ4āļēāļāļāļ4āļēāļāļ§āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
125. 95
12. āļĨāļēāļāđāļāļāļāļ Element āđāļāļŦāļāļēāļ)āļēāļ Palette āļŠāļāļāļ6āļāļĄāļēāđāļ§āļ āļēāļĒāđāļāđāļŦāļāļ Item āđāļĨāļ§āļ4āļēāļŦāļāļāļ)āļēāļāļāļ
3. ItemNumber(Built-In Types/ string)
4. ItemQuantity(Built-In Types/ int)
āđāļāļĒāļāļ°āđāļāļŦāļāļē Design āļāļāļĢ(āļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
126. 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
4. āļāļēāļĢāļ#āļāļāļē WSDL āđāļvāļāđāļŦMāđāļ`āļāļMāļāļĄ5āļĨāļĨāļāļāļēāļāļMāļāļĄ5āļĨ
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļ4āļēāļŦāļāļ WSDL āļŠ4āļēāļŦāļĢāļāļāļēāļĢāļāļāļāļēāļĢ Table āļāļāļ purchasingorder āđāļāļĒāļĄāļāļāļāļāļāļāļāļ
4.1 āļāļēāļĢāļŠāļĢāļēāļ Table
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļ table āđāļāļāļēāļāļāļāļĄ(āļĨāđāļāļāđāļāđāļMāļāļāļāļĄ(āļĨāļāļēāļĢāļāļāļāļāļāļ āđāļāļĒāđāļāđāļāļĢāđāļāļĢāļĄ NetBeans
āļŦāļĢāļ MySQL Query Browser āđāļāļāļŠāļĢāļēāļ Table āļāļāļ purchasingorder āđāļāļāļēāļāļāļāļĄ(āļĨ MySQL āļāļāļ test āđāļāļĒ
āļ4āļēāļŦāļāļāđāļŦāļĄ column āļ)āļēāļāđ āļāļāļ
orderNumber int Primary Key Auto Increase
PONumber int
itemNumber VARCHAR(45)
itemQuantity int
4.2 āļāļēāļĢāļāļāļāļēāđāļāļĨW WSDL āļŠ4āļēāļŦāļĢāļ DatabaseBinding
āļāļāļāļāļāļāļāđāļāđāļāļāļāļēāļĢāļ4āļēāļŦāļāļāđāļāļĨW WSDL āļāļĄ Binding āđāļāļ Database āļŠ4āļēāļŦāļĢāļāđāļāļĒāļāļĨāļāđāļāļāļēāļāļāļāļĄ(āļĨ
āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan
127. 97
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ BPELStructure āđāļŦāđāļĨāļāļ New > WSDL Document ..
2. āđāļāđāļāļāļ°āļĨMāļāļ New WSDL Document āļ4āļēāļŦāļāļ File Name: āđāļāļ PurchasingOrderDB āļ4āļēāļŦāļāļ
WSDL Type: āđāļāļ Concrete WSDL Document āđāļĨāļ°āļ4āļēāļŦāļāļ Binding āđāļāļ DATABASE āđāļĨāļ°
Types āđāļāļ Table āļāļēāļāļāļāļāļ Next
3. āđāļāļŦāļāļēāļāļāđāļ āļ4āļēāļŦāļāļāļ)āļē URL: āđāļāļ jdbc:mysql://localhost:3306/test āļāļ Next
4. āđāļĨāļāļ Table: purchasingorder āļāļēāļ Available Tables: āđāļāļĒāļ Selected Tables: āđāļĨāļ°āļāļ Next
5. āļāļ Next āđāļĨāļ§āļ4āļēāļŦāļāļāļ)āļē JNDI Name āđāļāļ jdbc/test āļāļ Finish
6. āđāļāļĢāđāļāļĢāļĄāļāļ°āļŠāļĢāļēāļāđāļāļĨWāļ-āļāļĄāļēāļŠāļāļāđāļāļĨWāļāļ PurchasingOrderDB.wsdl āļŠ4āļēāļŦāļĢāļāļāļ2āļāļēāļĒ service āļ)āļēāļāđ āļāļāļ
Table āđāļĨāļ° purchasingorder.xsd āļŠ4āļēāļŦāļĢāļāļāļ2āļāļēāļĒ XML Schema āļāļāļ Table
7. āđāļāļāļāļāļēāļ column āļāļāļ orderNumber āļāļ°āđāļāļ auto increment āļāļāļāļāđāļĢāļēāļāļ°āđāļāđāļ insert operation
āđāļāļĒāđāļĨāļāļāđāļāļĨW PurchasingOrder.wsdl āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļ Design View āļāļāļāđāļāļĨW āđāļŦāļāļĒāļēāļĒāđāļāļ
Bindings > binding > insert > inputInsert āđāļĨāļ§āļ(āļ properties āļāļāļ jdbc:input āļāļ°āđāļŦMāļāļ4āļēāļŠāļ sql āđāļāļ
insert into purchasingorder (itemNumber,PONumber,orderNumber,itemQuantity) values (?,?,?,?)
āđāļŦāđāļāđāļāđāļāļ
insert into purchasingorder (itemNumber,PONumber,itemQuantity) values (?,?,?)
āđāļĨāļ°āđāļŦāđāļāđāļ paramOrder āļāļēāļ
itemNumber,PONumber,orderNumber,itemQuantity
āđāļāļ
itemNumber,PONumber,itemQuantity
5. āļāļēāļĢāļ#āļāļāļē Business Process āļŠSāļēāļŦāļĢ#āļ ForEach
āļāļāļāļāļāļāđāļāļāļāļēāļĢāļŠāļĢāļēāļāđāļāļĨW BPEL āļŠ4āļēāļŦāļĢāļāļ2āļĒāļēāļĄ Business Process āļŠ4āļēāļŦāļĢāļāļāļēāļĢāļŠāļēāļ2āļāļāļēāļĢāđāļāļ4āļēāļŠāļ
ForEach āđāļāļĒāļĄāļāļāļāļāļāļāļēāļĢāļāļāļāļēāļāļāļ
65.1 āļŠāļĢāļēāļāđāļāļĨW BPELStructureProcess1.bpel
1. āđāļĨāļāļāļŦāļāļēāļ)āļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ BPEL āđāļĨāļ§āļāļĨ2[āļāļāļ§āļēāļāđāļŦāļāļ Process Files āļāļēāļāļāļāđāļĨāļāļāļ4āļēāļŠāļ
New > BPEL Process
2. āļ4āļēāļŦāļāļ File Name: āđāļāļ BPELStructureProcess1 āđāļĨāļ§āļāļ Finish
3. āđāļāļĢāđāļāļĢāļĄ NetBeans āļāļ°āļŠāļĢāļēāļāđāļāļĨW BPELStructureProcess1.bpel āđāļĨāļ°āļŦāļāļēāļ)āļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨWāđāļ
āđāļŦāļĄāļ designer
Web Services & SOA Using GlassFishESB Thanachart Numnonda and Thanisa Kruawaisayawan