Title: Cocoon: A Framework for Web Services
1Cocoon A Framework for Web Services
- Using Cocoon to consume and produce Web Services
Pankaj Kumar pankaj_kumar_at_hp.com Web Services
Architect, HP Middleware
2Presentation Goals
- Understand Apache Cocoon, Web Services and how
Cocoon can be used to build - Web Applications that consume Web Services and
- Web Services that process huge XML documents
3Speakers Qualifications
- More than 12 years of System Programming
experience - Development manager in HP E-speak development
- Development manager of HP XML Application
Frameworks ( Cocoon connection ) - Currently Web Services Architect at HP Middleware
( Web Services connection ) - Contributor to Cocoon project
- JAX-RPC and JSR109 Expert Group Member
- Personal web-site http//www.pankaj-k.net
4Presentation Topics
- What is Cocoon?
- Exploring Cocoon
- What are Web Services?
- Cocoon and Web Services
- A Simple Cocoon Web Application
5 What is Cocoon?
6Apache Cocoon
- XML based publishing Framework
- An Apache Software Foundation opensource project
- Written in Java, runs as a servlet ( not strictly
true ! ) - Project Home Page http//xml.apache.org/cocoon
- Started as a simple servlet based XSL styling
engine for http//java.apache.org site - Current version is in the second generation of
evolution - Designed for scalability ( uses SAX processing )
-- can process huge documents using small amount
of memory
7Apache Cocoon ( Contd. )
- Promotes separation of Content, Logic,
Presentation and Management in web-site design.
8 Exploring Cocoon
9Getting Started
- Download Cocoon Distribution from
http//xml.apache.org/cocoon - I used Cocoon 2.0.1 for this presentation
- Unzip the distribution file cocoon-2.0.1-bin.zip.
- Drop cocoon.war to webapps directory of your
Servlet Container - I used Tomcat 4.0.1 as the Servlet Container
- Start the Servlet Container
- Point your browser to http//localhost8080/cocoon
10Cocoon Welcome Page
11Cocoon Servlet Dirs. Files
Directory for auto mounting sub-sitemaps
Cocoon Configuration file
A sub-sitemap directory
Main sitemap file
Directory for log files
12Cocoon Sitemap
- Why Sitemap ?
- need to de-couple exposed URI space from actual
location of resources - need easily changeable specification of
processing steps - What does it contain?
- Component declarations
- generators, transformers, serializers, ...
- Resource declarations
- named collection of pipeline components
- Pipeline declarations
- sequential arrangement of components for
processing
13Cocoon Sitemap ( Contd. )
- A sitemap is an XML file
- Sitemaps are hierarchical -- A sitemap can point,
explicitly or implicitly, to sub-sitemaps - A sitemap is translated into a java program and
is compiled to bytecode - Changes to sitemaps can be loaded dynamically and
asynchronously. - Cocoon community has debated extensively on
philosophical aspects of Sitemap but nothing
better has come out ( yet ! ).
14A sample pipeline
- ltmappipelinegt
- ltmapmatch pattern"hello.html"gt
- ltmapgenerate src"docs/samples/hello-page.xml
"/gt - ltmaptransform src"stylesheets/page/simple-pa
ge2html.xsl"/gt - ltmapserialize type"html"/gt
- lt/mapmatchgt
- ltmapmatch pattern"images/.png"gt
- ltmapread src"resources/images/1.png"
mime-type"image/png"/gt - lt/mapmatchgt
- ltmaphandle-errorsgt
- ltmaptransform src"context//stylesheets/syst
em/error2html.xsl"/gt - ltmapserialize status-code"500"/gt
- lt/maphandle-errorsgt
- lt/mappipelinegt
15Request Processing By Cocoon
- Request is dispatched to matching pipeline
- Basic pipeline operation
- The generator generates XML content
- Zero or more transformers transform the content
- The serializer writes it to the output stream
- Different Kinds of generators
- File, Directory, XSP, JSP, Stream,
- Different Kinds of transformers
- XSLT, I18N, Log,
- Different Kind of Serializers
- HTML, XML, Text, PDF, SVG, ...
16Dynamic Content from XSP
- lt!-- A simple XSP Page --gt
- ltxsppage language"java
- xmlnsxsphttp//apache.org/xsp gt
- ltpagegt
- lttitlegtA Simple XSP Pagelt/titlegt
- ltcontentgt
- ltparagtdynamically generated listlt/paragt
- ltulgt
- ltxsplogicgt
- for (int i0 i lt 3 i)
- ltligt Item
- ltxspexprgtilt/xspexprgt
- lt/ligt
-
- lt/xsplogicgt
- lt/ulgt
- lt/contentgt
- lt/pagegt
- lt/xsppagegt
17 What Are Web Services?
18Defining Web Services
- Most commonly used definition
- Web Services are
- described in WSDL
- exchange SOAP messages
- use HTTP as transport
- optionally, registered in UDDI registry
- Interaction can happen using RPC style or
Document Exchange style, synchronously or
asynchronously - Knowledge of Implementation language or
deployment platform is not required for
interaction. - Web Services promise Interoperability.
19SOAP 1.1
- XML based protocol for exchange of information
- Encoding rules for datatype instances
- Convention for representing RPC invocations
- Designed for loosely-coupled distributed
computing - Used with XML Schema
- Transport independent
- SOAP with Attachments allow arbitrary data to be
packaged.
20WSDL 1.1
WSDL 1.1 Document Structure
- A WSDL document describes
- What the service can do
- Where it resides
- How to invoke it
- WSDL are like IDL but lot more flexible and
extensible - Defines binding for SOAP1.1, HTTP GET/POST and
MIME - WSDL descriptions can be made available from an
UDDI registry
WSDL Document
Types
Messages
PortTypes
Bindings
Services
21What is a Web Services Platform ?
- Environment, tools, libraries and other resources
for - Development of web services
- top down -- start with user code and generate
WSDL - bottom up -- start with WSDL and generate
interfaces - middle out -- a combination
- discovery of service interfaces
- Deployment of web services
- publishing of services
- pre and post processing of SOAP requests,
responses - processing requests for WSDL descriptions
- Consumption of Web Services
- discovery of Web Service
- invocation of/interaction with Web Services
22Java Platforms and Standards
- Java Platforms for Web Services
- HP WSP, HP WSR, HP WST
- Apache SOAP 2.2, Apache Axis, UDDI4J, Cocoon
- JWSDK ( Reference Implementation from Sun )
-
- Emerging Java Standards for Web Services
- JAXM ( Java XML Messaging )
- JAX-RPC ( Java Web Service Client Prog. model)
- JSR 109 ( Java Web Service Prog. Model,
deployment, ...) - JAXR ( Java API to access Web Service Registries
) - J2EE 1.4 ( J2EE platform for Web Services )
- Java standards promise portability
23Observations on Java Platforms and Standards
- Handle synchronous RPC style Web Services quite
well - Not so good at supporting Web Services with
document exchange style, especially with
asynchronous interface - Have difficulty dealing with large data
- Many approaches to build and consume Web Services
( but must adhere to wire protocols ) - Standards in many areas are still emerging
- routing, reliable messaging
- security
- transactioning
- ...
24 Cocoon and Web Services
25Cocoon as a Presentation Framework for
Web-Services
26Cocoon as a Processing Framework for Web Services
27 A Simple Cocoon Web Application
28Problem Statement
- Use Google Web Services API from
http//www.google.com/apis - to create a simple web application that accepts a
search string from user and displays the list of
result entries. - Acknowledgement This example is based on the XSP
contributed by Ugo Cei in Cocoon-dev mailing
list.
29Application Components
- sitemap.xmap -- Sitemap for this application
- index.html -- HTML file to accept search string
- google.xsp -- XSP file that makes the SOAP call
to Google Web Service using SOAP logicsheet. - search-results.xsl -- XSL stylesheet to transform
SOAP response from Google Web Service to HTML
page - Downloadable from
- http//www.pankaj-k.net/sdwest2002/google.zip
30Application Architecture
Google WS
Cocoon Servlet
Browser
http//lthostgt/cocoon/mount/google/
Maps request to index.html
index.html
/search?q...
SOAP request
SOAP response
executes google.xsp
Search results in HTML
Applies search-results.xsl
31Demo Architecture
Cocoon Servlet
Browser
http//lthostgt/cocoon/mount/google/welcome-local
Maps request to index-local.html
index.html
/search-local?q...
Reads google.results
Search results in HTML
Applies search-results.xsl
32Web Application Demo
- Walk through the
- Design, Sources
- and the Demo