0% found this document useful (0 votes)
119 views

Web Services: JAX-RPC, WSDL, XML Schema, and Soap: CSI 3140 WWW Structures, Techniques and Standards

This document discusses web services concepts and standards including SOAP, WSDL, XML Schema, JAX-RPC, and how they are used to define and implement web services. It explains how web services use HTTP and XML to allow software applications to communicate and exchange data over the web. The document also provides examples of how to create a Java-based web service using JAX-RPC and JWSDP that defines service endpoints, implements the service, generates WSDL, and deploys the service.

Uploaded by

studentscorners
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
119 views

Web Services: JAX-RPC, WSDL, XML Schema, and Soap: CSI 3140 WWW Structures, Techniques and Standards

This document discusses web services concepts and standards including SOAP, WSDL, XML Schema, JAX-RPC, and how they are used to define and implement web services. It explains how web services use HTTP and XML to allow software applications to communicate and exchange data over the web. The document also provides examples of how to create a Java-based web service using JAX-RPC and JWSDP that defines service endpoints, implements the service, generates WSDL, and deploys the service.

Uploaded by

studentscorners
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 76

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

You might also like