CSI 3140
WWW Structures, Techniques and Standards
Web Services:
JAX-RPC, WSDL, XML Schema, and
SOAP
Web Services Concepts
A web application uses Web technologies
to provide functionality to an end user
A web service uses Web technologies to
provide functionality to another software
application
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 2
Web Services Concepts
Standard web services technologies:
Communication via SOAP XML vocabulary
documents over HTTP
Operations of web service defined by Web
Services Definition Language (WSDL) XML
vocabulary
Data within WSDL defined using XML Schema
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 3
Web Services Concepts
Higher-level API’s are often used to
automatically generate web services client and
server communication software
We will use the Java API for XML-based
Remote Procedure Call (JAX-RPC)
Microsoft .NET framework is one popular
alternative to JAX-RPC
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 4
Web Services Concepts
Web services conceptually are just
specialized web applications:
HTTP request (SOAP body)
Server
Client (Java servlet)
HTTP response (SOAP body)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 5
Web Services Concepts
Body of web services request is analogous
to calling a method
Operation name (like method name)
Input parameter
Input parameter values
names
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 6
Web Services Concepts
Body of web services response is analogous
to value returned by a method
Return value data type
Return
value
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 7
Web Services Concepts
WSDL defines web service
Operations
Parameters
Return values
Communication protocols
Basically an API for the web service
Facilitates automated client/server software
generation
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 8
Web Services Concepts
PortionsInput
params
of NWS Data types
defined using
WSDL XML Schema
Return
type
Operation name
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 9
Web Services Concepts
Java Web Services Developer Pack
(JWSDP) wscompile tool can implement a
Java API from a WSDL
Classes and methods
generated by wscompile
This method automatically
handles SOAP request and response
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 10
Web Services Concepts
Writing the server for a web service with
JWSDP:
Write a Java interface defining the API
Implement the interface
JWSDP generates
SOAP and communication handling classes
WSDL
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 11
Web Services Concepts
Example Java interface
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 12
Web Services Concepts
Example implementation
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 13
Web Services Examples
Tons of WS available on the internet.
http://www.webservicex.net as a good collection
Geo IP: http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP
Whois: http://www.webservicex.net/whois.asmx?op=GetWhoIS
SMS: http://www.webservicex.net/sendsmsworld.asmx
Etc..
Google:
Amazon
S3
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 14
JWSDP: Server
Application: currency converter
Three operations:
fromDollars
fromEuros
fromYen
Input: value in specified currency
Output: object containing input value and
equivalent values in other two currencies
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 15
JWSDP: Server
1.Write service endpoint interface
• May need to write additional classes representing data
structures
2.Write class implementing the interface
3.Compile classes
4.Create configuration files and run JWSDP tools to
create web service
5.Deploy web service to Tomcat
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 16
JWSDP: Server
Service endpoint interface
Must extend java.rmi.Remote
Every method must throw
java.rmi.RemoteException
Parameter/return value data types are restricted
No public static final declarations
(global constants)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 17
JWSDP: Server
Allowable parameter/return value data types
Java primitives (int, boolean, etc.)
Primitive wrapper classes (Integer, etc.)
String, Date, Calendar, BigDecimal,
BigInteger
java.xml.namespace.QName, java.net.URI
Struct: class consisting entirely of public instance
variables
Array of any of the above
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 18
JWSDP: Server
Struct for currency converter app (data type
for return values)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 19
JWSDP: Server
Service endpoint interface
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 20
JWSDP: Server
1.Write service endpoint interface
• May need to write additional classes representing data
structures
2.Write class implementing the interface
3.Compile classes
4.Create configuration files and run JWSDP tools to
create web service
5.Deploy web service to Tomcat
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 21
JWSDP: Server
Class CurConImpl contains methods, for
example:
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 22
JWSDP: Server
1.Write service endpoint interface
• May need to write additional classes representing data
structures
2.Write class implementing the interface
3.Compile classes
4.Create configuration files and run JWSDP tools to
create web service
5.Deploy web service to Tomcat
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 23
JWSDP: Server
Configuration file input to wscompile to
create server
Namespaces
used in
WSDL
(normally,
unique URL’s
at your
Web site)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 24
JWSDP: Server
Configuration file for web service
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 25
JWSDP: Server
Configuration file for web service
Context path
Like
servlet
in
web.xml
Like
servlet-mapping
in
web.xml
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 26
JWSDP: Server
Also need a minimal web.xml
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 27
JWSDP: Server
Run jar and wsdeploy to create a Web
Archive (WAR) file converter.war
Name must match urlPatternBase value
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 28
JWSDP: Server
1.Write service endpoint interface
• May need to write additional classes representing data
structures
2.Write class implementing the interface
3.Compile classes
4.Create configuration files and run JWSDP tools to
create web service
5.Deploy web service to Tomcat
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 29
JWSDP: Server
Just copy converter.war to Tomcat
webapps directory
May need to use Manager app to deploy
Enter converter.war in “WAR or Directory
URL” text box
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 30
JWSDP: Server
Testing success:
Visit http://localhost:8080/converter/currency
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 31
JWSDP: Client
Goal: write a JSP-based client
Input: currency and value
Output: table of equivalent values
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 32
JWSDP: Client
Configuration file input to wscompile to
create client
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 33
JWSDP: Client
Directory structure (wscompile generates
content of classes and src)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 34
JWSDP: Client
Starting point for writing a client (if the
web service author does not explain how):
In the WSDL, find the name attribute of the
service element
Look in Java file with this name to see how to
obtain a proxy object for the service
Data type of proxy object Method called to obtain object
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 35
JWSDP: Client
Obtaining the proxy object:
Java file consisting of service name followed by
_Impl defines a class implementing the proxy-
generating interface
Client code begins with method call on this
class:
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 36
JWSDP: Client
Using the proxy object:
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 37
JWSDP: Client
Structs will be represented as JavaBeans
classes, regardless of how they are defined on
the server
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 38
JWSDP: Client
Bean obtaining and calling proxy object:
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 39
JWSDP: Client
JSP document using the bean:
Call to getExValues()
Call to getEuros()
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 40
WSDL Example
Namespaces
specified in
config files
WSDL
namespaces XML Schema NS
Target namespace: namespace for names
(e.g., of operations) defined by the WSDL
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 41
WSDL Example
Namespace for
data type definitions
(ns2 in rest of document)
Defines struct
using XML
Schema
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 42
WSDL Example
Data type defined by
XML Schema
Output
Input messages
messages (response
(parameter data types)
lists)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 43
WSDL Example
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 44
WSDL Example
Implement the operations using SOAP encoding of
data structures and RPC (JWSDP defaults)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 45
WSDL Example
Replaced by server
when WSDL is visited
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 46
WSDL Example
Summary:
types uses XML Schema to define data types
message elements define parameter lists and
return types using types and XML Schema
portType defines abstract API for operation’s
using message’s
binding specifies how message’s will be
communicated and operation’s called
service associates URL with binding
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 47
XML Schema
How do we send a Java double value to a
web service using XML?
Is scientific notation allowed?
How large can the value be?
Etc.
What if we want to send an object?
And what if the object contains references to other
objects?
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 48
XML Schema
XML Schema addresses such questions
Defines a number of simple data types, including
Range of allowed values
How values are represented as strings
Provides facilities for defining data structures in
terms of simple types or other data structures
Can also be used in place of XML DTD
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 49
XML Schema
Built-in data types Built-in type
Types corresponding to Java primitive types:
boolean, byte,int, double, etc.
String representations much as Java
Exception: can use 0 for false, 1 for true
No char; use string instead
XML DTD types (ID, CDATA, etc.)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 50
XML Schema
Built-in data types
integer and decimal (arbitrary precision)
dates, times, and related subtypes
URLs
XML namespace qualified names
binary data
some restricted forms of the above, e.g.,
nonNegativeInteger
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 51
XML Schema
XML Schema namespace defining built-in
types is called the document namespace
Standard prefix for this namespace is xsd
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 52
XML Schema
Plus Java primitive types (int, etc.)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 53
XML Schema
Mapping from XML Schema data types to
Java:
Primitives: one-for-one mapping
date, time, dateTime: map to Calendar
most others: map to String
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 54
XML Schema
Elements in the document namespace can
declare user-defined data types
Two XML Schema data types:
Complex: requires markup to represent within an
XML document
Simple: can be represented as character data
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 55
XML Schema
User-defined data types are declared in the
types element of a WSDL
Example: ExchangeValue
In WSDL, user-defined types can be used
To define other data types within types element
To specify data types of parameters and return
values in message elements
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 56
XML Schema
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 57
XML Schema
An XML schema is markup that
Is written according to the XML Schema vocabulary
Defines an XML vocabulary
A schema document is an XML document
consisting entirely of an XML schema
A document conforming with an XML schema
vocabulary is call an instance of the schema
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 58
XML Schema
Root element of the markup of an XML schema
is schema
Define data types with elements:
complexType
simpleType
An XML schema can also define other
vocabulary aspects (allowed elements, element
content) that we won’t cover
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 59
XML Schema
One way to define simple types: restrict an
existing simple base type
Base type
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 60
XML Schema
Built-in types all have facets, that is, aspects that can
be restricted
enumeration is a facet that applies to all built-in types
except boolean
length, minLength, maxLength apply to string-like
types (e.g., string, QName, anyURI)
minInclusive, maxInclusive, minExclusive,
maxExclusive apply to numeric and time-oriented types
totalDigits, fractionDigits apply to numeric types
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 61
XML Schema
Restricting multiple facets:
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 62
XML Schema
pattern facet
applies to most types (except a few DTD)
specifies regular expression
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 63
XML Schema
Other simple types
Union: combine two or more types
Lists of values of simple type
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 64
XML Schema
Complex type
Defined in an XML schema
Used in an instance document
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 65
XML Schema
Complex type can be used in placed of
XML DTD content specification
sequence element is equivalent to , operator in
DTD
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 66
XML Schema
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 67
XML Schema
Instance namespace
Normally associated with prefix xsi
Used within instance documents to
define null-valued elements
define data types
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 68
SOAP
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 69
SOAP
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 70
SOAP
Alternate form
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 71
SOAP
SOAP encoding of arrays in WSDL
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 72
SOAP
Array in SOAP document
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 73
SOAP
If SOAP is sent via HTTP, request must
include SOAPAction header field
Either empty or a URI
Can be used to pass operation rather than
embedding in body of message
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 74
Web Services Technologies
Other implementation of JAX-RPC and/or
Java-based web services
Apache Axis
IBM WebSphere
Microsoft support for web services: .NET
PHP also has web services tools
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 75
Web Services Technologies
Universal Discovery, Description, and
Integration (UDDI)
Technology for creating directories of web services
Web Services-Interoperability Organization
(WS-I) Basic Profile
Specification of how web services should be used to
enhance interoperability
Must use XML Schema and literal encoding (rather
than SOAP encoding)
Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides 76