Transcript Document
Web Services Development in WebSphere v5
by
Tapas Banerjee
CEO, Web Age Solutions Inc.
What are Web Services?
Applications that can be published, located and
invoked programmatically over the Web.
XML-based (XML-in, XML-out).
Self-contained functions that can be used
individually to provide services.
Good applications:
–
Business Information.
–
Business Integration
–
Business Process Externalization.
Service Oriented Architecture
A service-oriented architecture is created by
services communicating with each other
The SOA architecture allows
–
Different systems and programming languages to talk to
each other
–
Describes the service interface clearly
–
Allows search for needed services
It’s made up of - service provider, service broker
and service requestor
Web Services implement this architecture
Web Services Supporting
Architecture Standards
Web Services rely on:
–
XML (eXtensible Markup Language).
–
UDDI (Universal Description Discovery and
Integration).
●
–
SOAP (Simple Object Access Protocol).
●
–
Publish and discover.
Query UDDI, binding and use of services.
WSDL (Web Services Description Language).
●
Describe the interfaces of Web Services.
The Functions and Information
Flow
Service Broker
UDDI Registry
2. Assign a unique ID and
populate the registry
Service Provider
Service Consumer
1. Publish
Web Service
3. Discover
4. Request/Response via SOAP
Client
Web Services
Programming Model
RPC-based:
Service-specific.
Synchronous model.
Similar to RMI and DCOM.
Message-based:
Document-driven.
Asynchronous model.
Web Services
Programming APIs
APIs for RPC-based Web Services:
APIs for Message-based Web Services:
Sun’s JAX-RPC (Java API for XML-RPC) in WSDP.
Apache’s SOAP-RPC (Apache SOAP 2.3 ships with WAS5)
Sun’s JAXM (Java API for XML Messaging) in WSDP.
Apache’s SOAP-Message.
APIs for publishing and discovering Web Services:
Sun’s JAXR(Java API for XML Registry) in WSDP.
IBM’s UDDI4J.
JAXR –
Java API for XML Registry
Enables Java programs to access XML
registries.
JAXR provider:
–
Accesses XML registry.
–
A façade to a registry provider.
JAXR client:
–
A client program that accesses an XML registry using JAXR API.
–
Perform queries and update UDDI registries.
Sun’s registry browser
–
Included in WSDP download.
–
Is a JAXR client with GUI.
–
Allows to publish and search XML registries.
Other Web Services Concepts
Several other important Web Services
concepts:
–
Web Services Invocation Framework
–
Web Services Inspection Language (WSInspection)
–
Workflows
–
Web Services Gateway
–
Web Services Security
Web Services Invocation
Framework
Web Services Invocation Framework (WSIF)
–
A framework for the simple invocation of Web
Services over a Java API.
–
Allows for maximum flexibility and late (even
runtime) binding for clients
Web Services Inspection Language
(WS Inspection)
A complementary technology to UDDI
A service discovery mechanism
XML-based model for building a list of
references to existing Web Service
descriptors
Workflow and Web Services
A Workflow description allows a process to
be described as a sequence of discrete
events (e.g. service calls)
A workflow engine can then parse the
workflow description and execute the
sequence automatically
Defines a business process
Workflow Languages
There are three web services workflow
languages:
–
Web Services Flow Language (WSFL)
●
–
Flow Definition Markup Language (FDML)
●
–
XML-based
Similar to WSFL, but with extensions
Business Process Execution Language For Web
Services (BPEL4WS)
●
A meeting of IBM's WSFL and Microsoft's XLANG
Web Services Gateway (WSGW)
The WSGW acts as an additional layer
between a web service client, and a web
service provider
Server side
Allows for better control over web service
communication
The Gateway Administrative
Console
Security Needs
Since web services are inherently network
based (and typically Internet-based), security
is crucial
Additionally, web service communication can
be compromised at many levels
SOAP HTTP Request Example
POST /SampleWebServiceWeb/servlet/rpcrouter HTTP/1.0
Host: localhost:9080
Content-Type: text/xml; charset=utf-8
Content-Length: 526
SOAPAction: ""
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:findDepartmentByName
xmlns:ns1="http://tempuri.org/webservice.ejb.EmployeeDirectory"
SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<departmentName xsi:type="xsd:string">Sales</departmentName>
</ns1:findDepartmentByName>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP HTTP Response Example
HTTP/1.1 200 OK
Server: WebSphere Application Server/5.0
Set-Cookie: JSESSIONID=000050K5KBO5DKK1CC4A2J2VKIY:-1;Path=/
Cache-Control: no-cache="set-cookie,set-cookie2"
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 659
Content-Language: en-US
Connection: close
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:findDepartmentByNameResponse
xmlns:ns1="http://tempuri.org/webservice.ejb.EmployeeDirectory" SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xmlns:ns2="http://bean.webservice/" xsi:type="ns2:Department">
<location xsi:type="xsd:string">Toronto</location>
<name xsi:type="xsd:string">Sales</name>
</return>
</ns1:findDepartmentByNameResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Different SOAP Implementations
SOAP4J - A Java reference implementation of the
SOAP 1.1 specification. It now became the basis of
the Apache SOAP 3.x project, also called Axis.
Apache SOAP 2.3
–
Ships with WebSphere V5
–
Important elements are
●
Rpcrouter and messagerouter servlets
●
The deployment descriptor
●
Type mapping registry
What is WSDL?
WSDL is an XML-based language for defining
available Web Services and describing how to
access the services, including URL endpoint,
message format, encoding and required protocol.
Similar to IDL (Interface Definition Language) for
CORBA, describing the services and how to use
the services
WSDL 1.1 is the current standard.
Tools available to generate WSDL files.
UDDI Data Structure
Five data
structure types:
–
–
–
–
–
businessEntity
businessService
bindingTemplat
e
publisherAsserti
on
tModel
<businessEntity>
<businessEntity>
name, contact, identification
name,
contact,category
identification
description,
description, category
<businessService>
(1..n)
<businessService>
name
(1..n)
description
name
description
<publisherAssertion>
Name
description
reference
<bindingTemplate>
<bindingTemplate>
<tModel>
Name
Description
URL pointer
to specification
UDDI4J
IBM’s UDDI4J is a Java-based UDDI client
API.
It provides package/classes for accessing
UDDI registry (publishing and discovering).
UDDIProxy object is the client side proxy
of the registry.
Program the UDDIProxy for
publishing/discovering services.
Developing Web Services
Generate deployable web service from
–
Java Bean
–
DADX (XML/DB2 mapping documents)
–
Enterprise Java Bean
–
URL
Generate skeleton Java Bean and sample
application from WSDL document
Web Services Client wizard also creates
–
Web Service Proxy as Java Bean
–
Sample JSP-based client application
Overall Workflow
Typical development path
1.
Create a Web Project
2.
Create/Import a resource from which to create a
web service (Java Bean, EJB, DADX document,
…)
3.
Create a Web Service using Web Service Wizard
4.
Publish a Business Entity, if required
5.
Publish the Web Service
Creating a Web Service from a Java
Bean
Typical steps:
1.
Create/Import Java Bean into Web Project
2.
Generate binding WSDL document using Web
Service Wizard
3.
Deploy Web Service to a Web Server
4.
Generate client proxy
5.
Generate sample client application
Then publish, discover and use web service
… from an EJB
Typical steps:
1.
Create a Web Project
2.
Create/Import EJBs into an EJB Project belonging to the
same Enterprise Application Project as the Web Project
3.
Update project dependencies
… then it’s “business as usual”
WSAD only generates a Web Service from a
Stateless Session EJB
–
… but that session bean can always use entity beans!
Web Service Development Phases
Build
–
May start from Java code, then we generate WSDL
from that
–
Or start from WSDL and build/morph Java code to
match
Deployment
–
We can publish using
●
UDDI, WSIL or E-mailing customers
Run
Management
Different web service creation
paths
From an existing application – bottom-up
–
Most common. We like to expose existing back-end
systems for enterprise integration (EAI) purposes.
From WSDL, generate a completely new application
– top-down
–
This may be due to a new spec imposed by a governing
body
–
The wizards can create skeleton code from WSDL, we
then fill up the details
Combine independent web services to provide new
functionality. This route is similar to the façade
design pattern.
Different WebSphere products –
how do they fare?
There are three products in the WebSphere family
that can be used
–
WSAD
–
WSAD IE
–
WebSphere SDK for web services (WSDK) family
All three can do bottom-up and top-down from
JavaBeans
WSAD IE and WSDK can do bottom-up and top-
down from EJB’s
–
Regular WSAD cannot do top-down for EJB’s I.e. cannot
create EJB’s from WSDL.
… from XML schema
Generate Java Bean from XML schema
1.
2.
3.
4.
5.
Create any project that works with Java source
code (Java, EJB, Web, …)
Create/Import XML schema in the project
Start Web Services Wizard
Select Java beans for XML Schema.
Follow instructions to generate Java Beans
Now generate the Web Service from the new
Java Bean
WSDK 5.0
WebSphere SDK for Web Services
–
Entry level developer kit, free for development
–
But not for production or deployment
–
Runs on Windows 2000/XP and Linux
–
Based on Axis (Apache SOAP engine)
–
Has embedded application server (mini WebSphere
5.0) and a private UDDI registry
–
Supports SOAP 1.1, WSDL 1.1, UDDI 2.0, JAX_RPC
1.0, WSDL4J, UDDI4J and WS-Security
ETTK (previously called WSTK)
IBM Emerging Technologies Toolkit (previously
called Web Services toolkit)
An IBM alphaworks technology, showcases
technologies to come
Exposes the AXIS programming model
WSTK version 3.2.2 includes
–
WS-C/WS-Tx for transaction flows between components
–
Web Services matchmaking engine – Businesses submit
advertisements. When a customers search matches an
advertisement, a response is triggered
–
WSXL – For better handshaking of web services with
portal applications
Web Services Deployment in
WebSphere
If you are using WSAD 5, it is same as
deploying an EAR file
If you are using WSAD 4
–
Export the Web Service as a WAR
–
Use AAT to create an EAR
–
Use soapearenabler.bat to add SOAP services
Summary
We discussed
–
What are Web Services.
–
Web Services programming model.
–
How does a SOAP message look.
–
Developing Web Services.
–
Web Service Development Phases.