Title: Java Portlets (JSR-168)
1Java Portlets(JSR-168)
2Agenda
- Java Portlet (JSR 168)
- WSRP
- Products (only a few slides)
- Sun Java Enterprise Systeem Portal Server,
Portlet Builder
3 4What 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 lthtmlgt 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
5What does JSR-168 define?
- Portlet API
- Portlet Requests
- Preferences
- User information
- Security
- Deployment packaging
- Portlet Container
- Extension of servlet container
- Contract between component and container
6What are out-scope of JSR 168?
- Aggregation
- Layout management
- Page personalization and configuration engines
- Portal administration and configuration
7Default Desktop
8Portal/Portlet Architecture
9Portal and Portlet Interaction
10- Why Portlet?
- (Why can't we use Servlet?)
11Why 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
12Why 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
13(No Transcript)
14 15Portal ArchitectureWith JSR 168 Support
16Portal
- 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
17Portlet 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
18- Portlet vs. Servlet
- (Portlet is built over
- Servlet Architecture)
19Similarity 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
20- Deployment model
- Classloading
- Packaging and deployment
- Lifecycle management
- Session management
- Request dispatching
21Differences 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
- action requests and render requests
- Portlets have predefined states
- portlet modes and window states
- Portlets can exist many times in a portal page
22Extra 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
23Servlet 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
24Servlet 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
25Integration 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
26- Portlet and
- Web App. Frameworks
27- 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
28Exo Portal Build on JSF, Struts
29- Portlet Modes
- Windows State
30Portlet 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
- Portlet renders markup fragment in this mode
- EDIT
- Used to change per-user settings to customize
rendering - HELP
- Used to display help information
31Portlet Modes (Contd.)
- Portals might support other custom modes
- ABOUT
- CONFIG
- EDIT_DEFAULTS
- PREVIEW
- PRINT
- Portals might support other vendor specific modes
32Windows 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
33 34Portlet 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
35User 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
36Portal context
- Can provide information on
- Portal vendor
- Version
- Used by portlets to find out more information
about additional extensions supported by Portal
37Security
- Authentication is left to the underlying servlet
container - Authorization
- Follows J2EE roles model
- Supports programmatic role checking
38Session Management
- Facade on top of the HttpSession
- Two scopes APPLICATION PORTLET
- PORTLET is a convenience namespacing
- Its 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
39Portlet Request Dispatcher
- Portlets can include Servlets, JSPs and static
content during a render request - Similar to Servlets RequestDispatcher
40Localization
- Portlets can be localized by using resource
bundles - Resource bundles are specified in deployment
descriptor - Portlet can access resource bundle via
PortletContext.getResourceBundle() API
41Caching
- Expiration based caching
- Declarative caching
- Specify ltexpiration-cachegt element in deployment
descriptor for the portlet - Programmatic caching
- Modify EXPIRATION_CACHE property of render
response
42Portlet 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)
43 44(No Transcript)
45Portlet Life Cycle
46GenericPortlet 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
47DoView()
48DoEdit()
49ProcessAction()
50Other Interfaces/Classes
- PortletConfig, PortletContext,
- PortalContext,PortletSession
- PortletPreferences interface
- WindowState (MINIMIZED,
- NORMAL MAXIMIZED)
- PortletMode (VIEW, EDIT HELP)
- PortletURL
- PortletRequestDispatcher
- Portlet Tag Library
51PortletPreferences
- 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
52Portlet Example portlet class
53 54Portlet 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\
55Portlet Example portlet.xml
56- WeatherPortlet
- Sample Code
57WeatherPortlet
58WeatherPortlet (1 of 7)
59WeatherPortlet (2 of 7)
60WeatherPortlet (3 of 7)
61WeatherPortlet (4 of 7)
62WeatherPortlet (5 of 7)
63WeatherPortlet (6 of 7)
64portlet.xml
65- WSRP
- (Web Services for
- Remote Portlet)
66WSRP 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)
67Portal ArchitectureWith WSRP Support
68JSR168 and WSRP
- They were designed in collaboration mode
- Their functionality is fully aligned
- PortletPortlet.processAction()
- WSRP WSRP.performBlockingInteraction()
- Portlet Portlet.render()
- WSRP WSRP.getMarkup()
69- Sun Java SystemPortal Server
70Integrated CommunicationsDesktop and Wireless
Access
71Personalization
- 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
72Sun Java System Portal Server andPortal standards
- Sun Java System Portal Server supports JSR 168
- WSRP will be supported in the first Sun Java
System update
73Sun Java SystemPortal Server Architecture
- How do JSR168 and WSRP fit in ?
74Sun ONE Portal Server withJSR 168 and
integration to EIS
75- Sun Java Studio
- Portlet Builder
76Portlet 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
77(No Transcript)
78(No Transcript)
79 80Resources
- JSR 168
- http//www.jcp.org/jsr/detail/168.jsp
- SunTM ONE Portal Server
- http//wwws.sun.com/software/products/portal_srvr/
home_portal.html - Sun ONE Portlet Builder
- http//wwws.sun.com/software/download/products/3f1
87b02.html - WSRP _at_ OASIS
- http//www.oasis-open.org/committees/wsrp/
- WSRP _at_ XML Cover Pages
- http//xml.coverpages.org/wsrp.html