Java Web Services Developer Pack v1.3 Zhongnan Shen 12/04/2003

Java Web Services
Developer Pack v1.3
Zhongnan Shen
12/04/2003
Outlines
 What is WSDP?
 What’s in WSDP?
 An Example
The Coffee Break Application
 Resources
What is WSDP
 A free integrated toolkit used to build
and test XML applications, Web
services, and Web applications with
the latest Web service technologies
and standards implementations ;
 Supports WS-I Basic Profile 1.0;
 Can be downloaded at
http://java.sun.com/webservices/downloads/webservicespack.html
size:26M; platform: windows, unix
What’s in WSDP












Java Architecture for XML Binding (JAXB) v1.0.2;
Java API for XML Processing (JAXP) v1.2.4;
Java API for XML-based RPC (JAX-RPC) v1.1;
SOAP with Attachments API for Java (SAAJ) v1.2;
Java API for XML Registries (JAXR) v1.0.5;
JavaServer Faces (JSF) v1.0 EA4;
JavaServer Pages Standard Tag Library (JSTL) v1.1 EA;
XML and Web Services Security v1.0 EA2;
Java WSDP Registry Server v1.0_06;
Ant Build Tool 1.5.4;
Apache Tomcat v5 development container;
Ws-I Supply Chain Management Sample Application 1.0;
What’s in WSDP
 Java Architecture for XML Binding (JAXB)
 Providing API and tools for automating the
mapping between XML documents and Java objects;
 Compiling an XML schema into one or more Java
technology classes;
 The following operations can be performed:
 unmarshal XML content into a Java representation;
 access, update and validate the Java
representation against schema constraint;
 marshal the Java representation of the XML content
into XML content.
What’s in WSDP
 Java Architecture for XML Binding (JAXB)
XML Schema
Java Class Files
<xsd:element name="purchaseOrder"
type="PurchaseOrderType"/>
PurchaseOrder.
java
<xsd:element name="comment" type="xsd:string"/>
Comment.java
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="shipTo" type="USAddress"/>
<xsd:element name="billTo" type="USAddress"/>
<xsd:element ref="comment" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date"/>
</xsd:complexType>
PurchaseOrder
Type.java
What’s in WSDP
 Java API for XML Processing (JAXP)
 supports processing of XML documents
using DOM, SAX, and XSLT;
 Document Object Model (DOM): an application
programming interface for HTML and XML
documents;
 Simple API for XML (SAX): a common interface
implemented for many different XML parsers;
 XSL Transformations (XSLT): a language for
transforming XML documents into other XML
documents;
 supports for XML schema and an XSLT
compiler (XSLTC);
What’s in WSDP
 Java API for XML-Based RPC (JAX-RPC)
 an API for building Web services and clients that use
remote procedure calls (RPC) and XML ;
 an easy-to-develop programming model for
development of SOAP based web services, including
web service clients and endpoints;
 developers are not exposed to the complexity of SOAP
protocol level mechanisms;




support for WSDL->Java and Java->WSDL mapping;
support for SOAP message processing model;
support for document based messaging;
support HTTP level session management and SSL
based security mechanisms.
What’s in WSDP
 Java API for XML-Based RPC (JAX-RPC)
What’s in WSDP
 SOAP with Attachments API for Java (SAAJ)
 enables developers to produce and consume
messages conforming to the SOAP 1.1
specification and SOAP with Attachments note;
 derived from the package originally defined in
the JAXM 1.0 specification;
 SOAP messages can contain both XML contents
and non-XML contents (as attachments);
 Messages sent using the SAAJ API are called
request-response messages;
What’s in WSDP
 SOAP with
Attachments API for
Java (SAAJ)
What’s in WSDP
 Java API for XML Registries (JAXR)
 provides a uniform and standard Java API for
accessing different kinds of XML Registries;
 ebXML Registry and Repository standard;
 Universal Description, Discovery, and
Integration (UDDI);
 JAXR enables Java software programmers to use
a single, easy-to-use abstraction API to access a
variety of XML registries. A unified JAXR
information model describes content and
metadata within XML registries;
What’s in WSDP
 Java API for XML Registries (JAXR)
What’s in WSDP
 JavaServer Faces Technologies
 a server-side user interface framework for Java
technology-based Web applications ;
 Main components include:
 A set of APIs for:
representing UI components and managing their state;
handling events and input validation;
defining page navigation;
supporting internationalization and accessibility .
 A JavaServer Pages (JSP) custom tag library for
