• …concentrate on developing the
portal, providing a simple front end
and developing a means for adding
independent modules to the portal
– the technology will be based on Cocoon.
• A sample portlet will be developed
which will allow a simple interactive
query of the Registry web service.
Portals and Portlets
• Portals provide a secure, single point of
interaction with diverse information,
business processes, and people,
personalized to a user's needs and
responsibilities. (IBM working definition)
• Portlets – visibly active component
displaying data within a Portal page
• Jakarta (various)
– JetSpeed: to create enterprise information portal
– Velocity: template engine – allows information
import from Java classes for dynamic content
– Cocoon: provides a framework for generating
pages from XML merged with XSL templates
– Turbine: database connection pooling, user and
session management facilities and security
– Torque: persistence layer
• Sun Engine Portal portlet now Open Source
Portal Planning - questions
• How many users?
• Is there already an existing authentication database for these users, do I
want to use it?
• How many languages?
• How many media types do I want to support?
• How many and which segments/target groups do I have to serve
• What content do I want to publish?
• How can I get access to this content (disk, db, syndication, etc...)?
• Who is going to update the site content and with what editorial process?
• What applications do I need to connect to?
• Are they already using a single authentication db?
• How do I bridge to these apps (servlet, http, SOAP, CORBA, etc...)?
• For each user target group, what application/content do they need to
• Can they personalize their portal view?
• What access rights should they have?
• What will be your portal navigation?
• Do you plan to set up different thematic portal views or a single integrated
Then - decisions
• What kind of software tools and features
• What kind of skills you'll require.
• An estimate of the amount of work required
to setup your portal.
• What budget you'll need to complete your
• Where to start
• JSP 168
– Supported by JetSpeed
– See reference
Timescales and Resources
• Velocity Portlet demo
• Velocity/JSP Portlet connecting to
– Simple request
– 2 way interaction
• Map authentication/authorisation to
• Portlet to existing VO Web service
• Portlet to WSDL to generated
• Portlet to Registry Web Service
Questions for Overall Architecture
• How should authentication/
authorisation map to CAS/GRID
• Load expected
• Number of users expected
• Types of Web Services
• Guinea pigs?
• Coding standards
• ANT set-up
• Open Source Apache project
• Written in Java
• Supports Portal API (JSP 168)
• Provides built-in services for:
– User interface customisation
– User authentication
• Makes connections to obtain data
• Built on top of Turbine (also
• Turbine provides:
– User authentication
– Page layout
• Built-in support for
– RDF Site Summary (RSS)
– Open Content Syndication (OCS)
• Supports Wireless Markup
• User, group, role and permission
administration via secure
• Role-based security access to
•PortletControl: The function of the PortletControl within the Portlet
page handles rendering the title and body of the Portlet
•PortletController: The function of the PortletController is to handle
multiple PortletControls (each controlling a Portlet) to provide an entire
Page of information from all the Portlets.
• Portal Structure Markup Language
– holds info on what portlets are available
and registered with Jetspeed
– Describes all available portlets
– Describes what portlets can be displayed
to a given user and
– Describes how information is displayed
for that user
– Displays HTML content
– JSP contains embedded Java
• Web Page
– Displays content of a Web site
– Displays XML content by transforming it into
HTML using XSLT
Web Services tools
– SoapAccessBean provides a Soap WebServices
Client command bean pattern. This bean can be
used to interact with webservices via soap. The
WSDL file for the target web service is required
since it contains the parameters required to
interact with the service.
– UDDIAccessBean provides a command bean
interface to UDDI registry services. Please note
that currently only inquiry tasks are supported.
• Based on a Copy-Modify-Merge model
where the developer:
– Downloads copy of code
– Modify code
• NB simultaneously any other user can
download, update and then merge into Master
– Merges with repository – but user has to
resolve with any other incompatible
• NOT Lock-Modify-Unlock
– From a Repository
•may be remote
– Security mechanisms e.g.
anyone can read, but
password needed for write
Mechanism - server
• Repository maintains
• Maintains additional
metadata to identify each
• Also able to tag a whole
group of revisions e.g.
“Release Spring 2003”
– Allows one to copy any whole
set at any point in the future
• Check’s out copy
• Additional metadata is
kept in extra “CVS”
• CVS home page (http://www.cvshome.org/) and CVS
• CVS FAQ-o-matic (http://www.loria.fr/~molli/fom-
serve/cache/1.html): recipes for simple and more arcane
– Introduction to CVS
(http://www.cvshome.org/docs/blandy.html) by Jim Blandy
– Open Source Development with CVS by Karl Fogel (good, free
chapters from a book of the same name).
• Best practice
– ACME, (http://www.enteract.com/~bradapp/acme/) source
code management best practices (encyclopaedic, but
– Specifically branching: Streamed Lines: Branching Patterns
for Parallel Software Development
– CVS Best Practices (http://www.magic-cauldron.com/cm/cvs-
bestpractices/index.html) is somewhat more compact than
the ACME guide, and correspondingly more opinionated