![Page 1: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/1.jpg)
©Liron Blecher
Web Services
Written by Liron Blecher
![Page 2: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/2.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
![Page 3: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/3.jpg)
JEE – Java Enterprise Edition
In most organizations most programs use the client/server paradigm (also true for Web Applications).
Instead of implementing servers and communication protocols for every project, Java EE specifies sets of APIs for most servers related tasks (communication, DB, messaging, etc.)
Some of these APIs are implemented as Libraries and some as Programs
3
![Page 4: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/4.jpg)
JEE – JEE Containers
One API is known as JEE Container (or Web Container or Servlet Container).
This is a specification for a Web Server that can also runs Java Code.
There are different implementations of JEE Container – Apache Tomcat, Glassfish, JBoss (and more…).
It’s actually more complicated than this… but let’s keep it simple for now
4
![Page 5: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/5.jpg)
JEE – Tomcat
Tomcat is a JEE Servlet Container.
It can run regular web sites but also Java code.
Just like any other web server it handles the HTTP protocol (requests and responses).
5
Web browser
Tomcat
request request
response
response
ServletServlet
request
response
HTML
![Page 6: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/6.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
![Page 7: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/7.jpg)
Web Services Links
Java EE 6 Tutorial on Web Services http://docs.oracle.com/javaee/6/tutorial/doc/gijti.html
Tomcat http://tomcat.apache.org/download-70.cgi
Metro https://metro.java.net/
7
![Page 8: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/8.jpg)
What is a Web Service
A Web Service is any server application that:
• Is available over the web/HTTP
• Is OS and Programming language independent
8
![Page 9: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/9.jpg)
Web Service Roles
There are three major roles
Service Registry
Service Requestor
ServiceProvider
2) Discover services
3) Invoke service
Provider of the Web Service Consumer of the Web Service
Logically Centralized directory of services 1) Register service
9
![Page 10: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/10.jpg)
Types of Web Services
Web services can be implemented in various ways. The two most popular methods of implementation are:
• Big web services
• RESTful web services
10
![Page 11: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/11.jpg)
Big Web Services
Big web services use XML messages that follow the Simple Object Access Protocol (SOAP) standard, an XML language defining a message architecture and message formats.
Such systems often contain a machine-readable description of the operations offered by the service, written in the Web Services Description Language (WSDL), an XML language for defining interfaces syntactically.
In Java EE 6, JAX-WS provides the functionality for “big” web services.
11
![Page 12: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/12.jpg)
RESTful Web Services
RESTful web services (Representational State Transfer) use existing well-known W3C standards (HTTP, XML, URI, MIME) and have a lightweight infrastructure that allows services to be built with minimal tooling.
Developing RESTful web services is inexpensive and thus has a very low barrier for adoption.
REST is well suited for basic scenarios. RESTful web services better integrated with HTTP than SOAP-based services are, do not require XML messages or WSDL service–API definitions.
In Java EE 6, JAX-RS provides the functionality for RESTful web services.
12
![Page 13: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/13.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
![Page 14: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/14.jpg)
Big Web Service - Protocol Stack
14
Description Protocol Role
Responsible for centralizing services UDDI Discovery
Responsible for describing the public interface to a specific web service
WSDL Description
Responsible for encoding messages in common XML format
SOAP XML Messaging
Responsible for transporting messages
HTTP/S Transport
![Page 15: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/15.jpg)
Big Web Service - SOAP
What is SOAP?
• Simple Object Access Protocol
• Is a protocol that uses XML messages to perform RPC (Remote Procedure Calls), meaning, call a function on another (usually remote) program
• Requests are encoded in XML and send via HTTP
• Responses are encoded in XML and received via HTTP
15
![Page 16: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/16.jpg)
Big Web Service - SOAP Message
16
• Envelope is like a wrapper for content
• Header is a optional element that could contain control information
• Body element includes requests and responses
• Body element can also include a Fault element in case of an error
SOAP Message
Envelope
Header
Body
![Page 17: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/17.jpg)
Big Web Service - Sample SOAP Request
<SOAP-ENV:Envelope
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:sayHello
xmlns:ns1="http://agram.com/">
<name xsi:type="xsd:string">Java</name>
</ns1:sayHello>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
17
![Page 18: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/18.jpg)
Big Web Service - Sample SOAP Response
<SOAP-ENV:Envelope
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<ns1:sayHelloReponse
xmlns:ns1="http://agram.com/">
<result xsi:type="xsd:string">Hello Java</result>
</ns1:sayHelloResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
18
![Page 19: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/19.jpg)
Big Web Service - WSDL
What is WSDL?
Web Services Description Language
Has 6 major elements:
1. Definitions – defines the name of the web service
2. Types – describes all the data types that will be transmitted
3. Message – defines the name of the message that will be transmitted
4. PortType – defines the operations
5. Binding – defines how the message will be transmitted
6. Service – defines where the service is located
19
![Page 20: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/20.jpg)
Development plan for Service Requestor
1 )Find web service via UDDI
2 )Retrieve service description file
3 )Create XML-RPC or SOAP client
4 )Invoke remote service
20
![Page 21: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/21.jpg)
5) Register new service via UDDI
Development plan for Service Provider
1 )Create the core functionality
2 )Create XML-RPC or SOAP service wrapper
3 )Create service description file
4 )Deploy service
21
![Page 22: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/22.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
![Page 23: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/23.jpg)
What is Metro
JAX-WS is a specification of which Classes, Interfaces, Annotations and behaviors a JEE Application should have in order to support Big Web Services in Java.
The standard JDK does NOT contain an implementation of these classes (or even the classes themselves).
Metro is one of several implementations of the JAX-WS specification (another implementation for example is Apache Axis).
Metro homepage is https://metro.java.net/
23
![Page 24: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/24.jpg)
What is Metro – cont’
So what is Metro?
Metro is a Java Library (or Service Stack) that implements the JAX-WS specification.
It allows developers to create JAX-WS compatible servers and clients without the need to write code that parses and formats SOAP messages.
It also includes tools for generating services from given WSDL files.
24
![Page 25: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/25.jpg)
What is Metro – cont’
Source: http://docs.oracle.com/javaee/6/tutorial/doc/bnayn.html
25
![Page 27: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/27.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
![Page 28: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/28.jpg)
What is RESTful Web Service
A RESTful Web Service is a Web Service that binds the HTTP methods (GET, POST, DELETE & PUT) to server methods.
In this manner, there is no need to send XML messages since the basic methods are already defined in the HTTP protocol.
It is usually used to expose a CRUD (Create, Read, Update and Delete) functionality of the server.
The parameters of an HTTP request are used as parameters for the server methods.
28
![Page 29: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/29.jpg)
What is Jersey
Just like Metro is the implementation of the JAX-WS specification, Jersey, is the implementation of the JAX-RS specification.
Project Jersey is the production-ready reference implementation for the JAX-RS specification.
Jersey implements support for the annotations defined in the JAX-RS specification, making it easy for developers to build RESTful web services with Java.
29
![Page 30: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/30.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
• Appendix 1 – Tomcat in Netbeans
• Appendix 2 – Web Service App
• Appendix 3 – Web Service Client
![Page 31: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/31.jpg)
Appendix 1 – Tomcat in Netbeans
1. Download Tomcat
2. Go to http://tomcat.apache.org/download-70.cgi
3. Choose either 32-bit Windows zip or 64-bit Windows zip (for any other platform choose plain zip)
4. Do NOT choose 32-bit/64-bit Windows Service Installer
5. Extract the downloaded file into your root directory (c:\)
6. Do NOT extract Tomcat to your Desktop or Documents folder
31
![Page 32: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/32.jpg)
Appendix 1 – Tomcat in Netbeans
7. Set your JAVA_HOME and JRE_HOME: http://stackoverflow.com/questions/2619584/how-to-set-java-home-on-windows-7
8. Check that Tomcat is running by going to your Tomcat bin folder and load startup.bat – then open a browser and go to http://localhost:8080
9. If you see the Tomcat home page then your installation was successful
10. Add Tomcat to Netbeans (see next slides)
32
![Page 33: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/33.jpg)
Appendix 1 – Tomcat in Netbeans
33
![Page 34: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/34.jpg)
Appendix 1 – Tomcat in Netbeans
34
![Page 35: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/35.jpg)
Appendix 1 – Tomcat in Netbeans
35
![Page 36: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/36.jpg)
Appendix 1 – Tomcat in Netbeans
36
![Page 37: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/37.jpg)
Appendix 1 – Tomcat in Netbeans
37
![Page 38: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/38.jpg)
Appendix 1 – Tomcat in Netbeans
38
![Page 39: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/39.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
• Appendix 1 – Tomcat in Netbeans
• Appendix 2 – Web Service App
• Appendix 3 – Web Service Client
![Page 40: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/40.jpg)
Appendix 2 – Create a Web Service Application
1. Create a new Web Application Project
2. Create a new Web Service
3. Deploy your WebApp Project to Tomcat
40
![Page 41: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/41.jpg)
Appendix 2 – Create a Web Service Application
41
![Page 42: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/42.jpg)
Appendix 2 – Create a Web Service Application
42
![Page 43: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/43.jpg)
Appendix 2 – Create a Web Service Application
43
![Page 44: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/44.jpg)
Appendix 2 – Create a Web Service Application
44
![Page 45: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/45.jpg)
Appendix 2 – Create a Web Service Application
45
![Page 46: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/46.jpg)
Appendix 2 – Create a Web Service Application
46
![Page 47: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/47.jpg)
Appendix 2 – Create a Web Service Application
47
![Page 48: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/48.jpg)
Appendix 2 – Create a Web Service Application
48
![Page 49: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/49.jpg)
Appendix 2 – Create a Web Service Application
49
![Page 50: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/50.jpg)
Appendix 2 – Create a Web Service Application
50
![Page 51: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/51.jpg)
Appendix 2 – Create a Web Service Application
51
![Page 52: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/52.jpg)
Appendix 2 – Create a Web Service Application
52
![Page 53: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/53.jpg)
Appendix 2 – Create a Web Service Application
53
![Page 54: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/54.jpg)
Appendix 2 – Create a Web Service Application
54
![Page 55: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/55.jpg)
Appendix 2 – Create a Web Service Application
55
![Page 56: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/56.jpg)
Age
nda
• JEE, JEE Containers
• What are Web Services
• Big Web Service
• Metro
• REST
• Appendix 1 – Tomcat in Netbeans
• Appendix 2 – Web Service App
• Appendix 3 – Web Service Client
![Page 57: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/57.jpg)
Appendix 3 – Create a Web Service Client
57
![Page 58: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/58.jpg)
Appendix 3 – Create a Web Service Client
58
![Page 59: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/59.jpg)
Appendix 3 – Create a Web Service Client
59
![Page 60: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/60.jpg)
Appendix 3 – Create a Web Service Client
60
![Page 61: © Liron Blecher Web Services Written by Liron Blecher](https://reader036.vdocuments.mx/reader036/viewer/2022062417/5516c33d550346f6208b5926/html5/thumbnails/61.jpg)
Appendix 3 – Create a Web Service Client
The code needed to initialize the Web Service Client:
//create a new service
GameWebService_Service service = new GameWebService_Service();
//get the port
GameWebService gameWebService = service.getGameWebServicePort();
//call methods on the server
gameWebService.play("Some test string...");
61