|
|
|
Based partially on Sun Java Tutorial at |
|
http://java.sun.com/webservices/ |
|
Also, XML, Java and the Future of The Web, Jon
Bosak. |
|
And WSDL Tutorial at: |
|
http://www.w3schools.com/wsdl/ |
|
|
|
|
|
|
What are Web Services? |
|
XML – Extensible Markup Language |
|
WSDL – Web
Service Definition Language |
|
Java APIs for Web Services |
|
XML Processing |
|
XML Messaging (SOAP) |
|
XML Registries |
|
XML-based RPC (SOAP) |
|
|
|
|
|
Services available via the Web. |
|
|
|
Meant mainly for application to application
communication (as opposed to users directly) |
|
Enables Business-to-Business transactions. |
|
Toward a “Semantic Web”. |
|
|
|
E.g., a web service is contacted on a URL using
the SOAP protocol over HTTP. |
|
|
|
|
|
A stock quote service. |
|
An application requires the current value of a
stock, the web service returns it. |
|
A route finder for delivery of goods. |
|
Given an initial and a final location, find the
most cost-effective delivery route. |
|
A weather service, a map service, a web search
service… |
|
any composition of Web services. |
|
|
|
|
|
|
|
Lack of Extensibility |
|
No new tags/attributes allowed. |
|
Fixed Tag Structure |
|
Emphasis on presentation in markup. |
|
No Validation |
|
No data-checking or types. |
|
|
|
In contrast to SGML (Standard Generalized Markup
Language). |
|
But SGML is too complex to be appealing. |
|
So, XML comes to the rescue. |
|
|
|
|
Extensible Markup Language. |
|
HTML++, SGML--. |
|
Document Type Definitions (DTD) precisely define
valid tags and their grammar. |
|
Not backward compatible with HTML. |
|
System-independent and vendor-independent. |
|
Product of the World Wide Web Consortium (W3C),
trademarked by MIT. |
|
|
|
|
<?xml version="1.0"?> |
|
<PUBLICATION> |
|
<TITLE>Why I am
Overworked</TITLE> |
|
<AUTHOR role="author"> |
|
<FIRSTNAME>Fred</FIRSTNAME> |
|
<LASTNAME>Smith</LASTNAME> |
|
<COMPANY>Jones and
Associates</COMPANY> |
|
</AUTHOR> |
|
<ABSTRACT>This is the abstract</ABSTRACT> |
|
</PUBLICATION> |
|
|
|
|
<?xml version="1.0"?> |
|
<!DOCTYPE PUBLICATION |
|
[<!ELEMENT
PUBLICATION(TITLE,AUTHOR+,ABSTRACT*)> |
|
<!ELEMENT AUTHOR (FIRSTNAME, LASTNAME, |
|
(UNIVERSITY | COMPANY)?)> |
|
<!ATTLIST AUTHOR role (author|techwriter)
"author"> |
|
<!ELEMENT FIRSTNAME (#PCDATA)> |
|
<!ELEMENT LASTNAME (#PCDATA)> |
|
<!ELEMENT UNIVERSITY (#PCDATA)> |
|
<!ELEMENT COMPANY (#PCDATA)> |
|
<!ELEMENT ABSTRACT (#PCDATA)> |
|
]> |
|
|
|
|
The schema (DTD) is associated with a document
which allows to perform validation on the document. |
|
|
|
Human-readable/writable. |
|
|
|
Independent of presentation (formatting). |
|
|
|
|
|
While XML is portable, communicating parties
still need to agree on: |
|
Document type definitions |
|
Meaning of tags |
|
“Operations” on data (interfaces). |
|
Meaning of those operations. |
|
Semantic interoperability is still a problem! |
|
|
|
|
|
Web Services Description Language |
|
WSDL is written in XML |
|
WSDL is an XML document |
|
WSDL is used to describe Web services |
|
What operations does the service expose? |
|
WSDL is also used to locate Web services |
|
Where is the web service located? |
|
|
|
|
|
<definitions> |
|
<types> definition
of types... |
|
</types> |
|
<message> definition of a message. |
|
</message> |
|
<portType> definition of a port... |
|
</portType> |
|
<binding> definition of
a binding |
|
</binding> |
|
</definitions> |
|
|
|
|
<message name="getTermRequest"> |
|
<part
name="term" type="xs:string"/> |
|
</message> |
|
<message name="getTermResponse"> |
|
<part
name="value" type="xs:string"/> |
|
</message> |
|
<portType
name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation> |
|
</portType> |
|
|
|
|
The <portType> element is the most
important WSDL element. |
|
It defines a web service, the operations that
can be performed, and the messages that are involved. |
|
The <portType> element can be compared to
a function library (or a module, or a class) in a traditional programming
language. |
|
|
|
|
The <message> element defines the data
elements of an operation. |
|
Each messages can consist of one or more parts.
The parts can be compared to the parameters of a function call in a
traditional programming language. |
|
|
|
|
The <types> element defines the data type
that are used by the web service. |
|
For maximum platform neutrality, WSDL uses XML
Schema syntax to define data types. |
|
|
|
|
The <binding> element defines the message
format and protocol details for each port. |
|
|
|
|
|
|
|
<binding type="glossaryTerms"
name="b1"> |
|
<soap:binding style="document“
transport= |
|
"http://schemas.xmlsoap.org/soap/http" /> |
|
<operation> |
|
<soap:operation
soapAction="http://example.com/getTerm"/> |
|
<input> <soap:body use="literal"/>
</input> |
|
<output> <soap:body
use="literal"/> </output> |
|
</operation> |
|
</binding> |
|
|
|
|
|
JAXP -- Java API for XML Processing |
|
processes XML documents using various parsers |
|
JAX-RPC -- Java API for XML-based RPC |
|
sends SOAP method calls to remote parties over
the Internet and receives the results |
|
JAXM -- Java API for XML Messaging |
|
sends SOAP messages over the Internet |
|
JAXR -- Java API for XML Registries |
|
provides a standard way to access business
registries and share information |
|
|
|
|
JAX-RPC -- Java API for XML-based RPC. |
|
SOAP – Simple Object Access Protocol |
|
In JAX-RPC, a remote procedure call is
represented by an XML-based protocol such as SOAP. |
|
The SOAP specification defines envelope
structure, encoding rules, and a convention for representing remote
procedure calls and responses. |
|
These calls and responses are transmitted as
SOAP messages over HTTP. |
|
|
|
|
JAX-RPC hides this complexity from the
application developer. |
|
On the server side, the developer specifies the
remote procedures by defining methods in an interface. |
|
The developer also codes one or more classes
that implement those methods. |
|
Client programs create a proxy, a local object
representing the service, and then simply invokes methods on the proxy. |
|
|
|
|
A JAX-RPC client can access a Web service that
is not running on the Java platform and vice versa. |
|
This flexibility is possible because JAX-RPC
uses technologies defined by the World Wide Web Consortium (W3C): HTTP,
SOAP, and WSDL. |
|
|
|
|
|
|
|
|
|
Detailed instructions for running the HelloWorld
example can be found at: |
|
|
|
http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXRPC3.html |
|