2- Portal and Portlet

materialisticrampantInternet και Εφαρμογές Web

10 Νοε 2013 (πριν από 3 χρόνια και 11 μήνες)

119 εμφανίσεις

Advanced Web Systems

2
-

Portal and Portlet

A. Venturini

Contents


What is a portlet?


Why portlets?


Portal and portlet architecture


Portlet vs. Sevlet


Portlet and Web application frameworks


Portlet modes and Windows states


Portlet features


Portlet APIs


Most of the slides taken from a presentation of:


Sang Shin, sang.shin@sun.com, www.javapassion.com


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

Portlet Specifications


JavaTM Portlet Specification


First version: JSR 168


Second version: JSR 286



http://www.jcp.org/en/jsr/detail?id=286



Standard specificatitons defined by the major
portal vendors (ibm, sun, bea, …) for portlet
technologies

What 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

What are out
-
of
-
scope of JSR 168?


These are out of scope of JSR 168: these are
handled by Portal server


Aggregation


Layout management


Page personalization and configuration
engines


Portal administration and configuration


What happens when clicking on a link?


when clicking on a portlet link, typically the
content of that portlet should change.


The other portlet, should keep their status
(typically not change there view, but sometimes
they do!)

Portal and Portlet Interaction

User

Portal

Portlet

container

Portlets

A B C

render

render

render

processAction

A

B

C

A’

B’

C

Action on B

Do action on B

Render A

Render B

Render C

These requests

may be done in

parallel

Scope of the Portlet specification

Outside of the scope of the Portlet specification

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
URL
-
rewriting 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

JSR 168 Value Proposition:

Portability of Portlet Apps

JSR 168

Compliant

Portals

Write Once

Deploy to Many

Portlet Interface

Portal Architecture

With JSR 168 Support

Portal







User Agent

Browser, Phone, PDA

Portlet

Container

Portlet


Portlet


Portlet


Network

Aggregation

Personalization

Security

Portal/Portlet Architecture
















User

Configuration/

Personalization

Engine

Persistent

Data Store

Portlet

Dispatcher

Window

Config

Security

Portlet



Enterprise

Information

Systems

Remote

Execution

module

Portlet

Aggregation

Engine

Portlet

Portal server

Portal/Portal Server


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


Portal server is the platform

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

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

Common Foundation between
Servlets and Portlets


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


action requests and render requests


Portlets have predefined states


portlet modes and window states


Portlets can exist many times in a portal page

Extra Features of Portlets


P
ortlets 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


Accessing 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


Portlet and Web App. Frameworks


Struts/JSF


Struts/JSF are built over Servlets


Struts/JSF is available for Portlets


APIs exposed to Struts/JSF developers
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

The Spring Framework


Spring is a Lightweight
Application

Framework


Where Struts, WebWork and others can be
considered
Web
frameworks, Spring addresses
all tiers of an application


Spring provides the plumbing so that you don’t
have to!

Spring Framework History


Started 2002/2003 by Rod
Johnson and Juergen Holler


Started as a framework
developed around Rod Johnson’s
book
Expert One
-
on
-
One J2EE
Design and Development



Spring 1.0 Released March 2004


2004/2005 Spring is emerging as
a leading full
-
stack Java/J2EE
application framework

Why Spring Portlet MVC ?



Can be used in any JSR
-
168 compliant
portlet
container


It promotes best practices such as coding to
interfaces and dependency
injection


It supports multiple view technologies:


e.g. JSP, Velocity and FreeMarker.


It mirrors the Spring Web MVC framework. Easy to
convert.


It supports the action phase and render phase of a
portlet request


not hidden from the developer.


Spring provides support for all the application
layers!

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


Portlet renders markup fragment in this mode


EDIT


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

Java Portlet API


javax.portlet.Portlet


javax.portlet.GenericPortlet


javax.portlet.ActionRequest


javax.portlet.ActionResponse


javax.portlet.RenderRequest


javax.portlet.RenderResponse



Portlet Life Cycle

Handle
requests

Destroyed
by container

Initialized
by
container

init()

processAction()

destroy()

Notifies initialization of
portlet by container.

processAction() notifies the
Portlet about user's request
for action.

render()

render() notifies the Portlet
to generate the markup
fragment

destroy() notifies the
destruction of portlet by
container. Should free up
resources in this method.

Portlet Interface

1

public
interface

Portlet

{


2

public void
init
(
PortletConfig

config) throws PortletException;

3


4

// Action Request: Invoked only when the URL is an action targeted

5

// to the portlet, it does not produce output

6

public void
processAction
(
ActionRequest

request,

7

ActionResponse

response)

8

throws PortletException, IOException;


9

// Render Request: Invoked on every request to the portal, it

10

// produces output to create the portal page

11

public void
render
(
RenderRequest

request,

12

RenderResponse

response)

13

throws PortletException, IOException;


14

public void
destroy
();

15

}

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

javax.portlet.GenericPortlet


protected void doView(...)


protected void doEdit(...)


protected void doHelp(...)


protected void processAction(...)


DoView()

doView()

doEdit()

doHelp()

HTML

Portlet

Render()

DoEdit()

Portlet

Edit Form

Render()

doView()

doEdit()

doHelp()

HTML

ProcessAction()

Portlet

container


processAction()


store()

doView()


Other Interfaces/Classes

PortletConfig, PortletContext,
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 portlet
-
container


Default values are defined in the
portlet.xml

deployment descriptor