web services jax rpc wsdl xml schema and soap l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Web Services: JAX-RPC, WSDL, XML Schema, and SOAP PowerPoint Presentation
Download Presentation
Web Services: JAX-RPC, WSDL, XML Schema, and SOAP

Loading in 2 Seconds...

play fullscreen
1 / 76

Web Services: JAX-RPC, WSDL, XML Schema, and SOAP - PowerPoint PPT Presentation


  • 316 Views
  • Uploaded on

Web Services: JAX-RPC, WSDL, XML Schema, and SOAP. CSI 3140 WWW Structures, Techniques and Standards. Web Services Concepts. A web application uses Web technologies to provide functionality to an end user

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Web Services: JAX-RPC, WSDL, XML Schema, and SOAP' - veata


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
web services jax rpc wsdl xml schema and soap

Web Services:JAX-RPC, WSDL, XML Schema, and SOAP

CSI 3140

WWW Structures, Techniques and Standards

web services concepts
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

web services concepts3
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

web services concepts4
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

web services concepts5
Web Services Concepts
  • Web services conceptually are just specialized web applications:

HTTP request (SOAP body)

Server

(Java servlet)

Client

HTTP response (SOAP body)

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

web services concepts6
Web Services Concepts
  • Body of web services request is analogous to calling a method

Operation name (like method name)

Input parameter

names

Input parameter values

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

web services concepts7
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

web services concepts8
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

web services concepts9
Web Services Concepts
  • Portions of NWS WSDL

Input

params

Data types

defined using

XML Schema

Return

type

Operation name

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

web services concepts10
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

web services concepts11
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

web services concepts12
Web Services Concepts
  • Example Java interface

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

web services concepts13
Web Services Concepts
  • Example implementation

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

web services examples
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

jwsdp server
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

jwsdp server16
JWSDP: Server
  • Write service endpoint interface
    • May need to write additional classes representing data structures
  • Write class implementing the interface
  • Compile classes
  • Create configuration files and run JWSDP tools to create web service
  • Deploy web service to Tomcat

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server17
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

jwsdp server18
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

jwsdp server19
JWSDP: Server
  • Struct for currency converter app (data type for return values)

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server20
JWSDP: Server
  • Service endpoint interface

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server21
JWSDP: Server
  • Write service endpoint interface
    • May need to write additional classes representing data structures
  • Write class implementing the interface
  • Compile classes
  • Create configuration files and run JWSDP tools to create web service
  • Deploy web service to Tomcat

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server22
JWSDP: Server
  • Class CurConImpl contains methods, for example:

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server23
JWSDP: Server
  • Write service endpoint interface
    • May need to write additional classes representing data structures
  • Write class implementing the interface
  • Compile classes
  • Create configuration files and run JWSDP tools to create web service
  • Deploy web service to Tomcat

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server24
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

jwsdp server25
JWSDP: Server
  • Configuration file for web service

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server26
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

jwsdp server27
JWSDP: Server
  • Also need a minimal web.xml

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server28
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

jwsdp server29
JWSDP: Server
  • Write service endpoint interface
    • May need to write additional classes representing data structures
  • Write class implementing the interface
  • Compile classes
  • Create configuration files and run JWSDP tools to create web service
  • Deploy web service to Tomcat

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp server30
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

jwsdp server31
JWSDP: Server
  • Testing success:
    • Visit http://localhost:8080/converter/currency

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp client
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

jwsdp client33
JWSDP: Client
  • Configuration file input to wscompile to create client

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp client34
JWSDP: Client
  • Directory structure (wscompile generates content of classes and src)

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp client35
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

jwsdp client36
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

jwsdp client37
JWSDP: Client
  • Using the proxy object:

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp client38
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

jwsdp client39
JWSDP: Client
  • Bean obtaining and calling proxy object:

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

jwsdp client40
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

wsdl example
WSDL Example
  • Target namespace: namespace for names (e.g., of operations) defined by the WSDL

Namespaces

specified in

config files

WSDL

namespaces

XML Schema NS

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

wsdl example42
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

wsdl example43
WSDL Example

Data type defined by

XML Schema

Output

messages

(response

data types)

Input

messages

(parameter

lists)

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

wsdl example44
WSDL Example

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

wsdl example45
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

wsdl example46
WSDL Example

Replaced by server

when WSDL is visited

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

wsdl example47
WSDL Example
  • Summary:
    • typesuses 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

xml schema
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

xml schema49
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

xml schema50
XML Schema
  • Built-in data types
    • 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.)

Built-in type

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

xml schema51
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

xml schema52
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

xml schema53
XML Schema
  • Plus Java primitive types (int, etc.)

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

xml schema54
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

xml schema55
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

xml schema56
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

xml schema57
XML Schema

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

xml schema58
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

xml schema59
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

xml schema60
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

xml schema61
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

xml schema62
XML Schema
  • Restricting multiple facets:

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

xml schema63
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

xml schema64
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

xml schema65
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

xml schema66
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

xml schema67
XML Schema

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

xml schema68
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

slide69
SOAP

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

slide70
SOAP

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

slide71
SOAP
  • Alternate form

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

slide72
SOAP
  • SOAP encoding of arrays in WSDL

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

slide73
SOAP
  • Array in SOAP document

Guy-Vincent Jourdan :: CSI 3140 :: based on Jeffrey C. Jackson’s slides

slide74
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

web services technologies
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

web services technologies76
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