expressing UI components within a JSP page.
What’s in WSDP
 JavaServer Faces Technologies
What’s in WSDP
 JavaServer Pages Standard Tag Library (JSTL)
 encapsulates core functionality common to many
JSP applications;
<c:forEach var="item" items="${sessionScope.cart.items}">
...
<tr>
<td align="right" bgcolor="#ffffff">
${item.quantity}
</td>
...
</c:forEach>
What’s in WSDP
 JavaServer Pages
Standard Tag
Library (JSTL)
Area
Subfunction
Prefix
Variable Support
Core
Flow Control
URL Management
c
Miscellaneous
Core
XML
Flow Control
x
Transformation
Locale
I18n
Message formatting
fmt
Number and date
formatting
Database
Functions
SQL
Collection length
String manipulation
sql
fn
What’s in WSDP
 XML and Web Services Security
 Transport-Level Security
security is addressed by the transport layer.
 Basic Authentication with JAX-RPC;
 Client-Certificate Authentication over
HTTP/SSL with JAX-RPC;
 Message-Level Security
security information is contained within the
SOAP message.
What’s in WSDP
 Java WSDP Registry Server
 The Java Web Services Developer Pack
(Java WSDP) Registry Server implements
Version 2 of UDDI;
 provide a UDDI registry for Web services
in a private environment;
 use it with the Java WSDP APIs as a test
registry for Web services application
development.
An Example
 Coffee Break Application
The Coffee Break server obtains the
coffee varieties and their prices by
querying distributors at startup and
on demand.
• The Coffee Break server uses
SAAJ messaging to communicate
with one of its distributors.
• The Coffee Break server uses
JAXR to send a query searching
for coffee distributors that
support JAX-RPC to the Registry
Server.
• The Coffee Break server requests
price lists from each of the coffee
distributors.
The Coffee Break server forwards
suborders to each distributor to get
confirmations.
An Example-Coffee Break
 JAX-RPC Distributor Service
 Service side
 Service Interface
public interface SupplierIF extends Remote {
public ConfirmationBean placeOrder(OrderBean order)
throws RemoteException;
public PriceListBean getPriceList() throws RemoteException;
}
 Publishing the Service in the Registry
JAXRPublisher publisher = new JAXRPublisher();
publisher.makeConnection(queryURL, publishURL);
String key = publisher.executePublish(username,
password, endpoint);
An Example-Coffee Break
 JAX-RPC Distributor Service
 Client side
 Building the Static Stub Client;
Clients makes remote call through a stub, a local object
which acts as a proxy for the remote service.
wscompile -gen:client -d build -classpath build config-wsdl.xml
-gen:client flag instructs wscompile to generate the stubs;
-d: flag tells the tool to write the output to the build subdirectory;
config-wsdl.xml file: specifies the location of the WSDL file;
 Invoking the remote method
PriceListBean priceList = PriceFetcher.getPriceList(distributor);
An Example-Coffee Break
 SAAJ Distributor Service
 SAAJ Service
 Returning the Price List
public void doPost(HttpServletRequest req,
HttpServletResponse resp)
{
…Analyze the request…
…Compose the message…
OutputStream os = resp.getOutputStream();
reply.writeTo(os);
os.flush();
}
 Returning the Order Confirmation
An Example-Coffee Break
 SAAJ Distributor Service
 SAAJ Client
SOAPConnectionFactory scf
= SOAPConnectionFactory.newInstance();
SOAPConnection con = scf.createConnection();
……
Compose the request
……
SOAPMessage response = con.call(request, endpoint);
An Example-Coffee Break
 Coffee Break Server
The Coffee Break Server uses servlets, JSP pages, and
JavaBeans components to dynamically construct HTML pages
for consumption by a Web browser client.

RetailPriceListServlet


& RetailPriceList
The RetailPriceListServlet responds to requests to reload the
price list;
Component RetailPriceList
 Discovering the JAX-RPC Service
JAXRQueryByName jq = new JAXRQueryByName();
connection = jq.makeConnection(queryURL, publishURL);
jq.executeQuery(queryString);
 Query JAX-RPC service and SAAJ service
 CheckoutFormBean
submits suborders to each distributor
Resources
 Java Web Services Developer Pack 1.3
dowload:
http://java.sun.com/webservices/downloads/webservice
spack.html
Tutorial:
http://java.sun.com/webservices/docs/1.3/tutorial/doc/i
ndex.html
Sample Applications:
http://java.sun.com/webservices/docs/1.3/wsisampleapp/index.html
Thanks for Listening