Transcript Portlet
Java Portlets
(JSR-168)
SSE USTC
Qing Ding
Agenda
Java Portlet (JSR 168)
WSRP
Products (only a few slides)
–
Sun Java Enterprise Systeem Portal Server,
Portlet Builder
What is a Portlet?
What is a Portlet?
Java technology based web component
Managed by a portal container
Generates a piece of markup called
“fragment”
–
–
–
Adheres to certain rules such as no <html> tags,
for instance
Fragment generated by a Portlet aggregates with
that from other Portlets to form a portal page
Fragment generated by a Portlet may vary from
one user to another depending on the user
configuration
What does JSR-168 define?
Portlet API
–
–
–
–
–
Portlet Container
–
Portlet Requests
Preferences
User information
Security
Deployment packaging
Extension of servlet container
Contract between component and container
What are out-scope of JSR 168?
Aggregation
Layout management
Page personalization and configuration
engines
Portal administration and configuration
Default Desktop
Portal/Portlet Architecture
Portal and Portlet Interaction
Why Portlet?
(Why can't we use Servlet?)
Why Portlets?
Servlet architecture does not define the
Desktop metaphor where markup
aggregation can occur
Servlet architecture does not define the
possible states and transitions of an included
Servlet or JSP
Servlet architecture does not define how the
state of one Servlet or JSP affects the
display of the other included Servlets or JSPs
Why Portlets?
Servlet architecture does not define a
personalization interface nor the idea of
persisting the personalization information
Servlet architecture does not define
URLrewriting functions to allow the creation
of links and actions targeted to a specific
form within the fragment of a page (Portlet
markup fragment)
Servlet architecture does not support caching
scheme of fragments
Portlet Architecture
Portal Architecture
With JSR 168 Support
Portal
A “specialized” web application that provides
value-added services such as
–
–
–
–
–
Personalization
Single Sign-On
Content aggregation from various sources
Secure search facilities
Localization of content
A Portal “page” represents a complete
markup document consisting of several
Portlet components
Portlet Container
Portlets are deployed in a Portlet container
such that container can
–
–
–
–
–
Provides runtime environment for Portlets
Manage life cycle of Portlets
Provide persistent storage for storing Portlet
preferences
Cache the portlets
Receive requests from the portal to execute
requests on the portlet
Not responsible for contents aggregation
Portlet vs. Servlet
(Portlet is built over
Servlet Architecture)
Similarity with Servlet
Both are Java technology based web
components
Life-cycle is managed by a specialized
container
–
–
Servlet by servlet container
Portlet by portlet container
Both generate dynamic content
Both interact with web client via a
request/response paradigm
Deployment model
Classloading
Packaging and deployment
Lifecycle management
Session management
Request dispatching
Differences from Servlet
Portlets only generate markup fragments, not
complete documents
Portlets are not directly bound to a URL
Web clients interact with portlets through a portal
system
Portlets have a more refined request handling
–
Portlets have predefined states
–
action requests and render requests
portlet modes and window states
Portlets can exist many times in a portal page
Extra Features of Portlets
Portlets have means for accessing and storing
persistent configuration and customization data
Portlets have access to user profile information
Portlets have URL rewriting functions for creating
hyperlinks within their content
–
allow portal server agnostic creation of links and actions in
page fragments
Portlets can store transient data in the portlet
session in two different scopes
–
–
application-wide scope
the portlet private scope
Servlet Features Forbidden to Portlets
Setting the character set encoding of the
response
Setting HTTP headers on the response
The URL of the client request to the portal
Servlet Features that are leveraged by
Portlets
Portlets can leverage servlets, JSPs and JSP
tag-libraries for generating content
–
Content should be markup fragment
A portlet can call servlets and JSPs using a
request dispatcher
Integration between the two
Attributes set in the portlet request are
available in the included servlet request
Attributes set in the portlet session are
accessible from the servlet session and vice
versa
Portlet and the included servlet or JSP share
the same output stream
Portlet and
Web App. Frameworks
Struts/JSF are built over Servlets
Struts/JSF can be built over Portlets
–
–
APIs exposed to Struts/JSF developers
should remain the same
Struts/JSF developers must be aware of
the markup fragment he has to produce
The
markup fragment must follow the rules
Generate Portlet URL
Exo Portal Build on JSF, Struts
Portlet Modes &
Windows State
Portlet Modes
Indicates function that a portlet performs
–
Execute different tasks and generate different
content based on the function they perform
Portals must support three modes
–
VIEW
–
EDIT
–
Portlet renders markup fragment in this mode
Used to change per-user settings to customize
rendering
HELP
Used to display help information
Portlet Modes (Contd.)
Portals might support other custom modes
–
–
–
–
–
ABOUT
CONFIG
EDIT_DEFAULTS
PREVIEW
PRINT
Portals might support other vendor specific
modes
Windows State
Is an indicator of the amount of portal page
space that will be assigned to the content
generated by a portlet
Provided by portlet container
Three states
–
–
–
NORMAL
MAXIMIZED
MINIMIZED
Custom states are possible
Portlet Features
Portlet Persistence
Portlets can store persistent data for a given
user in a PortletPreferences object
Preferences are read-write in the action
phase (processAction()) and read-only in
render phase
Usually user preferences are modified in
EDIT mode
User Profile Attributes
Can store information about user that can be
used to personalize content for that user
User profile information is represented as a
USER_INFO structure which is then mapped
to the real information in datastore
Portlet defines the attributes it wants to
access in the deployment descriptor
Portal context
Can provide information on
–
–
Portal vendor
Version
Used by portlets to find out more information
about additional extensions supported by
Portal
Security
Authentication is left to the underlying servlet
container
Authorization
–
–
Follows J2EE ‘roles’ model
Supports programmatic role checking
Session Management
Facade on top of the HttpSession
Two scopes: APPLICATION & PORTLET
–
–
PORTLET is a convenience namespacing
It’s common for portlets to appear more than once
in a page (i.e.: EU-News, US-News)
Servlets, JSPs and Portlets within a Portlet
Application share the same session
Session creation event notification is
supported
Portlet Request Dispatcher
Portlets can include Servlets, JSPs and static
content during a render request
Similar to Servlet’s RequestDispatcher
Localization
Portlets can be localized by using resource
bundles
Resource bundles are specified in
deployment descriptor
Portlet can access resource bundle via
PortletContext.getResourceBundle() API
Caching
Expiration based caching
Declarative caching
–
Specify <expiration-cache> element in
deployment descriptor for the portlet
Programmatic caching
–
Modify EXPIRATION_CACHE property of
render response
Portlet URL
Portlets are always accessed through a
Portal
Portlets do not have a direct URL mapping
Portlet URLs allow Portlets to create URLs
that target to themselves (through the Portal
end-point)
Portlet API's
Portlet Life Cycle
GenericPortlet class
Implements Portlet interface
Render()--like service() in servlets, calls
specified render methods based on Portlet
mode
–
–
–
doView() for View mode
doEdit() for Edit mode
doHelp() for Help mode
Is extended by portlet developers
–
Override render methods as necessary
DoView()
DoEdit()
ProcessAction()
Other Interfaces/Classes
PortletConfig, PortletContext,
PortalContext,PortletSession
PortletPreferences interface
WindowState (MINIMIZED,
NORMAL & MAXIMIZED)
PortletMode (VIEW, EDIT & HELP)
PortletURL
PortletRequestDispatcher
Portlet Tag Library
PortletPreferences
Persistent read/write Portlet configuration
–
–
getValues(), setValues() to access
PortletPreferences
May modify attributes and store() in persistence
during processAction()
Normally, portlet preferences are per
portlet/per user
Persistency is managed by the
portletcontainer
Default values are defined in the portlet.xml
deployment descriptor
Portlet Example – portlet class
Packaging &
Deployment
Portlet Web Application
All resources, portlets, deployment descriptors are
packaged in one web application archive (WAR file)
PortletApp\
–
–
–
jsp
htmls
WEB-INF\
web.xml
portlet.xml
sun-portlet.xml
classes\
Lib\
Portlet Example – portlet.xml
WeatherPortlet
Sample Code
WeatherPortlet
WeatherPortlet (1 of 7)
WeatherPortlet (2 of 7)
WeatherPortlet (3 of 7)
WeatherPortlet (4 of 7)
WeatherPortlet (5 of 7)
WeatherPortlet (6 of 7)
portlet.xml
WSRP
(Web Services for
Remote Portlet)
WSRP Value Proposition
Provides protocols and metadata for
–
–
Presentation-oriented Web services
Meant for aggregation and syndication with no
programming on the consumer side
Roles
–
–
WSRP Producers (Web service provider)
WSRP Consumers (Web service consumer)
Portal Architecture
With WSRP Support
JSR168 and WSRP
They were designed in collaboration mode
Their functionality is fully aligned
Portlet:Portlet.processAction()
WSRP: WSRP.performBlockingInteraction()
Portlet: Portlet.render()
WSRP: WSRP.getMarkup()
Sun Java System
Portal Server
Integrated Communications
Desktop and Wireless Access
Personalization
Modify any aspect of the desktop (as allowed
by the Administrator)
Add or delete portlets
–
–
–
–
–
Customize the desktop layout
Use or create personalized themes
Modify or create multiple tabs
Update user profile information
Modify portlets settings and properties
Sun Java System Portal Server and
Portal standards
Sun Java System Portal Server supports
JSR 168
WSRP will be supported in the first Sun Java
System update
Sun Java System
Portal Server Architecture
How do JSR168 and WSRP fit in ?
Sun ONE Portal Server with
JSR 168 and integration to EIS
Sun Java Studio
Portlet Builder
Portlet Builder
Portlet development plug-in for Sun JavaTM
Studio
Easy development
–
–
It has wizards
It creates and updates the portlet.xml
Supports portlets execution, debugging and
deployment within the Studio IDE
Runs in Sun JavaTM Studio 4.x and 5.x
Resources
Resources
JSR 168
–
SunTM ONE Portal Server
–
http://wwws.sun.com/software/download/products/3f187b02
.html
WSRP @ OASIS
–
http://wwws.sun.com/software/products/portal_srvr/home_p
ortal.html
Sun ONE Portlet Builder
–
http://www.jcp.org/jsr/detail/168.jsp
http://www.oasis-open.org/committees/wsrp/
WSRP @ XML Cover Pages
–
http://xml.coverpages.org/wsrp.html