1. 1
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Hand-on
Exercises
Java Web Services
and SOA
Using NetBeans IDE with Open ESB
GlassFish Server and MySQL
Database
Assoc.Prof.Dr. Thanachart Numnonda
and
Assist.Prof.Dr. Thanisa Kruawaisayawan
April 2013
2. 2
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercises
Exercise 1: Calling Existing Web Services 3
Exercise 2: Java Web Services 11
Exercise 3: Axis2 Web Services 16
Exercise 4: āļāļēāļĢāđāļāļ·āđāļāļĄāļïāļāļāļąāļ MySQL Database 22
Exercise 5: Java Web Services from Session Bean (1) 29
Exercise 6: Java Web Services from Session Bean (2) 40
Exercise 7: RESTful Web Services 53
Exercise 8: Google Map Web Services 57
Exercise 9: āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāđāļ§āđāļāđāļāļ·āđāļāļāļīāļāļïāļāļāļēāļāļïāļāļĄāļđāļĨ MongoDB 64
Exercise 10: Developing a Simple Synchronous BPEL Program 72
Exercise 11: BPEL for Writing to File 82
Exercise 12: Simple BPEL Invoking Web Services 95
3. 3
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 1: Calling Existing Web Services
āđāļāļāļïāļāļŦāļąāļāđāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāđāļāļ·āđāļāđāļĢāļĩāļĒāļāđāļï Web Services āļāļĩāđāļĄāļĩāļāļĒāļđïāđāļĨïāļ§ āļāļķāđāļāļāļ°āđāļĨāļ·āļāļāļĄāļē 3
āļāļĢāļīāļāļēāļĢāļāļąāļāļāļĩāđ
āļāļēāļĢāļāļāļĨāļāļāļāļĩāđ 1 āļāļąāļāļĢāļēāđāļĨāļāđāļāļĨāļĩāđāļĒāļāđāļāļīāļāļāļĢāļēāļĢāļ°āļŦāļ§ïāļēāļāļāļĢāļ°āđāļāļĻ
āļāļēāļĢāļāļāļĨāļāļāļāļĩāđ 2 āđāļĨāļāļāļĢāļ°āļāđāļēāļāļąāļ§āļāļĢāļ°āļāļēāļāļāļāļāļ āļāļĢāļĄāļŠāļĢāļĢāļāļēāļāļĢ
āļāļēāļĢāļāļāļĨāļāļāļāļĩāđ 3 āļĢāļēāļāļēāļāđāđāļēāļĄāļąāļāļĨïāļēāļŠāļļāļāļāļāļ āļāļāļ.
āđāļāļĒāļāļ°āđāļï soapUI, NetBeans āđāļĨāļ° GlassFish Server
āļāļēāļĢāļāļāļĨāļāļāļāļĩāđ 1
āļāļēāļĢāļāļāļŠāļāļ Web Services āđāļāļĒāđāļï soapUI
āđāļāļĢāđāļāļĢāļĄ soapUI āđāļïāļāđāļāļĢāđāļāļĢāļĄ Open Source āļāļĩāđāļŠāļēāļĄāļēāļĢāļāđāļïāđāļïāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļāļāļēāļĢāļāļāļŠāļāļāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠ
āļāļķāđāļāđāļïāļāļāļĩāđāļāļīāļĒāļĄāđāļïāļāļąāļāļāļĒïāļēāļāļāļ§ïāļēāļāļāļ§āļēāļ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°āđāļāļāļēāļ§āļïāđāļŦāļĨāļāđāļāļĢāđāļāļĢāļĄāļāļĩāđāđāļïāļāļĩāđ www.soapui.org
āđāļāļĒāđāļĄāļ·āđāļāļāļīāļāļāļąāđāļāđāļĨïāļ§ āđāļŦïāļāđāļēāļāļēāļĢāļāļāļŠāļāļāđāļĢāļĩāļĒāļāđāļïāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠ āļāļēāļĄāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļāđāļāļĢāđāļāļĢāļĄ soapUI āđāļĨāļ·āļāļāđāļĄāļāļđ File > New soapUI Project
2. āđāļāļïāļāļ Initial WSDL āđāļŦïāđāļŠï
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 1
6. 6
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<CheckingResult diffgr:id="CheckingResult1"
msdata:rowOrder="0" diffgr:hasChanges="inserted">
<ID>3605699082386</ID>
<DigitOk>true</DigitOk>
</CheckingResult>
<Message diffgr:id="Message1" msdata:rowOrder="0"
diffgr:hasChanges="inserted">
<Code>W00000</Code>
<Description>āļāļēāļĢāļāđāļēāļāļēāļāđāļŠāļĢāđāļāļŠāļĄāļāļđāļĢāļï<br> Success
"</Description>
</Message>
</NewDataSet>
</diffgr:diffgram>
:
āļāļēāļĢāļāļāļĨāļāļāļāļĩāđ 3
āļāļēāļĢāļāļąāļāļāļē Web Service Client
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļŠāļĢïāļēāļ Web Application Project āļāļķāđāļāđāļŦāļĄï āđāļāļ·āđāļāđāļïāđāļāļāļēāļĢāđāļĢāļĩāļĒāļ Web Services
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java Web āđāļĨāļ° Projects āđāļïāļ Web
Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ ExistingWSDemo āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location āđāļïāļ folder
āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļ Project āđāļ§ï āđāļĨïāļ§āļāļ Next
4. āđāļĨāļ·āļāļ Server āđāļïāļ GlassFish Server 3.1.2 āļāđāļēāļŦāļāļ Jave EE Version: āđāļïāļ Java EE 6 Web
āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 2 āđāļĨïāļ§āļāļ Finish
7. 7
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļāđāļāļāļ°āļĨāđāļāļ New Web Application
5. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ ExistingWSDemo āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > OtherâĶ āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ
Web Services āđāļĨāļ° File Types āđāļïāļ Web Service Client āđāļĨïāļ§āļāļ Next
6. āđāļāđāļāļāļ°āļĨāđāļāļ New Web Service Client āđāļŦïāđāļĨāļ·āļāļ WSDL URL: āđāļĨïāļ§āđāļŠï URL āđāļïāļ
http://www.pttplc.com/webservice/pttinfo.asmx?wsdl āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 3 āđāļĨïāļ§āļāļ Finish
8. 8
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 3 āđāļŠāļāļāđāļāļāļ°āļĨāđāļāļ New Web Service Client
7. āđāļāļŦāļïāļēāļïāļēāļ Projects āļāļ°āļĄāļĩ Folder āļāļĩāđāļāļ·āđāļ Web Service References āļāļķāđāļāļĄāļē
8. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ ExistingWSDemo āđāļĨïāļ§āđāļĨāļ·āļāļ New > Servlet āļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļŦāļāļāļāļ·āđāļāđāļïāļ PTTServlet āđāļĨāļ°
Package: āđāļïāļ servlets āđāļĨïāļ§āļāļ Finish
9. āļ āļēāļĒāđāļāđāļĄāļāļāļ processRequest āđāļāđāļāļĨï PTTServlet.java āđāļŦïāļĨāļ sourcecode āļāļĩāđāļāļĒāļđïāļĢāļ°āļŦāļ§ïāļēāļāļāđāļēāļŠāļąāđāļ try
āđāļĨāļ° finally
10. āļāļĨāļīāđāļāļāļ§āļēāļĢāļ°āļŦāļ§ïāļēāļāļāđāļēāļŠāļąāđāļ try āđāļĨāļ° finally āđāļĨïāļ§āđāļĨāļ·āļāļ Insert Code āļāļēāļāļāļąāđāļāđāļŦïāđāļĨāļ·āļāļ Call Web Service
Operation āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 4
āļĢāļđāļāļāļĩāđ 4 āđāļŠāļāļāļāļēāļĢāđāļĢāļĩāļĒāļāđāļï operation āļāļāļ Web Service
11. āđāļĨāļ·āļāļ CurrentOilPrice āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 5 āđāļĨïāļ§āļāļ OK
10. 10
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
14. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ PTTServlet.java āđāļĨïāļ§āđāļĨāļ·āļāļ Run File āđāļĨïāļ§āļāļ OK āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāđāļïāļāļĢāļēāļāļēāļāđāđāļēāļĄāļąāļāļĨïāļēāļŠāļļāļ
āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 6
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢāđāļĢāļĩāļĒāļāđāļï Web Service Operation: CurrentOilPrice āļāļāļāļāļāļ.
11. 11
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 2: Java Web Services
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāđāļïāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Services āļŠāđāļēāļŦāļĢāļąāļ Java EE āđāļāļĒāđāļïāļāļļāļāļāđāļēāļŠāļąāđāļ JAX-WS
āļāļķāđāļāļāļ°āđāļïāļāļāļēāļĢāļāļąāļāļāļē Web Services Provider āļāļ Java EE Server āļāļąāđāļāļāļĩāđāļāļļāļāļāđāļēāļŠāļąāđāļ JAX-WS
āļāļ°āļïāļ§āļĒāļāđāļēāđāļŦïāļāļēāļĢāļŠāļĢïāļēāļāđāļĨāļ°āđāļĢāļĩāļĒāļāđāļï Web Services āļïāļ§āļĒāļ āļēāļĐāļē Java āđāļïāļāđāļāđāļïāļïāļēāļĒāļāļķāđāļ
āļāļēāļĢāļāļąāļāļāļē Web Services āļāļ°āđāļïāļāđāļïāđāļïāļāļŠāļāļāļŠïāļ§āļāļāļ·āļ Web Service Requester (Client) āđāļĨāļ° Web
Service Provider (Server) āļāļķāđāļāļāļēāļĢāļāļąāļāļāļē Web Service Provider āļŠāļēāļĄāļēāļĢāļāļāđāļēāđāļï 2 āļ§āļīāļāļĩāļāļ·āļ
1. Web Services āļāļĩāđāļĢāļąāļāļāļ Web Server āđāļāļĒāđāļï Java Servlet
2. Web Services āļāļĩāđāļĢāļąāļāļāļ Application Server āđāļāļĒāđāļï Session Bean
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āđāļŠāļāļāļāļąāđāļāļāļāļāļāļēāļĢāđāļï NetBeans āļŠāļĢïāļēāļ Web Service āļāļĩāđāļāļ·āđāļ calculateTax āđāļāļĒāđāļï Servlet
āļāļķāđāļāļāļ°āļĢāļąāļāļāļĒāļđïāļāļ GlassFish Server 3.1.2 Server āđāļāļ·āđāļāđāļŠāļāļ Web Services āļāļēāļĢāļŠïāļ SOAP message āđāļĨāļ°
WSDL āļāļāļ Services
āļāļēāļĢāļāļąāļāļāļē calculateTax Web Service
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļŠāļĢïāļēāļ Web Application Project āļāļķāđāļāđāļŦāļĄï āđāļāļ·āđāļāđāļïāđāļāļāļēāļĢāđāļāđāļ Web Service
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java Web āđāļĨāļ° Projects āđāļïāļ Web
Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ TaxWSDemo āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location āđāļïāļ folder
āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļ Project āđāļ§ï
4. āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļ Server āđāļïāļ GlassFish Server 3.1.2 āļāđāļēāļŦāļāļ Jave EE Version: āđāļïāļ Java EE 6
Web āđāļĨïāļ§āļāļ Finish
5. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ TaxWSDemo āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > OtherâĶ āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Web
Services āđāļĨāļ°āđāļĨāļ·āļāļ File Types āđāļïāļ Web Service āđāļĨïāļ§āļāļ Next
6. āđāļāđāļāļāļ°āļĨāđāļāļ New Web Service āļāđāļēāļŦāļāļ Web Service Name: āđāļïāļ TaxService āđāļĨāļ° Package:
āđāļïāļ ws āđāļĨïāļ§āļāļ Finish
7. āđāļāļĢāđāļāļĢāļĄāļāļ°āļāļĢāļ°āļāļēāļĻ Web Services āļāļĩāđāļāļ·āđāļ TaxService āđāļāđāļŦāļāļ Web Services āļāļāļāļŦāļïāļēāļïāļēāļ Project
āđāļĨāļ°āļŦāļïāļēāļïāļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨïāļāļĩāđāļāļ·āđāļ TaxService.java
8. āđāļāļŦāļïāļēāļïāļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ TaxWSDemo > Web Services āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ TaxService
āđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Add OperationâĶ
9. āđāļāđāļāļāļ°āļĨāđāļāļ Add Operation āļāđāļēāļŦāļāļ Method āđāļïāļ calculateTax āļāļāļīāļāļāļāļ Return Type āđāļïāļ
12. 12
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
double āđāļĨāļ°āļāļāļāļļï āļĄ Add āđāļāļ·āđāļāđāļāļīāđāļĄ Input parameter āđāļāļĒāļāđāļēāļŦāļāļ Name āđāļïāļ income āđāļĨāļ° Type
āđāļïāļāļāļāļīāļ double āđāļĨïāļ§āļāļ OK
10. āļāļĨāļīāđāļāļāļĩāđāđāļāļ Source āļāļāļ TaxService.java āđāļĨāļ°āļāļĢāļąāļāļāļĢāļļāļāđāļĄāļāļāļ calculateTax āļāļąāļāļāļĩāđ
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService()
public class TaxService {
@WebMethod
public double calculateTax(@WebParam(name = "income") double income) {
if (income < 70000) {
return 0;
} else if (income < 100000) {
return (income - 70000) * 0.05;
} else if (income < 500000) {
return (income - 100000) * 0.1 + 3500;
} else {
return (income - 500000) * 0.2 + 43500;
}
}
}
11. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ TaxWSDemo āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Clean and Build āļāļēāļāļāļąāđāļāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ
TaxWSDemo āļāļĩāļāļāļĢāļąāđāļ āđāļĨïāļ§āđāļĨāļ·āļāļ Deploy
āļāļēāļĢāļāļāļŠāļāļ Web Service
1. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ TaxService āđāļ Web Services āđāļĨïāļ§āđāļĨāļ·āļāļ Test Web Service āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 1
āļĢāļđāļāļāļĩāđ 1 āđāļŠāļāļāļ§āļīāļāļĩāļāļēāļĢāļāļāļŠāļāļ Web Service āđāļ Netbeans
2. āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļŠāļāļāļŦāļïāļēāļāļāđāļāļ·āđāļāđāļŦïāđāļĢāļēāļïāļāļāļïāļāļĄāļđāļĨāļāļīāļāļāļļāļ āļāļķāđāļāļāļ·āļāļāđāļēāļāļ§āļāđāļāļīāļāļāļĩāđāļïāļāļāļāļēāļĢāļāđāļēāļāļ§āļāļ āļēāļĐāļĩ
āđāļāļāļĩāđāļāļĩāđāļāļ°āđāļŠïāļāļąāļ§āđāļĨāļāđāļïāļ 730000 āđāļĨāļ°āļāļāļāļļï āļĄ calculateTax āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 2
13. 13
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļāļŦāļïāļēāļïāļēāļāļŠāđāļēāļŦāļĢāļąāļāđāļŦïāļāļāļŠāļāļāđāļĢāļĩāļĒāļ Web Service
3. āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļĢāļĩāļĒāļāđāļï Web Services āđāļĨāļ°āļāļ°āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļï āļāļĢïāļāļĄāļāļąāđāļāđāļŠāļāļāļïāļē SOAP Request āđāļĨāļ°
SOAP Response āļāļąāļāđāļŠāļāļāļāļąāļ§āļāļĒïāļēāļāđāļāļĢāļđāļāļāļĩāđ 3
14. 14
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 3 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢāđāļĢāļĩāļĒāļāđāļï Web Service āļāļĢïāļāļĄāļāļąāđāļ SOAP Request āđāļĨāļ° SOAP Response
4. āļŦāļĨāļąāļāļāļēāļāļāļ Back āļāļĨāļąāļāļĄāļēāļāļĩāđāļŦāļïāļēāđāļāļīāļĄāđāļĨïāļ§ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°āļāļđāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļāļĨï WSDL āļāļāļ Web
Service āļāļĩāđāđāļï āđāļāļĒāļāļēāļĢāļāļĨāļīāđāļāđāļĨāļ·āļāļāļāļĩāđ WSDL File āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 4
āļĢāļđāļāļāļĩāđ 4 āđāļŠāļāļāļāļēāļĢāļāļĨāļīāđāļāđāļāļ·āđāļāđāļĢāļĩāļĒāļāļāļđāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļāļĨï WSDL
15. 15
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
5. āđāļāļĢāđāļāļĢāļĄāļāļ°āļāđāļēāļāļēāļĢāđāļĢāļĩāļĒāļ url āļāļ·āđāļ http://localhost:8080/TaxWSDemo/TaxServiceService?WSDL
āđāļĨāļ°āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 5
āļĢāļđāļāļāļĩāđ 5 āđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļ WSDL
6. āđāļāļĢāđāļāļĢāļĄ Web Service āļāļ°āļāļđāļāļāļīāļāļāļąāđāļāļāļ GlassFish Server 3.1.2 āļŠāļēāļĄāļēāļĢāļāļāļđāđāļïāļāļēāļāļāļēāļĢāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ
GlassFish Server 3.1.2 āđāļāđāļāļ Services āđāļĨāļ°āđāļĨāļ·āļāļ View Admin Console āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 6
āļŦāļĢāļ·āļāđāļāļĒāļāļēāļĢāđāļïāļ Web Browser āđāļĨāļ°āđāļĢāļĩāļĒāļ url āļāļĩāđ http://localhost:4848 āđāļāļĒāļĄāļĩ user āđāļïāļ admin
āđāļĨāļ° password āđāļïāļ adminadmin
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļāļāļēāļĢāđāļĢāļĩāļĒāļāļāļđ Admin Console
16. 16
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 3: Axis2 Web Services
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāđāļïāļāļāļēāļĢāļāļīāļāļāļąāđāļ Axis2 Web Services āļāļ Tomcat Web Server āđāļĨāļąāļ§āļāļāļĨāļāļāļāļąāļāļāļē Web Service
āđāļāļĒāđāļïāđāļāļĢāđāļāļĢāļĄ NetBeans
āļāļēāļĢāļāļīāļāļāļąāđāļ Axis2 āļāļ Tomcat
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļāļīāļāļāļąāđāļāđāļĄāļāļđāļĨ Axis2 āđāļāļ·āđāļāļāđāļēāđāļŦï Tomcat āđāļïāļ Web Service Provider āļāļĩāđāļāđāļēāļāļēāļāļ āļēāļĒāđāļï Axis2
Framework āđāļāļĒ Axis2 āļĄāļĩāļïāļāļāļĩāđāļŦāļāļ·āļ JAX-WS API āđāļāđāļïāļāļĩāđāļ§ïāļē Axis2 āļĄāļĩ WS-Security
āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāđāļēāļāļēāļāđāļïāđāļĢāđāļ§āļāļ§ïāļē āļāļķāđāļāļāļēāļĢāļāļąāļāļāļēāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āļāđāļēāļāļēāļĢāļāļēāļ§āļïāđāļāļĨï axis2.war āļāļēāļ http://ws.apache.org/axis2/
2. āļāļąāļāļĨāļāļāđāļāļĨï axis2.war āļ āļēāļĒāđāļïāđāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļāļĩāđāļāļ·āđāļ webapps āļāļĩāđāļāļĒāļđïāđāļ CATALINA_BASE āļāļāļ Tomcat
3. āļāļĢāļāļĩāļāļĩāđāđāļĄïāļāļĢāļēāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļāļāļ Catalina Base āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļïāļāļŦāļēāđāļïāđāļāļĒāđāļïāļāđāļāļĢāđāļāļĢāļĄ NetBeans
āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Services āļāļĒāļēāļĒāđāļŦāļāļ Servers āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Properties āļāļāļ Apache
Tomcat āđāļāļĒāđāļāļāļ°āļĨāđāļāļ Server āļāļ°āđāļŠāļāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļāļāļ Catalina Base āļāļąāļāļĢāļđāļāļāļĩāđ 1
āļĢāļđāļāļāļĩāđ 1 āļāļēāļĢāļŦāļēāļāđāļēāđāļŦāļïāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļāļāļ Catalina Base
4. āļāļ°āđāļïāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļ āļēāļĒāđāļï webapps āļāļąāļāļĢāļđāļāļāļĩāđ 2
17. 17
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļāđāļāļĢāļāļŠāļĢïāļēāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļāļāļ webapps āļ āļēāļĒāļŦāļĨāļąāļāļāļēāļāļāļąāļāļĨāļāļāđāļāļĨï axis2.war
5. āļāđāļēāļāļēāļĢ Start/Restart Tomcat āđāļĨïāļ§āļāļāļŠāļāļ Axis2 āđāļāļĒāļāļēāļĢāđāļĨāļ·āļāļ url āļāļĩāđāļāļ·āđāļ http://localhost:8084/axis2/
āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāļĢāļđāļāļāļĩāđ 3 āđāļāļĒāļ āļēāļĒāđāļ Services āļāļ°āļĄāļĩāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāļāļąāļ§āļāļĒïāļēāļāļāļ·āđāļ Version āļĢāļąāļāļāļĒāļđï
āļĢāļđāļāļāļĩāđ 3 āļŦāļïāļēāļāļāļāļāļ Tomcat Axis2
19. 19
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 4 āļāļēāļĢ Config āļïāļēāļŠāđāļēāļŦāļĢāļąāļ Tomcat Axis2
āļāļēāļĢāļāļąāļāļāļē Axis2 Web Service
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļāļąāļāļāļē Axis2 Web Service āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project..
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java āđāļĨāļ° Java Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ Axis2Demo āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location āđāļïāļ Director
āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļāđāļāļĨïāđāļ§ï āđāļĨïāļ§āļāļ Finish
4. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Axis2Demo āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other
5. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Web Services āđāļĨāļ° Axis2 Service from Java
āđāļĨïāļ§āļāļ Next
20. 20
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
6. āđāļĨāļ·āļāļāļïāļāļ Create Empty Web Service āđāļĨïāļ§āļāļ Next
7. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļ āļāđāļēāļŦāļāļāļāļ·āđāļ Class Name āđāļïāļ TaxServices āđāļĨāļ° Package āđāļïāļ ws āđāļĨïāļ§āļāļ
Finish
8. āļāļĢāļąāļāļāļĢāļļāļ source code āđāļāļ·āđāļāđāļāļīāđāļĄāđāļĄāļāļāļāļāļĩāđāļāļ·āđāļ calculateTax āļāļąāļāļāļĩāđ
package ws;
public class TaxServices {
public double calculateTax(double income) {
return 0.1 * income;
}
}
9. āļāđāļēāļāļēāļĢ Deploy Web Services āđāļāļĒāļāļēāļĢāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Axis Web Services āļāļĩāđāļāļĒāļđïāļ āļēāļĒāđāļïāđāļŦāļāļ
Axis2Demo āđāļĨïāļ§āđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Deploy to Server āļāļąāļāļĢāļđāļāļāļĩāđ 5
āļĢāļđāļāļāļĩāđ 5 āđāļŠāļāļāļāļēāļĢ Deploy Axis Web Services to Server
10. āļāļāļŠāļāļāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāđāļïāđāļāļĒāļĢāļąāļāđāļāļĢāđāļāļĢāļĄ Web Browser āđāļĨāļ°āļāļīāļĄāļï URL: http://localhost:8084/axis2/
āļāļēāļāļāļąāđāļāļāļĨāļīāđāļ Services āļāļ°āđāļŦāđāļāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāļāļĩāđāļāļ·āđāļ TaxServices āļāļĒāļđï āļāļąāļāļĢāļđāļāļāļĩāđ 6
21. 21
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļ TaxServices āļ āļēāļĒāđāļ Services
11. āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°āļāļāļŠāļāļāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāļāļĩāđāđāļāļĒāđāļïāđāļāļĢāđāļāļĢāļĄāđāļïāļ Soap UI āđāļāļĒāļïāļēāļāļāļīāļāļāļķāļ WSDL āļāļĩāđ
http://localhost:8084/axis2/services/TaxServices?wsdl āđāļï
12. āđāļāļĒāļŦāļĨāļąāļāļāļēāļāļāļēāļĢāļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĩāđ Request1 āđāļĨāļ°āđāļŠïāļïāļē income āđāļŠāļĢāđāļāđāļĨïāļ§ āļāļ°āļïāļāļāļāđāļēāļāļēāļĢāđāļāļĨāļĩāđāļĒāļ port āļāļēāļ
8080 āđāļïāļ 8084 āļïāļāļāļāļēāļĢāļĢāļąāļ āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 7 āđāļĨāļ° 8
āļĢāļđāļāļāļĩāđ 7 āđāļŠāļāļāļāļēāļĢāđāļĨāļ·āļāļ edit current.. āđāļāļ·āđāļāđāļāļĨāļĩāđāļĒāļ Port āļāļāļ axis2
āļĢāļđāļāļāļĩāđ 8 āđāļŠāļāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļ Port āļāļāļ axis2 āļāļēāļ 8080 āđāļïāļ 8084 āļïāļāļāļāļēāļĢāļĢāļąāļ
22. 22
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 4: āļāļēāļĢāđāļāļ·āđāļāļĄāļïāļāļāļąāļ MySQL Database
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāđāļïāļāļāļēāļĢāđāļĢāļīāđāļĄāļïāļāđāļïāļāļēāļ Database Tool āđāļāļ·āđāļāđāļāļ·āđāļāļĄāļïāļāļāļąāļ Table test āđāļāļāļēāļāļïāļāļĄāļđāļĨ MySQL
āļŠāđāļēāļŦāļĢāļąāļāđāļïāļāļāļąāļ§āļïāļ§āļĒāđāļŦïāļāđāļēāļāļēāļāđāļïāđāļĢāđāļ§āļāļķāđāļ āđāļïāļāļāļāļāļīāļïāļēāļāļ° create table āļāđāļïāļāļāđāļāļĩāļĒāļ SQL āđāļï Tool āļāļĩāđāļĄāļĩ GUI āļĄāļēāļïāļ§āļĒ
āļāđāļēāđāļŦïāļĨāļāļïāļāļāļīāļāļāļĨāļēāļ āđāļĨāļ° āļŠāļ°āļāļ§āļāđāļāļāļēāļĢāļāđāļēāļāļēāļāļĄāļēāļāļāļķāđāļ āļāļąāđāļāļāļĩāđāļāļēāļĢāļāđāļēāđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļïāļāļāļĄāļĩāļāļēāļĢ download
āđāļĨāļ°āļāļīāļāļāļąāđāļāđāļāļĢāđāļāļĢāļĄ MySQL āđāļĨāļ° MySQL Workbench āđāļāļĒāļŠāļēāļĄāļēāļĢāļāļāđāļēāļāļēāļĢ download āđāļïāļāļēāļāđāļ§āđāļ
http://dev.mysql.com/
āļāļēāļĢāđāļāļ·āđāļāļĄāļïāļ MySQL āđāļāļĒāđāļāļĢāđāļāļĢāļĄ MySQL Workbench
1. āđāļŦïāđāļïāļāđāļāļĢāđāļāļĢāļĄ MySQL Workbench āļāļąāļāļĢāļđāļāļāļĩāđ 1 āļāļēāļāļāļąāđāļāļāđāļēāļāļēāļĄāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
āļĢāļđāļāļāļĩāđ 1 āļāļēāļĢāđāļĢāļĩāļĒāļāđāļïāļāļēāļ Program MySQL Workbench
2. āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĩāđ Connection Name āđāļŠï Password āļāļĩāđāļāđāļēāļŦāļāļāđāļ§ïāđāļāļāļāļāļāļīāļāļāļąāđāļāđāļāļĢāđāļāļĢāļĄ
MySQLāļāļķāđāļāļāļ°āļĄāļĩāļïāļēāđāļïāļ root āļāļąāļāļĢāļđāļāļāļĩāđ 2
āļĢāļđāļāļāļĩāđ 2 āļāļēāļĢāđāļŠāļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļïāļ Connection āđāļāļ·āđāļāđāļïāļēāđāļāļāļąāļāļāļēāļĢ Database
23. 23
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļāļēāļĢāļŠāļĢïāļēāļāļāļēāļĢāļēāļ books
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Table āļāļĩāđāļāļ·āđāļ books āđāļāļĒāđāļŦïāļāļĒāļđïāļ āļēāļĒāđāļï Schema āļāļĩāđāļāļ·āđāļ test āđāļāļĒ Table
āļāļĩāđāļāđāļēāļŦāļāļāđāļŦïāļĄāļĩ Column āļïāļēāļāđ āļāļąāļāļāļēāļĢāļēāļāļāļĩāđ 1
āļāļēāļĢāļēāļāļāļĩāđ 1 Table books
āļāļ·āđāļColumn āļāļāļīāļ āļāļāļēāļ Primary Key Index
isbn varchar 20 Y Y
title varchar 70 - -
author varchar 50 - -
price float - - -
āđāļĢāļēāļāļ°āđāļïāđāļāļĢāđāļāļĢāļĄ MySQL WorkBench āđāļāļāļēāļĢāļāļĩāđāļāļ°āļŠāļĢïāļēāļ TableāļāļĩāđāđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļïāļēāļāđ āļāļąāļāļāļĩāđ
1. āļāļĨāļīāđāļāļāļĩāđ icon āļāļ·āđāļAdd Table... āđāļĨïāļ§āđāļŠïāļāļ·āđāļtable āđāļĨāļ° āļāļ·āđāļ field āļāļēāļĄāļāļēāļĢāļēāļāļāļĩāđ 1 āļāļąāļāļĢāļđāļāļāļĩāđ 3 āđāļĨïāļ§āļāļāļāļļï āļĄ Apply
24. 24
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 3 āļāļēāļĢāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļāļŠāļĢïāļēāļāļāļēāļĢāļēāļ
2. āļŦāļĢāļ·āļāđāļïāļāđāļēāļŠāļąāđāļ SQL Statement āļāđāđāļï āđāļāļĒāļāđāļēāđāļāđāļŠïāļāļĩāđāļŦāļïāļēāļïāļēāļ Query1 āđāļĨïāļ§ āļāļ icon
āļŠāļēāļĒāļïāļēāļŠāļĩāđāļŦāļĨāļ·āļāļāđāļāļ·āđāļāļĢāļąāļ
CREATE TABLE BOOKS (
ISBN VARCHAR(20) NOT NULL ,
TITLE VARCHAR(70) NULL ,
AUTHOR VARCHAR(50) NULL ,
PRICE FLOAT NULL ,
PRIMARY KEY (ISBN) );
3. āđāļïāļ Tables books āļāļ°āđāļŦāđāļ Column āļïāļēāļāđ āļāļąāļāļĢāļđāļāļāļĩāđ 4
25. 25
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 4 āļāļĨāļĨāļąāļāļïāļāļēāļāļāļēāļĢāļŠāļĢïāļēāļāļāļēāļĢāļēāļ
āļāļēāļĢāđāļïāļāđāļēāļŠāļąāđāļ SQL āđāļ MySQL WorkBench
āļ āļēāļĒāļŦāļĨāļąāļāļāļēāļāļāļĩāđāļĄāļĩāļāļēāļĢāļŠāļĢïāļēāļ Table āļāļĩāđāļāļ·āđāļ books āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļïāļāđāļēāļŠāļąāđāļ SQL āđāļāļ·āđāļāļāļĩāđāļāļ°āļāļīāļāļïāļāļāļąāļāļāļēāļāļïāļāļĄāļđāļĨ
āđāļāļāļĩāđāļāļĩāđāļāļ°āđāļŠāļāļāļāļēāļĢāđāļāļīāđāļĄāļïāļāļĄāļđāļĨāļĨāļāđāļ Table āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļïāļēāļāđāļāļąāļāļāļĩāđ
1. āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĩāđ Table books āļïāļēāļāļāļ§āļē āļāļ°āđāļï SQL Editor āđāļŦïāļïāļāļāļāđāļēāļŠāļąāđāļ SQL āđāļïāļ
INSERT INTO books VALUES ('123', 'JAVA', 'Numnonda', 2500.00);
INSERT INTO books VALUES ('456', 'SOA', 'Numnonda', 3000.00) ;
31. 31
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 4 āđāļŠāļāļāļāļēāļĢ Restart GlassFish Server
āļāļēāļĢāļŠāļĢïāļēāļ Enterprise Application Project
āđāļĢāļēāļāļ°āļāđāļēāļŦāļāļāđāļŦïāđāļāļĢāđāļāļĢāļĄāļāļĩāđāđāļïāļāđāļāļĢāđāļāļĄ Enterprise Application āļāļķāđāļāļĄāļĩāļāļąāđāļ EJB Module āđāļĨāļ° Web
Module āļāļąāđāļāļāļāļāđāļĢāļāļāļ°āđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Project āđāļŦāļĄïāļāļķāđāļāļĄāļēāđāļ NetBeans āļāļķāđāļāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File => New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java EE āđāļĨāļ°āđāļĨāļ·āļāļ Enterprise āđāļïāļ Enterprise
Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ BookApp āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location āđāļïāļ folder āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļ
project āđāļ§ï āļāļ Next
4. āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļ Server āđāļïāļ GlassFish Server 3.1.2 āđāļāļĒāļāđāļēāļŦāļāļ Jave EE Version: āđāļïāļ Java EE 6
āđāļĨāļ°āđāļŦïāđāļĨāļ·āļāļāļïāļāļ Create EJB Module: āđāļĨāļ° Create Web Application Module: āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 5
32. 32
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 5 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĢāđāļāđāļ Enterprise Application
5. āļāļ Finish
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Entity Class
āđāļāļĢāđāļāļĢāļĄ EJB 3.0 āļāļ°āđāļïāļāļĨāļēāļŠāļāļĢāļ°āđāļ āļ Entity āđāļāļ·āđāļāđāļïāļāļāļāļāđāļāđāļāļāļĩāđāļŠāļāļāļāļĨïāļāļāļāļąāļāļāļēāļĢāļēāļāđāļāļāļēāļāļïāļāļĄāļđāļĨ
āđāļāļāļĩāđāļāļĩāđāđāļĢāļēāļāļ°āļŠāļĢïāļēāļ Entity Class āļāļĩāđāļāļ·āđāļ Books.java āļāļēāļāļāļēāļĢāļēāļāļāļĩāđāļāļ·āđāļ books āļāļķāđāļāļĄāļĩāļāļēāļĢāļŠāļĢïāļēāļāļĄāļēāļïāļāļāđāļĨïāļ§
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļĩāđāļĄāļĩāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BookApp-ejb āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other...
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Persistence āđāļĨāļ·āļāļ File Types: āđāļïāļ Entity
Classes from Database āđāļĨïāļ§āļāļ Next
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Entity Classes from Database āđāļŦïāđāļĨāļ·āļāļ Data Source: āđāļïāļ New Data SourceâĶ
āđāļāļĒāđāļŠïāļāļ·āđāļ JNDI Name: jdbc/test āđāļĨāļ°āđāļĨāļ·āļāļāđāļāļ·āđāļāļĄāļïāļāđāļāļĒāļąāļāļāļēāļāļïāļāļĄāļđāļĨ test āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 6
33. 33
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Data Source
4. āļāļ OK āļāļēāļāļāļąāđāļāļāļ Add All >> āđāļāļ·āđāļāđāļĨāļ·āļāļāļāļēāļĢāļēāļāļāļĩāđāļïāļāļāļāļēāļĢāļāđāļēāļĄāļēāļŠāļĢïāļēāļ Entity Class āļāļķāđāļāļāļ°āđāļï Selected
Tables: āđāļïāļ books āļāļ Next āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 7
34. 34
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 7 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Entity Class āļāļēāļ Data Source
5. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļāđāļŦïāļĢāļ°āļāļļ Package: āđāļïāļ entity āđāļĨāļ°āđāļŦïāļāļĢāļ§āļāļŠāļāļāļ§ïāļē Crate Persistence Unit
āđāļïāļāļđāļāđāļĨāļ·āļāļāđāļ§ï āļāļķāđāļ Persistence Unit āļāļ°āđāļïāļāļāļąāļ§āļāđāļēāļŦāļāļāđāļŦï EJB Container āļāļāļ Application Server
āļĢāļđïāđāļïāļ§ïāļē Entity Class āļāļ°āļāļđāļāļāļ§āļāļāļļāļĄāļïāļ§āļĒ Entity Manager āļāļąāļ§āđāļ āđāļĨāļ°āđāļïāļāļāļąāļ§āļāđāļēāļŦāļāļ Data Source
āļāļĩāđāļāļ°āđāļïāļāļąāļ Entity Manager āļāļĩāđ
6. āđāļĄïāļāđāļēāđāļïāļāļïāļāļāđāļāļĨāļĩāđāļĒāļāļïāļēāđāļāđ āļāļēāļāļāļąāđāļāļāļ Next āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 8
35. 35
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 8 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Entity Class
7. āđāļĄāļ·āđāļāļāļ Finish āđāļāļĢāđāļāļĢāļĄāļāļ°āļŠāļĢïāļēāļāđāļāļĨïāļāļĩāđāļāļ·āđāļ persistence.xml āđāļ package: Configuration Files
āđāļĨāļ°āļŠāļĢïāļēāļāđāļāļĨïāļāļĩāđāļāļ·āđāļ Books.java āđāļ package: entity
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Session Bean
āđāļāļĢāđāļāļĢāļĄ EJB āļāļ°āđāļï Session Bean āđāļāļāļēāļĢāļāļīāļāļïāļāļāļąāļāđāļāļĢāđāļāļĢāļĄāļāļ·āđāļāđ āļ āļēāļĒāļāļāļ EJB Container
āđāļāļĒāđāļāļĢāđāļāļĢāļĄāđāļŦāļĨïāļēāļāļąāđāļāļāļ°āļāļīāļāļïāļāļāļąāļ Entity Class āđāļāļĒāļïāļēāļ Session Bean āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļŠāļĢïāļēāļ Session Bean
āļāļĩāđāļāļ·āđāļ BooksFacade.java āļāļĩāđāļĄāļĩ Business method āđāļāļāļēāļĢāļŠāļĢïāļēāļ āđāļïāđāļ āļĨāļ āđāļĨāļ°āđāļĢāļĩāļĒāļāļāļđāļïāļāļĄāļđāļĨāļāļāļāļāļēāļĢāļēāļāļāļĩāđāļāļ·āđāļ
books āđāļāļĒāđāļï Entity Class āļāļĩāđāļāļ·āđāļ Books.java āđāļĨāļ° EntityManager āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BookApp-ejb āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > OtherâĶ
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Persistence āđāļĨāļ·āļāļ File Types: āđāļïāļ Session
Beans for Entity Classes āđāļĨïāļ§āļāļ Next
3. āļāļēāļāļāļąāđāļāļāļ Add All >> āđāļĨïāļ§āļāļ Next
4. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļāđāļŦïāļĢāļ°āļāļļ Package: āđāļïāļ sb āđāļĨāļ°āđāļĨāļ·āļāļ local āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 9 āđāļĨïāļ§āļāļ Finish
36. 36
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 9 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Session Bean
5. āđāļāļĢāđāļāļĢāļĄāļāļ°āļŠāļĢïāļēāļāđāļāļĨïāļāļĩāđāļāļ·āđāļ BooksFacade.java āđāļĨāļ° BooksFacadeLocal.java āđāļ package āļāļĩāđāļāļ·āđāļ sb
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application
āđāļāļĢāđāļāļĢāļĄ EJB āļāļ°āđāļïāļāļŠïāļ§āļāļāļāļ Business Logic āđāļïāļēāļāļąāđāļ āļāļēāļĢāļāļąāļāļāļēāļŠïāļ§āļāļāļāļ Presentation
āļāļ°āļïāļāļāđāļïāđāļāļĢāđāļāļĢāļĄ Web Application āļŦāļĢāļ·āļ Java SE āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application
āđāļāļ·āđāļāđāļŦïāļāļđïāđāļïāļïāļāļ isbn āļāļāļāļŦāļāļąāļāļŠāļ·āļāđāļāļŦāļïāļēāđāļ§āđāļ findBook.html āđāļĨïāļ§āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļĢāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄ Servlet āļāļĩāđāļāļ·āđāļ
ShowBook.java āđāļāļ·āđāļāđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāļŦāļāļąāļāļŠāļ·āļāļāļąāļāļāļĨïāļēāļ§āļāļāļāļĄāļē āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ findBook.html
āđāļāļĢāđāļāļĢāļĄ findBook.html āđāļïāļāđāļ§āđāļāđāļāļāļāļĩāđāđāļïāđāļŠāļāļāļāļāļĢïāļĄāļŠāđāļēāļŦāļĢāļąāļāđāļŦïāļāļđïāđāļïāļïāļāļ isbn āļāļāļāļŦāļāļąāļāļŠāļ·āļ
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BookApp-war āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > OtherâĶ
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Web āđāļĨāļ·āļāļ File Types: āđāļïāļ HTML āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ HTML File Name: āđāļïāļ findBook āđāļĨïāļ§āļāļ Finish
4. āđāļāļĩāļĒāļ source code āļāļāļāđāļāļĨï findBook.html āļāļēāļĄ Listing āļāļĩāđ 1 āđāļāļĒāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°āļĨāļēāļ icon āļāļĢāļ°āđāļ āļ
HTML Forms āļāļĩāđāļāļĒāļđïāđāļāļŦāļïāļēāļïāļēāļ Palette āđāļāļ·āđāļāļŠāļēāļĄāļēāļĢāļāđāļŦïāđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄāđāļïāļïāļēāļĒāļāļķāđāļ
37. 37
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Listing 1 āđāļāļĢāđāļāļĢāļĄ findBook.html
<html>
<head>
<title></title>
</head>
<body>
<form action="ShowBook" method="POST">
<h2>Search Book from ISBN </h2>
Enter ISBN <input type="text" name="isbn" value="" />
<input type="submit" value="Find" />
</form>
</body>
</html>
2. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ ShowBook.java
āđāļāļĢāđāļāļĢāļĄ ShowBook.java āđāļïāļāđāļāļĢāđāļāļĢāļĄ Java Servlet āļāļĩāđāļāļ°āļïāļēāļāļŦāļĄāļēāļĒāđāļĨāļ ISBN
āļāļĩāđāļāļđïāđāļïāļïāļāļāļĄāļēāļāļēāļāļŦāļïāļē findBook.html āđāļĨāļ°āļāļ°āđāļĢāļĩāļĒāļāđāļĄāļāļāļ find() āļāļāļ session bean āļāļĩāđāļāļ·āđāļ BooksFacade
āđāļāļ·āđāļāđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāļŦāļāļąāļāļŠāļ·āļ āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BookApp-war āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other...
2. āđāļāđāļāļāļ°āļĨāđāļāļ New FileāđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Web āđāļĨāļ·āļāļ File Types: āđāļïāļ Servlet āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ File Name: āđāļïāļ ShowBook āđāļĨāļ° Package: āđāļïāļ servlets āļāļ Next āđāļĨïāļ§āļāļ Finish
4. āđāļāļŦāļïāļēāļïāļēāļ Editor āđāļŦïāļāļĨāļīāđāļāļāļ§āļēāļ āļēāļĒāđāļāđāļĄāļāļāļ processRequest āđāļĨïāļ§āđāļĨāļ·āļāļ Insert CodeâĶ > Call
Enterprise BeanâĶ
5. āđāļāđāļāļāļ°āļĨāđāļāļ Call Enterprise Bean āđāļĨāļ·āļāļ BooksFacade āļāļĩāđāļāļĒāļđïāđāļ BookApp-ejb āđāļĨïāļ§āļāļ OK
6. āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļāļīāđāļĄ Source code āđāļāļāļēāļĢāđāļĢāļĩāļĒāļ EJB āļāļąāļāļāļĩāđ
@EJB
private BooksFacadeLocal booksFacade;
7. āđāļŦïāļāļĢāļąāļāļāļĢāļļāļ Source code āđāļāđāļĄāļāļāļ processRequest āļāļąāļāļāļĩāđ
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet ShowBook</title>");
38. 38
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
out.println("</head>");
out.println("<body>");
String isbn = request.getParameter("isbn");
Books book = booksFacade.find(isbn);
out.println("Title: " + book.getTitle()+ "<BR>");
out.println("Author: " + book.getAuthor() + "<BR>");
out.println("Price: " + book.getPrice() + "<BR>");
out.println("</body>");
out.println("</html>");
out.close();
}
9. āļāļĨāļīāđāļāļāļ§āļēāđāļĨïāļ§āđāļĨāļ·āļāļ Fix Imports āđāļāļ·āđāļāļāđāļēāļāļēāļĢ import āļāļĨāļēāļŠāļïāļēāļāđ āđāļĨïāļ§ Save āđāļāļĢāđāļāļĢāļĄ
āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄ
1. āļāđāļēāļāļēāļĢāļāļĨāļīāđāļāļāļ§āļēāļāļĢāļ BookApp āđāļāļ·āđāļāļāđāļēāļāļēāļĢ Clean and Build
2. Run āđāļāļĢāđāļāļĢāļĄ BookApp (āđāļĄïāđāļï BookApp-ejb āļŦāļĢāļ·āļ BookApp-war)
3. āđāļĨāļ·āļāļ URL āļāļāļ Web Browser āđāļïāļ http://localhost:8080/BookApp-war/findBook.html
āđāļŦïāđāļĢāļēāļāļāļĨāļāļāđāļŠïāļïāļāļĄāļđāļĨ
4. āđāļĄāļ·āđāļāļāļāļāļļï āļĄ Find āđāļāļĢāđāļāļĢāļĄāļāđāļāļ°āđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāļŦāļāļąāļāļŠāļ·āļāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 10
āļĢāļđāļāļāļĩāđ 10 āđāļŠāļāļāļāļąāļ§āļāļĒïāļēāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢāļĢāļąāļāđāļāļĢāđāļāļĢāļĄ
āļāļēāļĢāļāļąāļāļāļē Java Web Services āļāļēāļ Session Bean
1. āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļāļīāđāļĄāļïāļāļāļāļēāļāļāļēāļĢāđāļŦïāļāļĢāļīāļāļēāļĢāļāļāļ Stateless Session Bean āđāļāđāļïāļ Web Services
āđāļïāđāļāļĒāļāļēāļĢāđāļïāđāļāđāļāļĨï BooksFacade.java āļāļĩāđāļāļĒāļđïāđāļāđāļŦāļāļ BookApp-ejb āļāļąāļāļāļĩāđ
39. 39
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
@WebService
@Stateless
public class BooksFacade extends AbstractFacade<Books> implements
BooksFacadeLocal {
@PersistenceContext(unitName = "BookApp-ejbPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public BooksFacade() {
super(Books.class);
}
@WebMethod
public Books findBookDetailsByIsbn(String isbn) {
Query query =
em.createNamedQuery("Books.findByIsbn").setParameter("isbn", isbn);
return (Books) query.getSingleResult();
}
}
2. āļāļĨāļīāđāļāļāļ§āļēāđāļĨïāļ§āđāļĨāļ·āļāļ Fix Imports āđāļāļ·āđāļāļāđāļēāļāļēāļĢ import āļāļĨāļēāļŠāļïāļēāļāđ (javax.jws.WebService,
javax.jws.WebMethod āđāļĨāļ° javax.persistence.Query) āđāļĨïāļ§ Save āđāļāļĢāđāļāļĢāļĄ
3. āļĨāļāļāļāļāļŠāļāļāđāļĢāļĩāļĒāļāđāļï Web Service āļāļēāļāđāļ NetBeans (āđāļāļĒāļāļēāļĢāđāļï Test Web Service āđāļĨāļ°āđāļāļĩāļĒāļ code)
āđāļĨāļ°āđāļāļĒāđāļï Soap UI
4. āđāļŦïāļāļāļĨāļāļāđāļāļīāđāļĄāđāļĄāļāļāļāļāļĩāđāļïāļāļāļāļēāļĢāđāļŦïāļāļĢāļīāļāļēāļĢāđāļïāļ Web Services āđāļïāļ findBookDetailsByTitle
40. 40
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 6: Java Web Services from Session Bean (2)
āđāļāļāļïāļāļŦāļąāļāđāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Services āļŠāđāļēāļŦāļĢāļąāļ Java EE āļāļķāđāļāļāļ°āđāļïāļāļāļēāļĢāļāļąāļāļāļēāļāļ
Server āļāļĩāđāļĢāļąāļāļāļ Java EE āđāļāļĒāļāļļāļāļāđāļēāļŠāļąāđāļ JAX-WS āļāļķāđāļāđāļāļāļĢāļāļĩāļāļĩāđāļāļ°āđāļŠāļāļāļāļąāđāļāļāļāļāļāļēāļĢāđāļï NetBeans āļŠāļĢïāļēāļ Web
Services Method āļāļĩāđāļāļ·āđāļ findEmployeeDetails āļāļēāļ Session Bean āđāļāļĒ Service āļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļïāļāļŦāļēāļïāļāļĄāļđāļĨāļāļāļ
employee āļāļēāļ table āļāļĩāđāļāļ·āđāļ employees āđāļĨāļ° departments āđāļāļāļēāļāļïāļāļĄāļđāļĨ MySQL āļāļķāđāļāļĄāļĩāļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļē
āđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđ
1. āļŠāļĢïāļēāļ Table āļāļĩāđāļāļ·āđāļ employees āđāļĨāļ° departments
2. āļŠāļĢïāļēāļ EJB Module
3. āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Entity Class
4. āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Session Bean
5. āļŠāļĢïāļēāļ Web Application
1. āļāļēāļĢāļŠāļĢïāļēāļ Table āļāļĩāđāļāļ·āđāļ employees āđāļĨāļ° departments
āļāļąāđāļāļāļāļāđāļĢāļāļāļ°āđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ table āđāļāļĒāđāļïāđāļāļĢāđāļāļĢāļĄ NetBeans āđāļŦïāļāđāļēāļāļēāļĢāļāļąāļāļĨāļāļ script āļïāļāđāļāļāļĩāđ
āđāļĨïāļ§āđāļŠïāđāļ SQL Command Editor āļāļāļ NetBeans āļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļāļēāļĢ Run SQL āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 1
create table `test`.DEPARTMENTS
(
DEPARTMENT_ID INT not null primary key,
DEPARTMENT_NAME VARCHAR(30) not null
);
insert into departments values(90,'Executive');
create table `test`.EMPLOYEES
(
EMPLOYEE_ID INT not null primary key,
FIRST_NAME VARCHAR(20),
LAST_NAME VARCHAR(25) not null,
DEPARTMENT_ID INT,
FOREIGN KEY (DEPARTMENT_ID) REFERENCES DEPARTMENTS(DEPARTMENT_ID) ON UPDATE
CASCADE
);
insert into employees values(100,'Steven','King',90);
insert into employees values(101,'Neena','Kochhar',90);
41. 41
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 1 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Run SQL āđāļāļ·āđāļāļŠāļĢïāļēāļāļāļēāļĢāļēāļ
āđāļāļĒāđāļĄāļ·āđāļāļāļĢāļ§āļāļŠāļāļāļāļđāđāļ tables āļāļāļ test āļāļ°āļāļ table āļāļĩāđāļāļ·āđāļ employees āđāļĨāļ° departments āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 2
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļāļāļēāļĢāļēāļāļāļĩāđāļāļđāļāļŠāļĢïāļēāļāļāļķāđāļāļĄāļē
āļāļēāļĢāļŠāļĢïāļēāļ EJB Module
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java EE āđāļĨāļ°āđāļĨāļ·āļāļ Enterprise āđāļïāļ EJB
Module āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 3 āđāļĨïāļ§āļāļ Next
42. 42
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 3 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ EJB Module
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ EmployeeWS āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location āđāļïāļ folder
āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļāđāļāļĨïāđāļ§ï āđāļĨïāļ§āļāļ Next
4. āđāļĨāļ·āļāļ Server āđāļïāļ GlassFish Server 3.1.2 āļāđāļēāļŦāļāļ Jave EE 6 āđāļĨïāļ§āļāļ Finish
āļāļēāļĢāļāļąāļāļāļē Employees and Departments Entity Classes
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ EmployeeWS āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Persistence āđāļĨāļ·āļāļ File Types: āđāļïāļ Entity Classes
from Database āđāļĨïāļ§āļāļ Next
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Entity Classes from Database āđāļŦïāđāļĨāļ·āļāļ Data Source: āđāļïāļ jdbc/test
āđāļāļ·āđāļāđāļĨāļ·āļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļïāļāđāļāļĒāļąāļāļāļēāļĢāļēāļ test āđāļāļāļēāļāļïāļāļĄāļđāļĨ MySQL
43. 43
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. āļāļēāļāļāļąāđāļāđāļŦïāđāļĨāļ·āļāļāđāļāļāļĩāđāļāļēāļĢāļēāļ EMPLOYEES āđāļĨïāļ§āļāļ Add > āđāļĨāļ°āļāļāļāļēāļĢāđāļĨāļ·āļāļ Include Related Tables
āđāļ§ïāļāļēāļĢāļēāļ EMPLOYEES āđāļĨāļ° DEPARTMENTS āļāļ°āļāļđāļāļĒïāļēāļĒāļĄāļēāļāļĒāļđïāđāļ Selected Tables: āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ
4 āđāļĨïāļ§āļāļ Next
āļĢāļđāļāļāļĩāđ 4 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Entity Class āļŠāđāļēāļŦāļĢāļąāļ EMPLOYEES āđāļĨāļ° DEPARTMENTS
5. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļāđāļŦïāļĢāļ°āļāļļ Package: āđāļïāļ entity āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 5 āļāļēāļāļāļąāđāļāļāļ Next āđāļĨāļ° Finish
44. 44
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 5 āđāļŠāļāļāļāļēāļĢāļĢāļ°āļāļļ Package āļŠāđāļēāļŦāļĢāļąāļ Entity Classs āļāļĩāđāļŠāļĢïāļēāļāļāļķāđāļāļĄāļē
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Session Bean
āđāļāļĢāđāļāļĢāļĄNetBeans āļāļ°āļĄāļĩ Wizard āđāļāļ·āđāļāļŠāļĢïāļēāļ Session Bean āļāļēāļ Entity Class āđāļāļ·āđāļāļŠāļĢïāļēāļ Business method
āđāļāļāļēāļĢāļŠāļĢïāļēāļ āđāļïāđāļ āļĨāļ āđāļĨāļ°āđāļĢāļĩāļĒāļāļāļđāļïāļāļĄāļđāļĨāļāļāļ tableāļāļĩāđāļŠāļāļāļāļĨïāļāļāļāļąāļ Entity Class āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ EmployeeWS āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other...
2. āđāļāđāļāļāļ°āļĨāđāļāļ New FileāđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Persistence āđāļĨāļ·āļāļ File Types: āđāļïāļ Session
Beans for Entity Classes āđāļĨïāļ§āļāļ Next
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Session Beans for Entity Classes āļāļ Add All >> āđāļĨïāļ§āļāļāļāļēāļĢāđāļĨāļ·āļāļ Include
Referenced Class āđāļ§ï āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 6 āļāļēāļāļāļąāđāļāļāļ Next
45. 45
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Session Beans For Entity Classes
4. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļāđāļŦïāļĢāļ°āļāļļ Package: āđāļïāļ sb āđāļĨāļ°āđāļĨāļ·āļāļ local āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 7 āđāļĨïāļ§āļāļ Finish
āļĢāļđāļāļāļĩāđ 7 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ Session Bean
46. 46
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļāļķāđāļāđāļĢāļēāļāļ°āđāļï Entity Class āļāļĩāđāļāļ·āđāļ Employees, Departments āđāļĨāļ° Session Bean āļāļĩāđāļāļ·āđāļ AbstractFacade,
EmployeesFacade, EmployeesFacadeLocal āđāļāļĒāđāļĄāļ·āđāļāļāđāļēāļāļēāļĢ Clean and Build āđāļāļĢāđāļāđāļāđāļĨïāļ§
āļāļ°āļĄāļĩāđāļāļĢāļāļŠāļĢïāļēāļāļāļāļāđāļāļĢāđāļāđāļ āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 8
āļĢāļđāļāļāļĩāđ 8 āđāļŠāļāļāđāļāļĢāļāļŠāļĢïāļēāļāļāļāļāđāļāļĢāđāļāđāļ EmployeeWS āļāļĩāđāļāļđāļāļŠāļĢïāļēāļāļāļķāđāļ
āļāļēāļĢāļāļąāļāļāļē Web Service Methods: findEmployeeDetails
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āļŠāļĢïāļēāļ Web Services Method āļāļĩāđāļāļ·āđāļ findEmployeeDetails āđāļ Session Bean āļāļĩāđāļāļ·āđāļ
EmployeesFacade.java āļāļĩāđāļāļąāļāļāļēāļāļēāļāđāļāļāļïāļāļŦāļąāļ Enterprise Java Bean āđāļāļĒ Services āļāļĩāđāļāļ°āļāļ·āļāļïāļē
first_name, last_name āđāļĨāļ° department_name āļāļāļ employee āđāļāļĒāļāļēāļĢāļïāļāļŦāļēāļāļēāļ employee_id
āļāļĩāđāļïāļāļāđāļïāļēāļĄāļē āļāļķāđāļāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļāļĨï EmployeesFacade.java āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ Insert CodeâĶ > Add Business
MethodâĶāļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļāļēāļĢāđāļŠïāļïāļāļĄāļđāļĨāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 3
47. 47
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 3 āđāļŠāļāļāļāļēāļĢāđāļāļīāđāļĄāđāļĄāļāļāļāđāļ Session Bean
2. āđāļāļīāđāļĄ source code āđāļāļĒāđāļāļīāđāļĄāļāđāļēāļŠāļąāđāļ annotation āđāļāļ·āđāļāļāļĢāļ°āļāļēāļĻāđāļŦï session bean āļāļĩāđāđāļïāļ Web Service
āđāļĨāļ°āđāļĄāļāļāļ findEmployeeDetails āđāļïāļ Web Services Method āđāļāļĒāļĄāļĩāļāđāļēāļŠāļąāđāļāļāļąāļāļāļĩāđ
@WebService
@Stateless
public class EmployeesFacade extends AbstractFacade<Employees> implements
EmployeesFacadeLocal {
@PersistenceContext(unitName = "EmployeeWSPU")
private EntityManager em;
protected EntityManager getEntityManager() {
return em;
48. 48
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
}
public EmployeesFacade() {
super(Employees.class);
}
@WebMethod
public List<String> findEmployeeDetails(int employee_id) {
ArrayList<String> result = new ArrayList<String>();
Employees employee = em.find(Employees.class, employee_id);
result.add("First name: " + employee.getFirstName());
result.add("Last name: " + employee.getLastName());
Departments department = employee.getDepartmentId();
result.add("Department name: " + department.getDepartmentName());
return result;
}
}
2. āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ Fix Imports āļāļ OK āđāļĨïāļ§āļāļāļāļļï āļĄ Save
3. āļāđāļēāļāļēāļĢ Clean and Build āđāļĨāļ° Deploy Project
4. āļāļēāļāļāļąāđāļāđāļŦïāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ EmployeeFacade āđāļ Web Services āđāļĨïāļ§āđāļĨāļ·āļāļ Test Web Service
5. āļāļ WSDL File āđāļāļŦāļïāļē Web Browser āļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļāļēāļĢ copy URL āļāļāļ WSDL File āđāļ§ï āđāļïāļ
http://localhost:8080/EmployeesFacadeService/EmployeesFacade?WSDL
49. 49
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application āđāļāļ·āđāļāđāļĢāļĩāļĒāļāđāļï Web Service
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļāļąāļāļāļē Web Application āļāļ Apache Tomcat āđāļāļ·āđāļāđāļĢāļĩāļĒāļāđāļï Web Service āļāļĩāđāļāļ·āđāļ
findEmployeeDetails āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project..
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Web āđāļĨāļ° Projects āđāļïāļ Web Application
āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ EmployeeWSClient āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļ Server āđāļïāļ Apache Tomcat
7.0.14.0 āļāđāļēāļŦāļāļ Jave EE Version: āđāļïāļ Java EE 6 āđāļĨïāļ§āļāļ Finish
4. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ EmployeeWSClient āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other..
5. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Web Services āđāļĨāļ·āļāļ File Types: āđāļïāļ Web
Service Client āđāļĨïāļ§āļāļ Next
6. āđāļāđāļāļāļ°āļĨāđāļāļ New Web Service Client āđāļĨāļ·āļāļ WSDL URL: āđāļĨāļ°āđāļŠïāļïāļē
http://localhost:8080/EmployeesFacadeService/EmployeesFacade?WSDL
7. āļāļ Finish āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļŠāļāļ Web Service Reference āđāļāļĒāļĄāļĩ Service āļāļ·āđāļ EmployeesFacade
8. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ EmployeeWSClient āđāļĨïāļ§āđāļĨāļ·āļāļ New > Servlet..
9. āļāđāļēāļŦāļāļ Servlet Name: āđāļïāļ EmployeeServlet āđāļŠïāđāļ Package: servlets āļāļ Next
10. āļāđāļēāļŦāļāļ URL Pattern(s): āđāļïāļ /findEmployee āđāļĨïāļ§āļāļ Finish
11. āđāļāļŦāļïāļēāļïāļēāļ Projects āļĨāļēāļāđāļŦāļāļ findEmployeeDetails āļĨāļāđāļāđāļāļĨï EmployeeServlet.java āļāļāļāļŦāļïāļēāļïāļēāļ
Editor āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļāļīāđāļĄ source code āđāļŦïāļāļąāļāđāļāļĄāļąāļāļī āđāļŦïāļāļĢāļąāļāļāļĢāļļāļ source code āđāļāļŠïāļ§āļāļāļĩāđāđāļĢāļĩāļĒāļāđāļï Web
Service āļāļąāļāļāļĩāđ
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String id = request.getParameter("id");
int employee_id = Integer.parseInt(id);
List<String> result = findEmployeeDetails(employee_id);
50. 50
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
for (String s : result) {
out.print(s + "<BR>");
}
} finally {
out.close();
}
}
private static java.util.List<java.lang.String>
findEmployeeDetails(int arg0) {
sb.EmployeesFacadeService service = new
sb.EmployeesFacadeService();
sb.EmployeesFacade port = service.getEmployeesFacadePort();
return port.findEmployeeDetails(arg0);
}
12. āļāļāļāļļï āļĄ Save
āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄ
1. āļāđāļēāļāļēāļĢ Build āđāļĨāļ° Deploy āđāļāļĢāđāļāđāļ EmployeeWSClient
2. Run āđāļāļĢāđāļāļĢāļĄ EmployeeServlet āđāļāļĒāđāļŦïāđāļŠïāļïāļēāļāļāļ URI āđāļïāļ /findEmployee?id=100 āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ
4 āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 5
51. 51
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 4 āđāļŠāļāļāļāļēāļĢāļāđāļēāļŦāļāļāļïāļē id
āļĢāļđāļāļāļĩāđ 5 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļāļ employee id=100
3. āļāļāļĨāļāļāđāļāļĨāļĩāđāļĒāļ URL āļāļāļ Web Browser āđāļïāļ
http://localhost:8084/EmployeeWSClient/findEmployee?id=101 āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 6
52. 52
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļāđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļāļ employee id=101
4. āļāļēāļāļāđāļēāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï findEmployee.html āđāļāļ·āđāļāļĢāļąāļāļïāļē employee id āļāļēāļāļāļđïāđāļï āđāļāļĒāļāđāļēāļŦāļāļāđāļŦï
findEmployee.html āđāļĢāļĩāļĒāļāđāļï EmployeeServlet āļāļķāđāļāļāļ°āđāļĢāļĩāļĒāļāđāļï Web Service āđāļāļ·āđāļāđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāļāļāļĩ
53. 53
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 7: RESTful Web Services
āđāļāļāļïāļāļŦāļąāļāđāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ RESTful Web Services āđāļāļĒāđāļïāļāļļāļāļāđāļēāļŠāļąāđāļ JAX-RS
āđāļāļ·āđāļāļŠāļĢïāļēāļ Web Services āļāļĩāđāļāļ°āđāļĢāļĩāļĒāļāļāļđāļïāļāļĄāļđāļĨāļāļēāļāļāļēāļāļïāļāļĄāļđāļĨ MySQL āļïāļēāļāļāļļāļāļāđāļēāļŠāļąāđāļ Java Persistence API (JPA)
āļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ
1. āļŠāļĢïāļēāļ Web Application Project
2. āļāļąāļāļāļē Entity Class
3. āļāļąāļāļāļē RESTful Web Service āļāļēāļ Entity Class
4. āļāļāļŠāļāļ RESTful Web Service āļāļēāļ Entity Class
1. āļāļēāļĢāļŠāļĢïāļēāļ Web Application Project
āđāļĢāļēāļāļ°āļāđāļēāļŦāļāļāđāļŦïāđāļāļĢāđāļāļĢāļĄāļāļĩāđāđāļïāļāđāļāļĢāđāļāļĄ Web Application āļāļąāđāļāļāļāļāđāļĢāļāļāļ°āđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Project
āđāļŦāļĄïāļāļķāđāļāļĄāļēāđāļ NetBeans āļāļķāđāļāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java Web āđāļĨāļ°āđāļĨāļ·āļāļ Project āđāļïāļ Web
Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ RestfulWS āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location āđāļïāļ Directory
āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļ Project āđāļ§ï āļāļ Next
4. āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļ Server āđāļïāļ GlassFish Server 3.1.2 āđāļĨāļ° Java EE 6 Web āđāļĨïāļ§āļāļ Finish
2. āļāļēāļĢāļāļąāļāļāļē Entity Class
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Entity Class āļāļĩāđāļāļ·āđāļ Employees.java
āļāļķāđāļāļāļ°āđāļïāļāļāļāļāđāļāđāļāļāļĩāđāļŠāļāļāļāļĨïāļāļāļāļąāļāļāļēāļĢāļēāļāļāļĩāđāļāļ·āđāļ employees āđāļ Oracle āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ RestfulWS āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Persistence āđāļĨāļ·āļāļ File Types: āđāļïāļ Entity
Classes from Database āđāļĨïāļ§āļāļ Next
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Entity Classes from Database āđāļŦïāđāļĨāļ·āļāļ Data Source: āđāļïāļ jdbc/test
54. 54
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. āļāļ OK āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāđāļāļāļēāļ° books āđāļĨïāļ§āļāļ Add >
5. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļāđāļŦïāļĢāļ°āļāļļ Package: āđāļïāļ entity āđāļĨāļ°āļāļ Finish
3. āļāļēāļĢāļāļąāļāļāļē Restful Web Service āļāļēāļ Entity Class
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļāļąāļāļāļē Restful Web Services āđāļāļ·āđāļāđāļŦïāļŠāļēāļĄāļēāļĢāļāļāļīāļāļïāļāļāļąāļāļāļēāļāļïāļāļĄāļđāļĨāđāļāļĒāļïāļēāļ Entity Class
āļāļĩāđāļāļąāļāļāļēāļāļķāđāļāđāļï āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ RestfulWS āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Web Services āđāļĨāļ·āļāļ File Types: āđāļïāļ RESTful
Web Services from Entity Classes āđāļĨïāļ§āļāļ Next
4. āđāļāđāļāļāļ°āļĨāđāļāļ New RESTful Web Services from Entity Class āļāļ Add All >>
āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 1 āđāļĨïāļ§āļāļ Next āļāļēāļāļāļąāđāļāļāļ Finish
āļĢāļđāļāļāļĩāđ 1 āļāļēāļĢāđāļĨāļ·āļāļ Entity Class āļŠāđāļēāļŦāļĢāļąāļ RESTful Web Service
55. 55
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. āļāļēāļĢāļāļāļŠāļāļ RESTful Web Service āļāļēāļ Entity Class
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļāļāļŠāļāļ RESTful Web Services āļāļĩāđāļāļąāļāļāļēāļāļķāđāļāđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ RestfulWS āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Test Restful Web
Services
2. āđāļāļĢāđāļāļĢāļĄ Browser āļāļ°āđāļŠāļāļ uri āļāļāļ RESTful Web Services āđāļŦïāļāļĨāļīāđāļāļāļĩāđāđāļŦāļāļ entity.books
āđāļĨāļ°āļāļĨāļīāđāļāļāļļï āļĄ Test āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāļĢāļđāļāļāļĩāđ 2
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļāļāļŦāļāļąāļāļŠāļ·āļāļāļąāđāļāļŦāļĄāļāļāļĩāđāļĄāļĩāļāļĒāļđï
56. 56
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
3. āđāļŦïāļāļĨāļīāđāļāļāļĩāđ {id} āđāļĨāļ°āļāļāļĨāļāļāļïāļāļāļïāļāļĄāļđāļĨ id āđāļïāļ 111 āđāļĨïāļ§āļāļāļāļļï āļĄ Test āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļ§āļāļĒïāļēāļāļāļąāļāļĢāļđāļāļāļĩāđ 3
āļĢāļđāļāļāļĩāđ 3 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļāļāļŦāļāļąāļāļŠāļ·āļāļāļĩāđāļĄāļĩ id (isbn) āđāļïāļēāļāļąāļ 111
4. āļāļāļĨāļāļāđāļāļĨāļĩāđāļĒāļ methodāđāļïāļ DELETE āđāļāļ·āđāļāļāļāļĨāļāļāļāđāļēāļāļēāļĢāļĨāļāļïāļāļĄāļđāļĨāļāļāļāļāļēāļāļāļēāļĢāļēāļ books
57. 57
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 8: Google Map Web Services
āđāļāļāļïāļāļŦāļąāļāđāļāļāļāļāļĩāđāđāļïāļāļāļąāļ§āļāļĒïāļēāļāļāļēāļĢāļāļąāļāļāļē Web Services āđāļĨāļ°āđāļï Web Application
āđāļĢāļĩāļĒāļāđāļāļ·āđāļāđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļĢāļāļāļĒāļēāļāļēāļĨāļāļĩāđāđāļāđāļāļāļĩāđāļāļĒāļđïāđāļāļāļēāļāļïāļāļĄāļđāļĨ āļāļķāđāļāļĄāļĩāļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđ
1. āļŠāļĢïāļēāļāļāļēāļāļïāļāļĄāļđāļĨāđāļĢāļāļāļĒāļēāļāļēāļĨ
2. āļŠāļĢïāļēāļ Enterprise Application Project
3. āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Entity Class
4. āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ BkkHospitalFacade (Session Bean)
5. āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ HospitalSelector.java
6. āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ DisplayLocation.java
1. āļāļēāļĢāļŠāļĢïāļēāļāļāļēāļāļïāļāļĄāļđāļĨāđāļĢāļāļāļĒāļēāļāļēāļĨ
āļāļąāđāļāļāļāļāđāļĢāļāļāļ°āđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ table āđāļĨāļ°āđāļāļĢāļĩāļĒāļĄāļïāļāļĄāļđāļĨāđāļāļ·āđāļāđāļïāđāļāđāļāļāļïāļāļŦāļąāļ āđāļāļĒāđāļïāđāļāļĢāđāļāļĢāļĄ NetBeans
āđāļāļ·āđāļāļŠāļĢïāļēāļ Table āļāļĩāđāļāļ·āđāļ bkk_hospital āđāļāļāļēāļāļïāļāļĄāļđāļĨ Oracle āđāļāļĒāđāļŦïāļāđāļēāļāļēāļĢāļĢāļąāļāđāļāļĨï 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;
58. 58
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
INSERT INTO bkk_hospital(name,address,city,zipcode) VALUES('Siriraj Hospital',
'2 Prannok road Siriraj Bangkoknoi', 'Bangkok', '10700');
INSERT INTO bkk_hospital(name,address,city,zipcode) VALUES('Vibhavadi Hospital',
'51/3 Ngamwongwan Road Ladyao Jatujak', 'Bangkok', '10900');
INSERT INTO bkk_hospital(name,address,city,zipcode) VALUES('Rajavithi Hospital',
'Phaya Thai Road, Phaya Thai', 'Bangkok', '10400');
2. āļāļēāļĢāļŠāļĢïāļēāļ Enterprise Application Project
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļŠāļĢïāļēāļ Project āļāļĩāđāđāļïāļ Enterprise Application āđāļāļĒāļĄāļĩ Entity Class āļāļĩāđāļāļ·āđāļ BkkHospital
āđāļāļ·āđāļāļāđāļē ORM (Obeject Relational Mapping) āļāļąāļ table āļāļĩāđāļāļ·āđāļ bkk_hospital āđāļĨāļ°āļĄāļĩāđāļāļĢāđāļāļĢāļĄ Java Servlet
āđāļāļāļēāļĢāđāļŠāļāļāļĢāļēāļĒāļāļ·āđāļāđāļĢāļāļāļĒāļēāļāļēāļĨāļāļĩāđāļāļĒāļđïāđāļāļāļēāļāļïāļāļĄāļđāļĨāđāļŦïāļāļđïāđāļïāđāļĨāļ·āļāļ āđāļāļ·āđāļāđāļŠāļāļāļāđāļēāđāļŦāļïāļāļāļāļāđāļĢāļāļāļĒāļēāļāļēāļĨāļāļēāļāđāļ
Google Map āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĢāđāļāđāļāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java EE āđāļĨāļ°āđāļĨāļ·āļāļ Projects āđāļïāļ Enterprise
Application Project āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name: āđāļïāļ BkkHospitalGoogleMap āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location: āđāļïāļ Directory
āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļ Project āđāļ§ï āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļ Server āđāļïāļ GlassFish Server 3.1.2 āđāļĨïāļ§āļāļ Finish
3. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Entity Class
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Entity Class āļāļēāļ table āļāļĩāđāļāļ·āđāļ bkk_hospital āļāļķāđāļāļĄāļĩāļāļēāļĢāļŠāļĢïāļēāļāļĄāļēāļïāļāļāđāļĨïāļ§
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BkkHospitalGoogleMap āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New >
Other
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Persistence āđāļĨāļ·āļāļ File Types: āđāļïāļ Entity
Classes from Database āđāļĨïāļ§āļāļ Next
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Entity Classes from Database āđāļŦïāđāļĨāļ·āļāļ Data Source: jdbc/test
4. āđāļĨāļ·āļāļ bkk_hospital āļāļēāļāļāļąāđāļāļāļ Add āđāļāļ·āđāļāđāļĨāļ·āļāļāđāļŦïāđāļïāļ Selected Tables: āđāļĨïāļ§āļāļ Next
5. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļāđāļŦïāļĢāļ°āļāļļ Package: āđāļïāļ entity āđāļĨïāļ§āļāļ Finish
59. 59
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ BkkHospitalFacade (Session Bean)
āđāļāļĢāđāļāļĢāļĄ BkkHospitalFacade āļāļ°āđāļïāļ Session Bean āđāļāļ·āđāļāļŠāļĢïāļēāļ Business method āđāļāļāļēāļĢāļŠāļĢïāļēāļ āđāļïāđāļ
āļĨāļ āđāļĨāļ°āđāļĢāļĩāļĒāļāļāļđāļïāļāļĄāļđāļĨāļāļāļ table āļāļĩāđāļŠāļāļāļāļĨïāļāļāļāļąāļ Entity Class āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BkkHospitalGoogleMap-ejb āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New
> Other
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Persistence āđāļĨāļ·āļāļ File Types: āđāļïāļ Session
Beans for Entity Classes āđāļĨïāļ§āļāļ Next
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Session Beans for Entity Classes āļāļ Add All > > āđāļĨïāļ§āļāļ Next
4. āđāļāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļāđāļŦïāļĢāļ°āļāļļ Package: āđāļïāļ sb āļŠïāļ§āļāļïāļēāļāļ·āđāļāđ āđāļïāļāļāļēāļĄāļāļĩāđāļāļąāđāļāđāļ§ï āđāļĨïāļ§āļāļ Finish
5. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ HospitalSelector.java
āđāļāļĢāđāļāļĢāļĄ HospitalSelector.java āđāļïāļāđāļāļĢāđāļāļĢāļĄāļāļēāļ§āļē Servlet āđāļāļ·āđāļāđāļŠāļāļāļĢāļēāļĒāļāļ·āđāļāđāļĢāļāļāļĒāļēāļāļēāļĨāļāļĩāđāļāļđāļāļāļąāļāđāļāđāļ
āļāļĒāļđïāđāļāļāļēāļāļïāļāļĄāļđāļĨ āđāļāļĒāļāļ°āđāļŠāļāļāđāļāļĢāļđāļāļāļāļ radio āđāļāļ·āđāļāđāļŦïāļāļđïāđāļïāđāļĨāļ·āļāļ āđāļĨāļ°āđāļĄāļ·āđāļāļāļđïāđāļïāđāļĨāļ·āļāļāđāļĢāļāļāļĒāļēāļāļēāļĨāđāļĨïāļ§āđāļāļĢāđāļāļĢāļĄāļāļĩāđ
āļāļ°āđāļĢāļĩāļĒāļāđāļïāđāļāļĢāđāļāļĢāļĄ Servlet āļāļĩāđāļāļ·āđāļ DisplayLocation.java āđāļāļ·āđāļāđāļŠāļāļāļāđāļēāđāļŦāļïāļāļāļāļāđāļĢāļāļāļĒāļēāļāļēāļĨāđāļāļĒāđāļï Google
Map Web Services
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ HospitalSelector.java āļāļēāļĄāļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļē Java Servlet āļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BkkHospitalGoogleMap-war āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New
> Other
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Web āđāļĨāļ·āļāļ File Types: āđāļïāļ Servlet āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Class Name: āđāļïāļ HospitalSelector āđāļĨāļ° Package āđāļïāļ controller āđāļĨïāļ§āļāļ Finish
4. āđāļāļŦāļïāļēāļïāļēāļ Editor āļ āļēāļĒāđāļāđāļĄāļāļāļ processRequest āđāļŦïāļĨāļ Comment āļāļąāđāļāļŦāļĄāļāļāļĩāđāļāļĒāļđïāļ āļēāļĒāđāļāđāļāļĢāļ·āđāļāļāļŦāļĄāļēāļĒ
/* âĶ */ āļĢāļ°āļŦāļ§ïāļēāļāļāđāļēāļŠāļąāđāļ try āđāļĨāļ° finally
5. āļāļĨāļīāđāļāļāļ§āļēāļĢāļ°āļŦāļ§ïāļēāļāļāđāļēāļŠāļąāđāļ try āđāļĨāļ° finally āđāļĨïāļ§āđāļĨāļ·āļāļ Insert Code āļāļēāļāļāļąāđāļāđāļŦïāđāļĨāļ·āļāļ Call Enterprise Bean
āđāļĨïāļ§āđāļĨāļ·āļāļ BkkHospitalFacade āļāļĩāđāļāļĒāļđïāđāļ BkkHospitalGoogleMap-ejb āđāļĨïāļ§āļāļ OK
6. āđāļāļīāđāļĄāđāļāļīāļĄ source code āđāļŦïāđāļïāļāļāļąāļāļāļĩāđ
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
61. 61
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
6. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ DisplayLocation.java
āđāļāļĢāđāļāļĢāļĄ DisplayLocation.java āđāļïāļāđāļāļĢāđāļāļĢāļĄ Servlet āļāļĩāđāđāļĢāļĩāļĒāļāđāļïāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāļāļāļ Google Map
āđāļāļ·āđāļāđāļŠāļāļāđāļāļāļāļĩāđāļāļāļāđāļĢāļāļāļĒāļēāļāļēāļĨāļāļĩāđāđāļĨāļ·āļāļāļāļēāļ HospitalSelector.java āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ BkkHospitalGoogleMap-war āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New
> Other
2. āđāļāđāļāļāļ°āļĨāđāļāļ New FileāđāļŦïāđāļĨāļ·āļāļ Categories āļāļĩāđāļāļ·āđāļ Web āđāļĨāļ·āļāļ File Types: āđāļïāļ Servlet āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Class Name: āđāļïāļ DisplayLocation āđāļĨāļ°āđāļĨāļ·āļāļ Package āđāļïāļ controller āđāļĨïāļ§āļāļ Finish
4. āđāļāļŦāļïāļēāļïāļēāļ Editor āļāļĨāļīāđāļāļāļ§āļēāļ āļēāļĒāđāļāđāļĄāļāļāļ processRequest() āđāļĨïāļ§āđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Insert Code.. > Call
Enterprise Bean ...āđāļĨïāļ§āđāļĨāļ·āļāļ BkkHospitalFacade āļāļĩāđāļāļĒāļđïāđāļ BkkHospitalGoogleMap-ejb
5. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Services āđāļĨïāļ§āļāļĒāļēāļĒāđāļŦāļāļ Web Services > Google > Map Service
6. āļĨāļēāļāđāļāļāļĢïāļ§āļīāļŠ getGoogleMap āļĄāļēāđāļŠïāđāļ§ïāđāļāļŦāļïāļēāļïāļēāļ Editor āļāļĩāđāđāļŠāļāļ source code āļāļāļāđāļāļĨï
DisplayLocation.java āđāļĨïāļ§āđāļïāđāļ source code āđāļāđāļĄāļāļāļ processRequest() āļāļąāļāļāļĩāđ
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
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());
} finally {
out.close();
}
62. 62
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
7. āđāļāļĢāđāļāļĢāļĄāļāļĩāđāļāļ°āđāļĢāļĩāļĒāļāđāļïāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāļāļāļ Google Map āļāļķāđāļāđāļĢāļēāļāļ°āļïāļāļāļāđāļēāļāļēāļĢāļĨāļāļāļ°āđāļāļĩāļĒāļāļāļĩāđ url āļāļĩāđāļāļ·āđāļ
http://code.google.com/apis/maps/signup.html āđāļāļĒāļāđāļēāļŦāļāļāļïāļē My web site URL āđāļïāļ
http://localhost:8080 āđāļĨïāļ§āļāļāļāļļï āļĄ Generate API Key
8. āļāđāļēāļāļēāļĢāļāđāļāļāļïïāļïāļē API Key āļāļĩāđāđāļïāđāļāđāļŠïāđāļāđāļāļĨïāļāļĩāđāļāļ·āđāļ googlemapservices.properties āļāļĩāđāļāļĒāļđïāļ āļēāļĒāđāļāđāļŦāļāļ
BkkHospitalGoogleMap-war > Source Packages > org.netbeans.saas.google āļāļąāļāļāļąāļ§āļāļĒïāļēāļāđāļïāļ
api_key=ABQIAAAAMB8Fi4WQk4tMcbmiA9JGFhTwM0brOpm-
All5BF6PoaKBxRWWERSQ1U63ApJ18ThqyosJ6592jq20Bg
āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄ
1. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ BkkHospitalGoogleMap āđāļāļ·āđāļāļāđāļēāļāļēāļĢ Build āđāļĨāļ° Deploy
2. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ BkkHospitalGoogleMap āđāļāļ·āđāļāļāđāļēāļāļēāļĢ Run
3. āļāļīāļĄāļï URL āļāļāļ Web Browser āđāļïāļ http://localhost:8080/BkkHospitalGoogleMap-
war/HospitalSelector āđāļĨāļ°āđāļŦïāđāļĨāļ·āļāļāđāļĢāļāļāļĒāļēāļāļēāļĨāđāļāļ·āđāļāļāļđāļāđāļēāđāļŦāļïāļāļāļēāļāđāļ Google Map āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 2
63. 63
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 2 āļāļĨāļĨāļąāļāļïāđāļāļāļēāļĢāđāļŠāļāļāļāđāļēāđāļŦāļïāļāļāļāļāđāļĢāļāļāļĒāļēāļāļēāļĨāļāļēāļāđāļ Google Map
64. 64
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 9: āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāđāļ§āđāļāđāļāļ·āđāļāļāļīāļāļïāļāļāļēāļāļïāļāļĄāļđāļĨ
MongoDB
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application āđāļāļĒāđāļï Java Servlet āđāļāļ·āđāļāđāļāļ·āđāļāļĄāļïāļāļāļąāļ
āļāļēāļāļïāļāļĄāļđāļĨāļāļĩāđāđāļïāļ NoSQL āļāļĒïāļēāļ MongoDB āļāļķāđāļāđāļïāļāļāļēāļāļïāļāļĄāļđāļĨāļāļĩāđāđāļāđāļāļïāļāļĄāļđāļĨāđāļāļ Document āđāļāļĢāļđāļāđāļāļāļāļāļ JSON
āđāļĨāļ°āļĄāļĩāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļĢāđāļāđāļāļïāļāļĄāļđāļĨāļāļāļēāļāđāļŦāļïāđāļï
āļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ
1. āļāļīāļāļāļąāđāļ MongoDB
2. āļāļāļĨāļāļāđāļï MongoDB
3. āđāļāļĩāļĒāļāđāļāļĢāđāļāļĢāļĄ Java Servlet āđāļāļ·āđāļāđāļāļ·āđāļāļĄāļïāļāļāļąāļ MongoDB
1. āļāļēāļĢāļāļīāļāļāļąāđāļ MongoDB
āđāļāļĢāđāļāļĢāļĄāļāļēāļāļïāļāļĄāļđāļĨ MongoDB āļŠāļēāļĄāļēāļĢāļāļāđāļēāļāļēāļāđāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒāļāļąāđāļ Windows, Mac
OS āļŦāļĢāļ·āļ Linux āļŠāđāļēāļŦāļĢāļąāļāļāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢ Windows āļŠāļēāļĄāļēāļĢāļāļāļīāļāļāļąāđāļāđāļïāđāļāļĒāļāļēāļĢāļāļēāļ§āļïāđāļŦāļĨāļāđāļāļĨï Binary
āļāļēāļāđāļ§āđāļāđāļāļï http://www.mongodb.org/downloads āļāļķāđāļāđāļĄāļ·āđāļāļāđāļēāļāļēāļĢāļāļēāļ§āļïāđāļŦāļĨāļāđāļāļĨïāļāļąāļāļāļĨïāļēāļ§āđāļĨïāļ§ āđāļŦïāļāđāļēāļāļēāļĢ unzip
āđāļāđāļāđāļāļĨïāđāļ§ïāđāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļāļĩāđāļïāļāļāļāļēāļĢ āđāļāļĒāđāļĢāļēāļāļ°āļĄāļĩāđāļāļĨïāļïāļēāļāđ āļāļąāļāļĢāļđāļāļāļĩāđ 1
65. 65
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 1 āđāļāļĨïāđāļāļāļēāļĢāļĩāđāļïāļēāļāđ āļāļāļ MongoDB
āļāļķāđāļāđāļāļĨïāļāļĩāđāļŠāđāļēāļāļąāļāļāđāļāļ·āļ
âĒ mongod.exe āļāļĩāđāđāļïāļ Database Server
âĒ mongo.exe āļāļĩāđāđāļïāļāļŦāļïāļēāļāļāļāļāļ admin
āđāļāļĒ Default MongoDB āļāļ°āđāļāđāļāļïāļāļĄāļđāļĨāđāļ§ïāļāļĩāđāđāļāđāļĢāđāļāļāļāļĢāļĩāđ datadb āļāļķāđāļāđāļĢāļēāļāļ°āļïāļāļāđāļāļŠāļĢïāļēāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđāļāļąāļāļāļĨïāļēāļ§
āļ āļēāļĒāđāļï Drive C
2. āļāļēāļĢāļāļāļĨāļāļāđāļï MongoDB
āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°āļāļāļĨāļāļāļāļēāļĢāđāļïāļāļēāļ MongoDB āđāļāļĒāļāļēāļĢāđāļïāļāđāļāļĢāđāļāļĢāļĄ Mongo.exe āļāļķāđāļāļāđāļāļ°āđāļïāļāđāļāļĢāđāļāļĢāļĄ
command shell āļāļāļ administrator āđāļĨāļ°āđāļāļĒ Default āļāđāļāļ°āļāđāļēāļŦāļāļāđāļïāļāļēāļāļïāļāļĄāļđāļĨāļāļĩāđāļāļ·āđāļ test āļāļķāđāļāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°
āđāļŠāļāļāļāļēāļāļïāļāļĄāļđāļĨāļāļĩāđāđāļïāļāļĒāļđïāđāļï āđāļāļĒāļāļēāļĢāļāļīāļĄāļïāļāđāļēāļŠāļąāđāļ
> db
72. 72
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 10: Developing a Simple Synchronous
BPEL Program
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāđāļïāļāļāļēāļĢāļāļāļāđāļāļāđāļĨāļ°āļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāļāļĢāļ°āđāļ āļ BPEL āđāļāļ·āđāļāđāļŠāļāļāļāļąāļ§āļāļĒïāļēāļāļāļēāļĢāđāļāļĩāļĒāļ
Business Process āđāļāļ Synchronous āđāļāļĒāļāļ°āļĄāļĩāļāļēāļĢāđāļï NetBeans āļāļķāđāļāđāļïāļāļāļĢāļĩāđāļāļĢāđāļāļĢāļĄāļāļĢāļ°āđāļ āļ IDE
āđāļāļāļēāļĢāļāļāļāđāļāļāđāļāļĢāđāļāļĢāļĄāđāļāļ·āđāļāļŠāļĢïāļēāļāđāļāļĨï WSDL āđāļĨāļ°āđāļāļĨï BPEL āđāļĨāļ°āđāļï GlassFish āļāļķāđāļāđāļïāļ Open Source
Application Server āļāļĩāđāļĄāļēāļāļĢïāļāļĄāļāļąāļ Open ESB āđāļāļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄ āđāļāļĒāđāļāļĢāđāļāļĢāļĄ BPEL Process
āļāļĩāđāļāļ°āļāļąāļāļāļēāļāļķāđāļāđāļāđāļāļāļïāļāļŦāļąāļāļāļĩāđ āđāļïāļāļāļļāļĢāļāļĢāļĢāļĄāđāļāļ·āđāļāļāđāļēāļāļēāļĢāļāļąāļāļĨāļāļāļïāļāļāļ§āļēāļĄ āļāļķāđāļāļĄāļĩāļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļāļąāļāļāļĩāđ
1. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ HelloBPEL
2. āļāļąāļāļāļēāđāļāļĨï WSDL
3. āļāļąāļāļāļē BPEL Process
4. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ Composite Application
1. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāđāļ HelloBPEL
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļāđāļēāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĢāđāļāđāļāļŠāđāļēāļŦāļĢāļąāļ Service Oriented Architecture āļāļķāđāļāļĄāļēāđāļŦāļĄï
āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ SOA āđāļĨāļ° Projects āđāļïāļ BPEL Module
āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ HelloBPEL āđāļĨïāļ§āļāļ Finish
2. āļāļēāļĢāļāļąāļāļāļēāđāļāļĨï WSDL
āļāļąāđāļāļāļāļāļāļąāļāđāļāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāļāļĩāđāļāļ°āđāļïāđāļāđāļāļĢāđāļāđāļ
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ HelloBPEL āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Process Files
āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > WSDL Document
2. āđāļāđāļāļāļ°āļĨāđāļāļ New WSDL DocumentāļāđāļēāļŦāļāļ File Name: āđāļïāļ HelloSample āđāļĨāļ·āļāļ WSDL Types:
āđāļïāļ Concrete WSDL Document āđāļĨāļ°āđāļĨāļ·āļāļ Type: āđāļïāļ RPC Literal āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 1 āļāļēāļāļāļąāđāļāļāļ
Next āđāļāļ·āđāļāđāļāļŦāļïāļēāļāļąāļāđāļ
73. 73
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 1 āđāļŠāļāļāļāļēāļĢāļŠāļĢïāļēāļ WSDL Document āđāļïāļāđāļāļ SOAP
3. āđāļāļŠïāļ§āļāļāļāļ Input: āļāđāļēāļŦāļāļ Message Part Name āđāļïāļ inputType (āđāļĄāļ·āđāļāđāļŠïāļïāļāļĄāļđāļĨāđāļŠāļĢāđāļāđāļĨïāļ§ āļïāļāļāļāļ
Enter āļŦāļāļķāđāļāļāļĢāļąāđāļāđāļŠāļĄāļ) āđāļĨāļ°āļŠïāļ§āļāļāļāļOutput: āļāđāļēāļŦāļāļ Message Part Name āđāļïāļ resultType
āļāļķāđāļāļāļ°āđāļïāđāļāļāļ°āļĨāđāļāļāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 2
74. 74
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢāļāđāļēāļŦāļāļāļïāļēāđāļŦïāļāļąāļ WSDL Document
4. āļāļ Next > āđāļĨïāļ§āļāļ Finish āļāļ°āđāļïāđāļāļĨï HelloSample.wsdl āļāļąāļāļĢāļđāļāļāļĩāđ 3
75. 75
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 3 āđāļŠāļāļāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļāļĨï HelloSample.wsdl
3. āļāļēāļĢāļāļąāļāļāļē BPEL Process
āļāļąāđāļāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï BPEL āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄ Business Process āļāļĩāđāļāļ°āđāļïāđāļāđāļāļĢāđāļāđāļ
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1) āļāļēāļĢāđāļāļīāđāļĄ partner link
āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĩāđāđāļāļĨï helloBPEL.bpel āđāļĨïāļ§āļĨāļēāļāđāļāļāļāļ HelloSample.wsdl āđāļāļŦāļïāļēāļïāļēāļ Project
āļĄāļēāđāļ§ïāļ āļēāļĒāđāļïāļŦāļïāļēāļïāļēāļ design āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 4
āļĢāļđāļāļāļĩāđ 4 āđāļŠāļāļāļāļēāļĢāđāļāļīāđāļĄ PartnerLink āđāļïāļēāđāļāđāļ helloBPEL.bpel
78. 78
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 7 āđāļŠāļāļāļāļēāļĢāļāđāļēāļŦāļāļāļïāļēāļāļāļ inputType āđāļāļĒāļąāļ resultType
3. āđāļĄāļ·āđāļāđāļĨāļ·āļāļāļāļĨāļąāļāļĄāļēāļāļĩāđāđāļïāļ Design āļāļ°āđāļï BPEL Process āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 8
āļĢāļđāļāļāļĩāđ 8 āđāļŠāļāļ BPEL Process āļāļāļ helloBPEL.pbel
4. āļāļāļāļļï āļĄ Save
79. 79
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāđāļ Composite Application
āļāļąāđāļāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Composite Application āđāļāļ·āđāļāļĢāļąāļ SampleBPEL āļāļ BPEL Engine
āļāļĩāđāđāļïāļĄāļēāļāļĢāļāļēāļ JBI āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File => New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ SOA āđāļĨāļ° Projects āđāļïāļ Composite
Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ HelloApplication āđāļĨïāļ§āļāļ Finish
4. āđāļŦïāļĨāļēāļāđāļāļĢāđāļïāļ HelloBPEL āļāļĩāđāļāļĒāļđïāđāļāļŦāļïāļēāļïāļēāļ Project āļĄāļēāđāļŠïāđāļ JBI Modules āļāļĩāđāļāļĒāļđïāđāļāļŦāļïāļēāļïāļēāļ Design
āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 9
āļĢāļđāļāļāļĩāđ 9 āđāļŠāļāļāđāļāļīāđāļĄ JBI Modules āđāļ HelloApplication
5. āļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļāļēāļĢāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ HelloApplication āđāļĨïāļ§āđāļĨāļ·āļāļ Clean and Build
āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 10
āļĢāļđāļāļāļĩāđ 10 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢ Clean and Build āđāļāļĢāđāļïāļ HelloApplication
80. 80
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄ
1. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļāļĢāđāļāđāļ HelloApplication āđāļĨïāļ§āđāļĨāļ·āļāļ Deploy
2. āđāļāļŦāļïāļēāļïāļēāļ Project āđāļĨāļ·āļāļāđāļŦāļāļ HelloApplication > Test āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ New Test Case
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Test Case āđāļŦïāļāđāļēāļŦāļāļ Test Case Name: āđāļïāļ TestCase1 āđāļĨïāļ§āļāļ Next
4. āđāļāļŦāļïāļēāļāļąāļāđāļāđāļŦïāđāļĨāļ·āļāļāđāļāļĨï WSDL āđāļïāļ HelloSample.wsdl āļāļĩāđāļāļĒāļđïāđāļ HelloBPEL āđāļĨïāļ§āļāļ Next
5. āđāļāļŦāļïāļēāļāļąāļāđāļāđāļŦïāđāļĨāļ·āļāļ HelloSampleOperation āđāļĨïāļ§āļāļ Finish
6. āļŦāļïāļēāļïāļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨï Input.xml āđāļŦïāđāļï source code āļŠïāļ§āļ inputType āļāļąāļāļāļĩāđ
<inputType>Hello Thana</inputType>
7. āđāļĨāļ·āļāļāđāļŦāļāļ TestCase1 āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ Run
8. āļāļ°āđāļŦāđāļāļāļĨāļĨāļąāļāļïāļāļĢāļēāļāļāđāļāđāļāļĨï Output.xml āļāļąāļāđāļŠāļāļāđāļ Listing āļāļĩāđ 1 [āļŦāļĄāļēāļĒāđāļŦāļāļļāļāļēāļĢāđāļŠāļāļāļāļĨāļāļĩāđāđāļïāļ Failed
āđāļāļīāļāļāļķāđāļāđāļāļ·āđāļāļāļāļēāļāļĄāļĩāļāļēāļĢāļāđāļēāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāđāļāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļāļāļąāļāđāļāļĨï Output.xml āļāļķāđāļāļïāļēāđāļĄïāļāļĢāļāļāļąāļ
āļāđāļāļ°āđāļŠāļāļāļāļĨāļĨāļąāļāļïāđāļïāļ Failed āļāļąāļāļāļąāđāļāļāļēāļĢāļĢāļąāļāļāļĢāļąāđāļāđāļĢāļ āļāļķāđāļāļĒāļąāļāđāļĄïāļĄāļĩāļïāļāļĄāļđāļĨāđāļ Output.xml āđāļŦïāđāļāļĢāļĩāļĒāļāđāļāļĩāļĒāļ
āļāļķāļāđāļïāļāļĨāļĨāļąāļāļïāđāļïāļ Failed āđāļïāļïāļēāđāļĢāļēāđāļĨāļ·āļāļ Run āđāļāļāļĢāļąāđāļāļāļąāļāđāļ āđāļāļĒāļāļĩāđāđāļĄïāđāļïāđāļāļĨāļĩāđāļĒāļāļïāļēāđāļ Input.xml
āļāļ°āļāđāļēāđāļŦïāđāļïāļāļĨāļĨāļąāļāļïāļāļĢāļāļāļąāļāļïāļāļĄāļđāļĨāđāļ Output.xml āļāđāļāļ°āđāļĄïāđāļŠāļāļāļāļĨāđāļïāļ Failed āļāļĩāļāļïāļāđāļ
āļāļąāļāđāļŠāļāļāļāļąāļ§āļāļĒïāļēāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢāļĢāļąāļāđāļāļĢāļđāļāļāļĩāđ 11
āļĢāļđāļāļāļĩāđ 11 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢāļĢāļąāļ TestCase1
81. 81
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Listing āļāļĩāđ 1 āļāļĨāļĨāļąāļāļïāļāļĩāđāļāļĒāļđïāđāļāđāļāļĨï Output.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:HelloSampleOperationResponse
xmlns:m="http://j2ee.netbeans.org/wsdl/HelloBPEL/HelloSample">
<resultType>Hello Thana</resultType>
</m:HelloSampleOperationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
82. 82
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 11: BPEL for Writing to File
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Business Process āđāļāļ·āđāļāđāļāļĩāļĒāļāļïāļāļĄāļđāļĨāļāļĩāđāđāļïāļĢāļąāļāļāļđïāđāļïāļāļēāļāļĨāļāđāļāļĨï āđāļāļĒāđāļïāđāļāļĢāđāļāļĢāļĄ
BPEL
āļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ
1. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ FileBPEL
2. āļāļąāļāļāļēāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļ SOAPBinding
3. āļāļąāļāļāļēāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļ FileBinding
4. āļāļąāļāļāļē BPEL Process
5. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ Composite Application
6. āļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāļïāļēāļ TestCase
7. āļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāļïāļēāļ Web Application
1. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāđāļ FileBPEL
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļāđāļēāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĢāđāļāđāļāļŠāđāļēāļŦāļĢāļąāļ Service Oriented Architecture āļāļķāđāļāļĄāļēāđāļŦāļĄï
āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ SOA āđāļĨāļ° Projects āđāļïāļ BPEL Module
āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ FileBPEL āđāļĨïāļ§āļāļ Finish
2. āļāļēāļĢāļāļąāļāļāļēāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļ SOAPBinding
āļāļąāđāļāļāļāļāļāļąāļāđāļāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļ SOAPBinding āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄ Business Process
āļāļĩāđāļāļ°āļāļąāļāļāļēāļāļķāđāļ āđāļāļ·āđāļāđāļŦïāļŠāļēāļĄāļēāļĢāļāđāļĢāļĩāļĒāļāđāļïāđāļïāļāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāđāļï āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Process Files āđāļĨāļ·āļāļ New > WSDL Document
2. āđāļāđāļāļāļ°āļĨāđāļāļ New WSDL Document āļāđāļēāļŦāļāļ File Name: āđāļïāļ DataIO āļāđāļēāļŦāļāļ WSDL Type: āđāļïāļ
Concrete WSDL Document āđāļĨāļ°āļāđāļēāļŦāļāļ Binding āđāļïāļ SOAP āđāļĨāļ° Types āđāļïāļ RPC Literal
āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 1 āđāļĨïāļ§āļāļ Next
83. 83
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 1 āđāļŠāļāļāļāļēāļĢāļāđāļēāļŦāļāļāļïāļē WSDL Document
3. āđāļāļŦāļïāļēāļāļąāļāđāļ āļŠāđāļēāļŦāļĢāļąāļāļŠïāļ§āļāļāļāļ Input: āļāđāļēāļŦāļāļ Message Part Name āđāļïāļ id āļāļ Add āđāļĨïāļ§āđāļāļīāđāļĄ input
āļŠāđāļēāļŦāļĢāļąāļ firstName, lastName, salary (int) āđāļĨāļ°āļŠāđāļēāļŦāļĢāļąāļāļŠïāļ§āļāļāļāļOutput: āļāđāļēāļŦāļāļ Message Part
Name āđāļïāļ result āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 2 āļāļēāļāļāļąāđāļāļāļ Next āđāļĨïāļ§āļāļ Finish
84. 84
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļāļāļēāļĢāđāļŠïāļïāļē Input āđāļĨāļ° Output Messages
3. āļāļēāļĢāļāļąāļāļāļēāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļ FileBinding
āļāļąāđāļāļāļāļāļāļąāļāđāļāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļ FileBinding āđāļāļ·āđāļāđāļāļĩāļĒāļāļĨāļāđāļāļĨï
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Process Files āđāļŦïāđāļĨāļ·āļāļ New > WSDL Document
2. āđāļāđāļāļāļ°āļĨāđāļāļ New WSDL Document āļāđāļēāļŦāļāļ File Name: āđāļïāļ FileResult āđāļŦïāđāļĨāļ·āļāļ WSDL Type:
āđāļïāļ Concrete WSDL Document Binding āđāļïāļ FILE āđāļĨāļ° Types āđāļïāļ Write āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 3
āļāļēāļāļāļąāđāļāļāļ Next
85. 85
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 3 āđāļŠāļāļāļāļēāļĢāđāļŠïāļïāļēāļŠāđāļēāļŦāļĢāļąāļ New WSDL Document
3. āđāļāļŦāļïāļēāļāļąāļāđāļ āļāđāļēāļŦāļāļāļïāļē Path: āđāļāļāļĩāđ C:SOAoutput āđāļāļĒāļāļ Browse āđāļāļ·āđāļāđāļĨāļ·āļāļ Path:
(āļāļ°āļïāļāļāļāđāļēāļāļēāļĢāļŠāļĢïāļēāļ folder āļāļĩāđāļāļķāđāļāļĄāļēāļïāļāļ) āđāļĨāļ°āđāļĨāļ·āļāļ File Exists: āđāļïāļ Append to Existing File
āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 4 āļāļēāļāļāļąāđāļāļāļ Finish
86. 86
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 4 āđāļŠāļāļāļāļēāļĢāļāđāļēāļŦāļāļāļïāļēāļŠāđāļēāļŦāļĢāļąāļāļāļēāļĢāđāļāļĩāļĒāļāđāļāļĨï
4. āļāļēāļĢāļāļąāļāļāļē BPEL Process
āļāļąāđāļāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï BPEL āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄ Business Process āļāļĩāđāļāļ°āđāļïāđāļāđāļāļĢāđāļāđāļ
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
4.1 āļāļēāļĢāđāļāļīāđāļĄ partner link
1. āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĩāđāđāļāļĨï fileBPEL.bpel āđāļĨïāļ§āļĨāļēāļāđāļāļāļāļ DataIO.wsdl āđāļāļŦāļïāļēāļïāļēāļ Project
āļĄāļēāđāļ§ïāđāļāđāļïāļāđāļāļēāļāļēāļāļïāļēāļĒāļĄāļ·āļāļ āļēāļĒāđāļïāļŦāļïāļēāļïāļēāļ design
2. āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĢāļāļïāļāļāļ§āļēāļĄ PartnerLink1 āđāļĨāļ°āđāļāļĨāļĩāđāļĒāļāļāļ·āđāļāđāļïāļ DataIOPartnerLink
3. āļĨāļēāļāđāļāļāļāļ FileResult.wsdl āđāļāļŦāļïāļēāļïāļēāļ Project āļĄāļēāđāļ§ïāđāļāđāļāļāđāļāļēāļāļēāļāļāļ§āļēāļĄāļ·āļāļ āļēāļĒāđāļïāļŦāļïāļēāļïāļēāļ
design
4. āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĢāļāļïāļāļāļ§āļēāļĄ PartnerLink1 āđāļĨāļ°āđāļāļĨāļĩāđāļĒāļāļāļ·āđāļāđāļïāļ FilePartnerLink
89. 89
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļ Business Rule āļĢāļ°āļŦāļ§ïāļēāļ start āđāļĨāļ° invokeWriteToFile
āļŦāļĄāļēāļĒāđāļŦāļāļļ āđāļĢāļēāļŠāļēāļĄāļēāļĢāļāđāļāļīāđāļĄāļāđāļēāļāļ§āļāđāļāļ§āđāļïāđāļāļĒāļāļēāļĢāļĨāļēāļāđāļïāļēāđāļāļāļĩāđ āļāļāļ Concat
āļāđāļēāļāļ§āļāđāļāļ§āļāđāļāļ°āļāļđāļāđāļāļīāđāļĄāđāļŦïāļāļąāļāļāļĩ
3. āđāļāđāļāļĨï fileBPEL.bpel āđāļĨāļ·āļāļāđāļāļ Design āđāļĨïāļ§āļĨāļēāļāđāļāļāļāļ Assign āđāļāļŦāļïāļēāļïāļēāļ Palette
āļĄāļēāđāļ§ïāđāļāļŦāļïāļēāļïāļēāļ design āļĢāļ°āļŦāļ§ïāļēāļ āļāļļāļĢāļāļĢāļĢāļĄ invokeWriteToFile āļāļąāļāļāļļāļĢāļāļĢāļĢāļĄ end
4. āđāļāļŦāļïāļēāļïāļēāļ Editor āđāļĨāļ·āļāļāļāļļāļĢāļāļĢāļĢāļĄ Assign2 āđāļāļŦāļïāļēāļïāļēāļ BPEL Mapper āđāļĨāļ·āļāļ String > String Literal
āđāļĨïāļ§āļāđāļēāļŦāļāļāļïāļēāđāļïāļ Success āđāļāļ·āđāļāļĄāđāļĒāļāļïāļĨāļïāļĢāļ°āļŦāļ§ïāļēāļ string literal āļāļąāļ result āļāļĩāđāļāļĒāļđïāđāļ outData
āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 7
āļĢāļđāļāļāļĩāđ 7 āđāļŠāļāļBusiness Rule āļĢāļ°āļŦāļ§ïāļēāļ invokeWriteToFile āđāļĨāļ° end
5. āđāļĢāļēāļāļ°āđāļïāđāļāļĢāđāļāļĢāļĄ BPEL āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 8
90. 90
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 8 āđāļŠāļāļ BPEL Process āļāļāļāļāļąāđāļāļĢāļ°āļāļ
6. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ FileBPEL āđāļĨāļ·āļāļ Clean and Build
5. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāđāļ Composite Application
āļāļąāđāļāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Composite Application āđāļāļ·āđāļāļāļĩāđāļĢāļąāļ FileBPEL āļāļ BPEL Engine āļāļĩāđāđāļïāļĄāļēāļāļĢāļāļēāļ
JBI āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ SOA āđāļĨāļ° Projects āđāļïāļ Composite
Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ FileCompositeApp āđāļĨïāļ§āļāļ Finish
4. āđāļŦïāļĨāļēāļāđāļāļĢāđāļïāļ FileBPEL āļāļĩāđāļāļĒāļđïāđāļāļŦāļïāļēāļïāļēāļ Project āļĄāļēāđāļŠïāđāļ JBI Modules āļāļĩāđāļāļĒāļđïāđāļāļŦāļïāļēāļïāļēāļ Design
5. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ FileCompositeApp āđāļĨāļ·āļāļ Clean and Build āļāļ°āđāļŦāđāļāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 9
91. 91
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 9 āđāļŠāļāļ Service Assembly āļāļāļ FileCompositeApp
6. āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāļïāļēāļ TestCase
1. āļāđāļēāļāļēāļĢ Deploy āđāļāļĢāđāļāđāļ FileCompositeApp
2. āđāļāļŦāļïāļēāļïāļēāļ Project āđāļĨāļ·āļāļāđāļŦāļāļ FileCompositeApp > Test āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ New Test Case
3. āđāļāđāļāļāļ°āļĨāđāļāļ New Test Case āđāļŦïāļāđāļēāļŦāļāļ Test Case Name: āđāļïāļ TestCase1 āđāļĨïāļ§āļāļ Next
4. āļŦāļïāļēāļāļąāļāđāļāđāļ FileBPEL āđāļŦïāđāļĨāļ·āļāļāđāļāļĨï WSDL āđāļïāļ DataIO.wsdl āđāļĨïāļ§āļāļ Next
5. āđāļāļŦāļïāļēāļāļąāļāđāļāđāļŦïāđāļĨāļ·āļāļ DataIOOperation āđāļĨïāļ§āļāļ Finish
6. āļŦāļïāļēāļïāļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨï Input.xml āđāļŦïāđāļï source code āļāļąāļāļāļĩāđ
<id>1234</id>
<firstName>Somjai</firstName>
<lastName>Jaidee</lastName>
<salary>38000</salary>
7. āļāļāļāļļï āļĄ Save āđāļĨāļ·āļāļāđāļŦāļāļ TestCase1 āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ Run
8. āļāļ°āđāļŦāđāļāļāļĨāļĨāļąāļāļïāļāļĢāļēāļāļāđāļāđāļāļĨï Output.xml āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 10
āļĢāļđāļāļāļĩāđ 10 āđāļŠāļāļāļāļĨāļĨāļąāļāļïāļāļĩāđāđāļïāļāļēāļāļāļēāļĢāļĢāļąāļ TestCase1
9. āđāļĨāļ°āļāļ°āđāļïāđāļāļĨï output.xml āđāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđ c:SOAoutput āļāļķāđāļāļĄāļĩāļïāļāļĄāļđāļĨāļāļąāļāļāļĩāđ
Somjai Jaidee => 38000
92. 92
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
7. āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄāļïāļēāļ Web Application
āļāđāļēāļāļēāļĢāļïāļāļŦāļēāļāđāļēāđāļŦāļïāļ url āļāļāļ soap:address āļāļēāļĄāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļ Service Assembly āļāļāļ FileCompositeApp āđāļŦïāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ DataIOPort āđāļĨāļ·āļāļ Clone WSDL to
edit āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 11
āļĢāļđāļāļāļĩāđ 11 āđāļŠāļāļāļāļēāļĢāđāļĨāļ·āļāļ Clone WSDL Port to edit āļāļāļ DataIOPort
2. āļāļēāļāļāļąāđāļāđāļŦïāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ DataIOPort āļāļĩāļāļāļĢāļąāđāļāđāļĨïāļ§āđāļĨāļ·āļāļ Properties
3. āđāļāļŦāļïāļēāļïāļēāļ Properties āđāļŦïāļāđāļēāļāļēāļĢ copy āļïāļēāļāļāļ Location āđāļ soap:address
4. Location āļāļāļ soap:address āļāļ°āļĄāļĩāļïāļēāđāļïāļāļāļąāļ§āđāļāļĢāļāļĩāđāļāļ·āđāļ ${HttpDefaultPort} āļāļķāđāļāđāļĢāļēāļŠāļēāļĄāļēāļĢāļāļāļđāļïāļēāļāļāļ
${HttpDefaultPort} āđāļïāļāļēāļāļāļēāļĢāđāļĨāļ·āļāļāļāļĩāđāđāļïāļ Services āđāļŦāļāļ Servers > GlassFish Server 3.1.2 >
JBI > Binding Components > sun-http-binding āļāļĨāļīāđāļāļāļ§āļēāđāļĨïāļ§āđāļĨāļ·āļāļ properties āļāļ°āđāļŦāđāļ Default
HTTP Port Number āļāļķāđāļāļāļ°āļĄāļĩāļïāļēāđāļïāļ 9080
5. āļāļāļŠāļāļāđāļāļĒāđāļïāļ Web Browser āđāļĨïāļ§ paste āļïāļēāļāļĩāđ copy āđāļ§ï āļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļïāļēāļāļāļ URL
āđāļŦïāđāļïāļāļāļąāļāļāļĩāđ http://localhost:9080/DataIOService/DataIOPort?WSDL
āļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ Web Application āđāļāļ·āđāļāđāļŦïāļāļđïāđāļïāļïāļāļāļïāļēāļïāļāļĄāļđāļĨāļïāļēāļāđ
āļāļēāļāļāļąāđāļāđāļāļĢāđāļāļĢāļĄāļāļ°āļāđāļēāļāļēāļĢāđāļāļĩāļĒāļāļïāļāļĄāļđāļĨāļĨāļāđāļāļĨï āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Java Web āđāļĨāļ° Web Application āđāļĨïāļ§āļāļ Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ FileBPUI āđāļĨïāļ§āđāļĨāļ·āļāļ Project Location āđāļïāļ folder
āļāļĩāđāđāļĢāļēāļïāļāļāļāļēāļĢāļāļ°āđāļāđāļProject āđāļ§ï
4. āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļ Server āđāļïāļ GlassFish Server 3.1.2 āļāđāļēāļŦāļāļ Jave EE Version: āđāļïāļ Java EE 6
āđāļĨïāļ§āļāļ Finish
5. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ FileBPUI āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ Web
Services āđāļĨāļ° File Types āđāļïāļ Web Service Client āđāļĨïāļ§āļāļ Next
6. āđāļāđāļāļāļ°āļĨāđāļāļ New Web Service Client āđāļŦïāđāļĨāļ·āļāļ WSDL URL: āđāļĨïāļ§āđāļŠï URL āđāļïāļ
http://localhost:9080/DataIOService/DataIOPort?WSDL (āļāļ§āļĢāļāļ°āļāđāļēāļāļēāļĢ copy āļĄāļēāļāļēāļ
Web Browser āđāļĄïāļāļ§āļĢāļāļĩāđāļāļ°āļāļīāļĄāļïāđāļāļ)
93. 93
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
7. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ FileBPUI āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > HTML
8. āļāđāļēāļŦāļāļ HTML File Name: āđāļïāļ employeeInput āđāļĨïāļ§āļāļ Finish
9. āđāļāļīāđāļĄāđāļāļīāļĄ source code āļāļāļāđāļāļĨï employeeInput.html āļāļąāļāļāļĩāđ
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="EmployeeServlet" method="post">
ID: <input name="id" /><br>
Firstname: <input name="firstname"/><br>
Lastname: <input name="lastname"/><br>
Salary: <input name="salary"/><br><br>
<input type="submit" value="Insert" />
</form>
</body>
</html>
10. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ FileBPUI āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Servlet
11. āļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļŦāļāļāļāļ·āđāļāđāļïāļ EmployeeServlet āđāļĨāļ° Package: āđāļïāļ controller āđāļĨïāļ§āļāļ Finish
12. āļ āļēāļĒāđāļāđāļĄāļāļāļ processRequest āđāļāđāļāļĨï EmployeeServlet.java āđāļŦïāļĨāļ Comment
āļāļąāđāļāļŦāļĄāļāļāļĩāđāļāļĒāļđïāļ āļēāļĒāđāļāđāļāļĢāļ·āđāļāļāļŦāļĄāļēāļĒ /* âĶ */ āļĢāļ°āļŦāļ§ïāļēāļāļāđāļēāļŠāļąāđāļ try āđāļĨāļ° finally
13. āļāļĨāļīāđāļāļāļ§āļēāļĢāļ°āļŦāļ§ïāļēāļāļāđāļēāļŠāļąāđāļ try āđāļĨāļ° finally āđāļĨïāļ§āđāļĨāļ·āļāļ Insert Code āļāļēāļāļāļąāđāļāđāļŦïāđāļĨāļ·āļāļ Call Web Service
Operation āđāļŦïāđāļĨāļ·āļāļāđāļāļāļĩāđ DataIOOperation āđāļĨïāļ§āļāļ OK
14. āļāļēāļāļāļąāđāļāđāļŦïāļāđāļēāļāļēāļĢāļāļĢāļąāļāļāļĢāļļāļ Source code āļāļāļāđāļāļĨï EmployeeServlet.java āļāļąāļāļāļĩāđ (āđāļŠāļāļāđāļāļāļēāļ°āđāļĄāļāļāļ
processRequest)
protected void processRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try { // Call Web Service Operation
org.netbeans.j2ee.wsdl.filebpel.dataio.DataIOPortType port =
service.getDataIOPort();
// TODO initialize WS operation arguments here
java.lang.String id = request.getParameter("id");
java.lang.String firstname = request.getParameter("firstname");
java.lang.String lastname = request.getParameter("lastname");
String tmp = request.getParameter("salary");
int salary = Integer.parseInt(tmp);
// TODO process result here
java.lang.String result = port.dataIOOperation(id, firstname,
lastname, salary);
out.println("Result = "+result);
94. 94
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
} catch (Exception ex) {
out.println(ex);
} finally {
out.close();
}
}
15. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ FileBPUI āđāļĨïāļ§āđāļĨāļ·āļāļ Clean and Build
16. āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ employeeInput.html āđāļĨïāļ§āđāļĨāļ·āļāļ Run File
17. āļŦāļĨāļąāļāļāļēāļāđāļŠïāļïāļāļĄāļđāļĨ āļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 12
āļĢāļđāļāļāļĩāđ 12 āđāļŠāļāļāļāļēāļĢāđāļŠïāļïāļāļĄāļđāļĨ āđāļĨāļ°āļāļĨāļĨāļąāļāļïāļāļĩāđāđāļï
18. āđāļĨāļ°āđāļāļĨï output.xml āđāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđ c:SOAoutput āļāļ°āļĄāļĩāļïāļāļĄāļđāļĨāļāļąāļāļāļĩāđ
Somjai Jaidee => 38000
Nipa Jingjai => 738000
95. 95
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
Exercise 12 Simple BPEL Invoking Web Services
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāđāļïāļāļāļēāļĢāđāļāļĩāļĒāļ Business Process āđāļāļ·āđāļāđāļĢāļĩāļĒāļāđāļï Internal Web Service āļāļĩāđāļāļąāļāļāļēāļāļķāđāļāļĄāļēāđāļāļ
āđāļĨāļ° External Web Service āļāļāļāļāļĩāđāļāļ·āđāļāđ āļāļĩāđāļĄāļĩāļāļĒāļđï āđāļāļĢāđāļāļĢāļĄ Web Service āļāļĩāđāļāļ°āļāļąāļāļāļēāļāļķāđāļāļāļ·āļ TaxService
āļāļĩāđāļĄāļĩāđāļāđāļāļāļĢïāđāļĢāļāļąāļāļāļĩāđāļāļ·āđāļ calculateTax āđāļĨāļ° External Web Service āļāļ·āļāđāļāļāļĢïāļ§āļīāļŠāļāđāļēāļāļ§āļāļāļąāļāļĢāļēāđāļĨāļāđāļāļĨāļĩāđāļĒāļāļāļĩāđāļāļĒāļđïāļāļĩāđ
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl
āļāļąāđāļāļāļāļāđāļāļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāļĢāļĄ
1. āļāļąāļāļāļē Web Services
2. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ WSBPEL
3. āļāļąāļāļāļēāđāļāļĨï WSDL
4. āļāļąāļāļāļē Business Process āļŠāđāļēāļŦāļĢāļąāļāđāļĢāļĩāļĒāļ Web Service
5. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ Composite Application
6. āļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāļïāļēāļ TestCase
7. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ ExternalWSBPEL
8. āļāļģāļŦāļāļ External WSDL Document
9. āļāļąāļāļāļēāđāļāļĨï Client WSDL āđāļŦāļĄï
10. āļāļąāļāļāļē Business Process āđāļŦāļĄïāđāļāļ·āđāļāđāļĢāļĩāļĒāļ External Web Service
11. āļāļąāļāļāļēāđāļāļĢāđāļāđāļ Composite Application āļŠāđāļēāļŦāļĢāļąāļāđāļĢāļĩāļĒāļ Business Process āđāļŦāļĄï āđāļĨāļ°āļāđāļēāļāļēāļĢāļāļāļŠāļāļ
āļāļēāļĢāļāļąāļāļāļē Web Services
āļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļē Web Service āļāļĩāđāļāļ°āđāļïāļāļāļēāļĢāļāļąāļāļāļē calculateTax Web Service āđāļïāļāđāļāļĩāļĒāļ§āļāļąāļāđāļ
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļïāļēāļāļĄāļē āđāļāļĒāļĄāļĩ source code āļāļąāļāļāļĩāđ
@WebService
public class TaxService {
@WebMethod
public double calculateTax(@WebParam(name = "income") double income) {
return 0.1 * income;
}
}
96. 96
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāđāļ WSBPEL
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļāđāļēāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĢāđāļāđāļāļŠāđāļēāļŦāļĢāļąāļ Service Oriented Architecture āļāļķāđāļāļĄāļēāđāļŦāļĄï
āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ SOA āđāļĨāļ° Projects āđāļïāļ BPEL Module āđāļĨïāļ§āļāļ
Next
3. āļāđāļēāļŦāļāļ Project Name āđāļïāļ WSBPEL āđāļĨïāļ§āļāļ Finish
āļāļēāļĢāļāļąāļāļāļēāđāļāļĨï WSDL
āļāļąāđāļāļāļāļāļāļąāļāđāļāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄ Business Process āļāļĩāđāļāļ°āļāļąāļāļāļēāļāļķāđāļ
āđāļāļ·āđāļāđāļŦïāļŠāļēāļĄāļēāļĢāļāđāļĢāļĩāļĒāļāđāļïāđāļïāļāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāđāļï āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ WSBPEL āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Process Files āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ
New > WSDL Document
2. āđāļāđāļāļāļ°āļĨāđāļāļ New WSDL Document āļāđāļēāļŦāļāļ File Name: āđāļïāļ WebProcessWSDL āļāđāļēāļŦāļāļ WSDL
Type: āđāļïāļ Concrete WSDL Document āđāļĨāļ°āļāđāļēāļŦāļāļ Binding āđāļïāļ SOAP āđāļĨāļ° Types āđāļïāļ RPC
Literal āđāļĨïāļ§āļāļ Next
3. āđāļāļŦāļïāļēāļāļąāļāđāļ āļŠāđāļēāļŦāļĢāļąāļāļŠïāļ§āļāļāļāļ Input: āļāđāļēāļŦāļāļ Message Part Name āđāļïāļ inputData
(āđāļĄāļ·āđāļāđāļŠïāļïāļēāđāļŠāļĢāđāļāđāļĨïāļ§ āļïāļāļāļāļāļāļļï āļĄ Enter āļïāļ§āļĒāđāļŠāļĄāļ āļĄāļīāļāļ°āļāļąāđāļāļïāļēāļāļ°āļāļĨāļąāļāđāļāđāļïāļ part1 āđāļŦāļĄāļ·āļāļāđāļāļīāļĄ)
āđāļĨāļ°āļŠāđāļēāļŦāļĢāļąāļāļŠïāļ§āļāļāļāļOutput: āļāđāļēāļŦāļāļ Message Part Name āđāļïāļ outputData āļāļ Next āđāļĨïāļ§āļāļ
Finish
āļāļēāļĢāļāļąāļāļāļē Business Process
āļāļąāđāļāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï BPEL āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄ Business Process āļāļĩāđāļāļ°āđāļïāđāļāđāļāļĢāđāļāđāļ
āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
āļāļēāļĢāđāļāļīāđāļĄ partner link
āļāļąāđāļāļāļāļāļāļĩāđāļāļ°āļāđāļēāļāļēāļĢāļāđāļēāļŦāļāļ partner link āļŠāđāļēāļŦāļĢāļąāļ Web Services āļŠāļāļāļāļļāļāļāļ·āļ TaxService āđāļĨāļ°
WebProcessWSDL āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
97. 97
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
1. āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĩāđāđāļāļĨï WSBPEL.bpel āđāļĨāļ·āļāļāđāļāļ Design āđāļĨïāļ§āļĨāļēāļāđāļāļāļāļ WebProcessWSDL.wsdl
āđāļāļŦāļïāļēāļïāļēāļ Projects āļĄāļēāđāļ§ïāļ āļēāļĒāđāļïāļŦāļïāļēāļïāļēāļ design (āđāļāļĒāđāļŦïāļĨāļēāļāđāļāļāļĩāđāđāļāļāđāļāļēāđ āđāļĨāļ°āđāļŠïāđāļ )
āđāļāļĢāđāļāļĢāļĄāļāļ°āđāļŠāļāļāđāļāļāļ°āļĨāđāļāļ PartnerLink1 [Partner Link] â Property Editor āđāļŦïāļāđāļēāļŦāļāļāļïāļē Name:
āđāļïāļ ClientPartnerLink āđāļĨïāļ§āļāļ OK
2. āđāļāļŦāļïāļēāļïāļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ TaxWSDemo > Web Services āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ TaxService
āđāļĨïāļ§āđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Generate and Copy WSDL ...
3. āđāļāđāļāļāļ°āļĨāđāļāļ Generate and Copy WSDL āđāļŦïāđāļĨāļ·āļāļāđāļāđāļĢāđāļāļāļāļĢāļĩāđ src āļ āļēāļĒāđāļï WSBPEL āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ
1 āļāļēāļāļāļąāđāļāļāļ OK
āļĢāļđāļāļāļĩāđ 1 āđāļŠāļāļāđāļāļāļ°āļĨāđāļāļ Generate and Copy WSDL
4. āļĨāļēāļ TaxService.wsdl āđāļāđāļ§ïāļāļēāļāļïāļēāļāļāļ§āļēāļāļāļāļŦāļïāļēāļïāļēāļ design āđāļāļĒāļāđāļēāļŦāļāļ Name: āđāļïāļ
TaxPartnerLink āļāļķāđāļāļāļ°āđāļïāļāļĨāļĨāļąāļāļïāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 2
āļĢāļđāļāļāļĩāđ 2 āđāļŠāļāļ PartnerLink āļāļąāđāļāļŦāļĄāļāļāļāļ WSBPEL
100. 100
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
4. āđāļāļŦāļïāļēāļïāļēāļ Editor āđāļĨāļ·āļāļāļāļļāļĢāļāļĢāļĢāļĄ Assign2 āđāļāļŦāļïāļēāļïāļēāļ BPEL Mapper āļāđāļēāļāļēāļĢāđāļĒāļāđāļŦāļāļ return āđāļāļŠïāļ§āļ
TaxOut āđāļāļŦāļïāļēāļïāļēāļāļïāļēāļāļïāļēāļĒāđāļïāļēāļāļąāļāđāļŦāļāļ outputData āđāļāļŠïāļ§āļ outData āđāļāļŦāļïāļēāļïāļēāļāļïāļēāļāļāļ§āļē
āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 5
āļĢāļđāļāļāļĩāđ 5 āđāļŠāļāļ Business Rule āļĢāļ°āļŦāļ§ïāļēāļ invokeWS āđāļĨāļ° end
5. āđāļĢāļēāļāļ°āđāļïāđāļāļĢāđāļāļĢāļĄ BPEL āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 6
āļĢāļđāļāļāļĩāđ 6 āđāļŠāļāļ BPEL Process āļāļāļāļāļąāđāļāļĢāļ°āļāļ
6. āļāļāļāļļï āļĄ Save āđāļĨāļ° Clean and Build
101. 101
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāđāļ Composite Application
āļāļąāđāļāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļ Composite Application āđāļāļ·āđāļāļāļĩāđāļĢāļąāļ WSBPEL āļāļ BPEL Engine āļāļĩāđāđāļïāļĄāļēāļāļĢāļāļēāļ
JBI āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ SOA āđāļĨāļ° Projects āđāļïāļ Composite
Application āđāļĨïāļ§āļāļ Next
3. āļāļģāļŦāļāļ Project Name āđāļïāļ WSCompositeApp āđāļĨïāļ§āļāļ Finish
4. āđāļāļŦāļïāļēāļïāļēāļ Project āđāļĨāļ·āļāļāđāļŦāļāļ WSCompositeApp āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ Add JBI Module
5. āđāļŦïāđāļĨāļ·āļāļāđāļāļĢāđāļāđāļ WSBPEL āđāļĨïāļ§āļāļāļāļļï āļĄ Add Project JAR Files
6. āđāļāļĢāđāļĢāļĄ NetBeans āļāļ°āđāļāļīāđāļĄāđāļŦāļāļ WSBPEL.jar āļ āļēāļĒāđāļï WSCompositeApp > JBI Module
7. āļāļģāļāļēāļĢ Clean and Build āđāļāļĢāđāļāđāļ WSCompositeApp
8. āļāļąāļāđāļāļīāđāļĨāļāļĨāļīāđāļāļāļĩāđ Service Assemblyāļāļ°āđāļŦāđāļ CASA Editor āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 7 āļāļķāđāļ WSBPEL āļāļĩāđāđāļïāļ BPEL
module āļāļ°āļāļđāļāđāļĢāļĩāļĒāļāđāļāļĒ SOAP request āđāļïāđāļĄïāđāļŦāđāļTaxPartnerLink āđāļĢāļĩāļĒāļāđāļï Web Service āđāļ
āļĢāļđāļāļāļĩāđ 7 āđāļŠāļāļ CASA Editor āļāļāļ WSBPEL
9. āđāļāļ·āđāļāļĢāļ°āļāļļ Web Service āļāļĩāđāļāļ°āđāļĢāļĩāļĒāļāđāļïāđāļŦïāļĨāļēāļāđāļāļāļāļ soap āļāļĩāđāļāļĒāļđïāđāļ palette āļĄāļēāđāļ§ïāđāļāļŠïāļ§āļ WSDL Ports
āļāļāļ CASA Editor āđāļĨāļ°āļāļģāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 8
102. 102
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 8 āđāļŠāļāļāļāļēāļĢāđāļāļ·āđāļāļĄāđāļĒāļāļāļēāļ WSBPELāđāļāļĒāļąāļ SOAP
10. āļĢāļ°āļāļļ endpoint āļāļāļ WSDL port āđāļāļĒāļāļēāļĢāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđ casaPort1 āđāļĨïāļ§āđāļĨāļ·āļāļ Properties āđāļĨïāļ§āļāđāļēāļŦāļāļāļïāļē
Location āđāļïāļ http://localhost:8080/TaxWSDemo/TaxService āđāļĨāļ° Endpoint Name āđāļïāļ
TaxService
11. Save āđāļĨāļ°āļāļģāļāļēāļĢ Deploy āđāļāļĢāđāļāđāļ WSCompositeApp
āļāļēāļĢāļāļāļŠāļāļāđāļāļĢāđāļāļĢāļĄāļïāļēāļ TestCase
1. āđāļāļŦāļïāļēāļïāļēāļ Project āđāļĨāļ·āļāļāđāļŦāļāļ WSCompositeApp > Test āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ New Test Case
2. āđāļāđāļāļāļ°āļĨāđāļāļ New Test Case āđāļŦïāļāđāļēāļŦāļāļ Test Case Name: āđāļïāļ TestCase1 āđāļĨïāļ§āļāļ Next
3. āļŦāļïāļēāļāļąāļāđāļāđāļ WSBPEL āđāļŦïāđāļĨāļ·āļāļāđāļāļĨï WSDL āđāļïāļ WebProcessWSDL.wsdl āđāļĨïāļ§āļāļ Next
4. āđāļāļŦāļïāļēāļāļąāļāđāļāđāļŦïāđāļĨāļ·āļāļ WebProcessWSDLOperation āđāļĨïāļ§āļāļ Finish
5. āļŦāļïāļēāļïāļēāļ Editor āļāļ°āđāļŠāļāļāđāļāļĨï Input.xml āđāļŦïāđāļï source code āļŠïāļ§āļ inputData āļāļąāļāļāļĩāđ
<inputData>400000</inputData>
6. āļāļāļāļļï āļĄ Save āđāļĨāļ·āļāļāđāļŦāļāļ TestCase1 āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāđāļĨāļ·āļāļ Run
7. āļāļ°āđāļŦāđāļāļāļĨāļĨāļąāļāļïāļāļĢāļēāļāļāđāļāđāļāļĨï Output.xml āļāļąāļāļāļĩāđ
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<m:WebProcessWSDLOperationResponse
xmlns:m="http://j2ee.netbeans.org/wsdl/WSBPEL/WebProcessWSDL">
<outputData xmlns="">33500.0</outputData>
</m:WebProcessWSDLOperationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
103. 103
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļŦāļĄāļēāļĒāđāļŦāļāļļ
āļāļĢāļāļĩāļāļĩāđāđāļĄïāļŠāļēāļĄāļēāļĢāļāļĢāļąāļāđāļï āđāļŦïāđāļāļāļĩāđ GlassFish Server 3.1.2 > JBI > Service Assemblies āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāļĩāđ 9
āđāļĨïāļ§āļāļģāļāļēāļĢ Undeploy āđāļāļĢāđāļāđāļāļāļ·āđāļāđ āļāļāļāļāļąāđāļāļŦāļĄāļ āđāļŦïāđāļŦāļĨāļ·āļāđāļāļāļēāļ°āđāļāļĢāđāļāđāļ WSCompositeApp
āđāļĨïāļ§āļĨāļāļāļĢāļąāļāđāļŦāļĄïāļāļĩāļāļāļĢāļąāđāļ
āļĢāļđāļāļāļĩāđ 9 āļāļēāļĢ Updeploy āđāļāļĢāđāļāđāļāļāļ·āđāļāđ āļāļĩāđāļāļĒāļđïāđāļ Service Assemblies āļāļāļāļāļąāđāļāļŦāļĄāļ
āļāļēāļĢāļāļąāļāļāļēāđāļāļĢāđāļāđāļ ExternalWSBPEL
āđāļāļāļïāļāļŦāļąāļāļāļĩāđāļāļ°āļāđāļēāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĢāđāļāđāļāļŠāđāļēāļŦāļĢāļąāļ Service Oriented Architecture āļāļķāđāļāļĄāļēāđāļŦāļĄï
āđāļāļĒāļāļ°āļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
4. āđāļĨāļ·āļāļāđāļĄāļāļđ File > New Project
5. āđāļāđāļāļāļ°āļĨāđāļāļ New Project āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ SOA āđāļĨāļ° Projects āđāļïāļ BPEL Module āđāļĨïāļ§āļāļ
Next
6. āļāđāļēāļŦāļāļ Project Name āđāļïāļ ExternalWSBPEL āđāļĨïāļ§āļāļ Finish
104. 104
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļāļēāļĢāļāļąāļāļāļē External WSDL
āļāļąāđāļāļāļāļāļïāļāđāļāļāļ°āđāļïāļāļāļēāļĢāļāļāļĨāļāļāđāļĢāļĩāļĒāļāđāļï External Web Service āļŠāđāļēāļŦāļĢāļąāļāļāļēāļĢāļāđāļēāļāļ§āļāļāļąāļāļĢāļēāđāļĨāļāđāļāļĨāļĩāđāļĒāļ
āđāļāļĒāļāļąāđāļāļāļāļāđāļĢāļāļāļ°āļïāļāļāļĢāļ°āļāļļ WSDL āļāļāļ External Web Service āļāļąāļāļāļĨïāļēāļ§ āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ ExternalWSBPEL āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Process Files
āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ New > Other..
2. āđāļāđāļāļāļ°āļĨāđāļāļ New File āđāļŦïāđāļĨāļ·āļāļ Categories āđāļïāļ XML āđāļĨāļ° Projects āđāļïāļ External WSDL
Document(s) āđāļĨïāļ§āļāļ Next
3. āđāļāļŦāļïāļēāļāļąāļāđāļ āđāļĨāļ·āļāļ Form URL: āđāļĨïāļ§āļāđāļēāļŦāļāļāļïāļēāđāļïāļ
http://www.webservicex.com/CurrencyConvertor.asmx?wsdl āđāļĨïāļ§āļāļ Finish
4. āđāļāļĢāđāļāđāļ ExternalWSBPEL āļāļ°āđāļŠāļāļāđāļŦāļāļ www.webservicex.com āļāļĩāđāļĄāļĩ
CurrencyConvertor.asmx.wsdl āļāļķāđāļāļĄāļē
5. External WSDL āļāļĩāđāđāļĢāļĩāļĒāļāļĄāļēāļāļ°āļĄāļĩāđāļāļĢāļāļŠāļĢïāļēāļāļāļąāļāļĢāļđāļāļāļĩāđ 10 āđāļïāđāļāļ·āđāļāļāļāļēāļ WSDL āļāļĩāđāļāļ°āđāļĄïāļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ° compile
āđāļ NetBeans 7.1 āđāļï āđāļāļ·āđāļāļāļāļēāļāļĄāļĩ Port Types, Bindings āđāļĨāļ° Services āļāļĩāđāđāļïāļ HttpGet āđāļĨāļ° HttpPost
āļāļĒāļđï āđāļŦïāļāļģāļāļēāļĢāļĨāļāļŠïāļ§āļāđāļŦāļĨïāļēāļāļąāđāļāļāļāļ āđāļāļĒāļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļāļāļĩāđāđāļāļĩāđāļĒāļ§āļïāļāļāđāļĨïāļ§āđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ Delete
āļāļāđāļŦāļĨāļ·āļāđāļāļĢāļāļŠāļĢïāļēāļāļāļāļ WSDL āļāļąāļāļĢāļđāļāļāļĩāđ 11
āļĢāļđāļāļāļĩāđ 10 WSDL āļāļĩāđāļāđāļēāļāļēāļĢāđāļĢāļĩāļĒāļāļĄāļē
105. 105
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 11 WSDL āļāļĩāđāļāļđāļāļïāļāļ
āļāļēāļĢāļāļąāļāļāļēāđāļāļĨï Client WSDL āđāļŦāļĄï
āļāļąāđāļāļāļāļāļāļąāļāđāļāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï WSDL āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄ Business Process āļāļĩāđāļāļ°āļāļąāļāļāļēāļāļķāđāļ
āļĄāļēāđāļŦāļĄïāđāļāļ·āđāļāđāļŦïāļŠāļēāļĄāļēāļĢāļāđāļĢāļĩāļĒāļāđāļïāđāļïāļāđāļ§āđāļāđāļāļāļĢïāļ§āļīāļŠāđāļï āđāļāļĒāđāļāļāļĢāļāļĩāļāļ°āļāđāļēāļŦāļāļāđāļŦïāļĄāļĩ input parameter āļŠāļāļāļāļąāļ§āļāļ·āļ
fromCurrency āđāļĨāļ° toCurrency āđāļāļĒāļĄāļĩ output parameter āļāļ·āļ result āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ
1. āđāļĨāļ·āļāļāļŦāļïāļēāļïāļēāļ Projects āļāļĒāļēāļĒāđāļŦāļāļ WSBPEL āđāļĨïāļ§āļāļĨāļīāđāļāļāļ§āļēāļāļĩāđāđāļŦāļāļ Process Files āļāļēāļāļāļąāđāļāđāļĨāļ·āļāļāļāđāļēāļŠāļąāđāļ
New > WSDL Document
2. āđāļāđāļāļāļ°āļĨāđāļāļ New WSDL Document āļāđāļēāļŦāļāļ File Name: āđāļïāļ ExternalWSProcessWSDL āļāđāļēāļŦāļāļ
WSDL Type: āđāļïāļ Concrete WSDL Document āđāļĨāļ°āļāđāļēāļŦāļāļ Binding āđāļïāļ SOAP āđāļĨāļ° Types āđāļïāļ
RPC Literal āđāļĨïāļ§āļāļ Next
3. āđāļāļŦāļïāļēāļāļąāļāđāļ āļŠāđāļēāļŦāļĢāļąāļāļŠïāļ§āļāļāļāļ Input: āļāđāļēāļŦāļāļ Message Part Name āđāļïāļ fromCurrency āđāļŦïāđāļïāļāļāļāļīāļ
xsd:String āđāļĨāļ° toCurrency āđāļŦïāđāļïāļāļāļāļīāļ xsd:String āđāļĨāļ°āļŠāđāļēāļŦāļĢāļąāļāļŠïāļ§āļāļāļāļ Output: āļāđāļēāļŦāļāļ Message
Part Name āđāļïāļ result āđāļŦïāđāļïāļāļāļāļīāļ xsd:String āļāļąāļāļĢāļđāļāļāļĩāđ 12 āļāļ Next āđāļĨïāļ§āļāļ Finish
106. 106
Java Web Services and SOA Exercises Thanachart Numnonda and Thanisa Kruawaisayawan
āļĢāļđāļāļāļĩāđ 12 āļāļēāļĢāļāđāļēāļŦāļāļāļïāļē WSDL Document
āļāļēāļĢāļāļąāļāļāļē Business Process āđāļŦāļĄïāđāļāļ·āđāļāđāļĢāļĩāļĒāļ External Web Service
āļāļąāđāļāļāļāļāļāļĩāđāđāļïāļāļāļēāļĢāļŠāļĢïāļēāļāđāļāļĨï BPEL āļŠāđāļēāļŦāļĢāļąāļāļāļīāļĒāļēāļĄ Business Process āđāļŦāļĄïāļāļĩāđāļāļ°āđāļïāđāļāļāļēāļĢāđāļĢāļĩāļĒāļ External
Web Service āđāļāļĒāļĄāļĩāļāļąāđāļāļāļāļāļāļēāļĢāļāļąāļāļāļēāļāļąāļāļāļĩāđ