Title: Introducing Portlet
1Introducing Portlet
2Content
- 1?Portal and Portal Server
- 2?Jetspeed Structure
- 3?Portlet
- 4?Portlet in Jetspeed
- 5?Conclusion
31?Portal and Portal Server
4What Are Portals ?
- Portals provide a secure, single point of
interaction with diverse information, business
processes, and people, personalized to a user's
needs and responsibilities." There is a good
analogy between what portals add to web
applications and what window managers (like
Microsoft windows) add to operating systems (like
DOS). Both provide a consistent and uniform way
to interact with applications.
5What Are Portlets?
- Portlets, are "visible active components users
see within their portal pages... In the simplest
terms, a portlet is a java servlet that operates
inside a portal."
6An Example
- See next figure for an example portal page with
two visible components on it. Each visible
component is called a portlet. In this example,
one portlet allows the user to go to a URL the
other portlet provides some reminder text to the
user.
7 8Portal Server
- A portal server provides common services such as
application connectivity, integration,
administration, and presentation that would be
required across all portal environments.
Functionally, a portal server serves the portlets
to the user.
9The Portal Servers
- 1?IBMs WebSphere Portal Server
- 2?Apaches Jetspeed
- 3?Metadots Portal Server
- 4?Sun Java System Portal Server
- 5?MSs SharePoint Portal Server
- And so on.
-
10WebSphere Portal Server
- WedSphere portal basic structure provides some
service that can easily interact with others
,flow ,enterprise application ,the content from
the syndicated content provider ,database and
information which is structured or non-structured.
11Jetspeed
- Jetspeed is an open source implementation of an
enterprise information portal, using java and
XML. Jetspeed acts as the central hub where
information from multiple sources are made
available in an easy to use manner.
12Metadot Portal Server
- Metadot is a popular open source portal software
(GPL) recognized for its revolutionary
ease-of-use. It provides content management like
file, page and link management, collaboration
features like discussion forums and polls and
personalization like my yahoo
13Sun Portal Server
- It provides all the user, policy and identity
management to enforce the security, single sign
on and access capabilities to end user
communities
14MS SharePoint
- SharePoint allows information workers to create
powerful personalized interfaces by simply
dragging and dropping pre-defined Web Part
Components. - It is implemented by .net technology
152?Jetspeed architecture
16- Jetspeed, written in java language, Jetspeed
offers a portal API for developing portlets,
small java applications that are building blocks
of a portal. Jetspeed makes connections to
external data and content feeds to retrieve and
display the data via a portal. You can implement
the portal and access it from a web browser or a
wireless device (such as a WAP phone or palm
device). Jetspeed supports built-in services for
user interface customization, caching,
persistence, and user authentication, eliminating
the need implement these services.
17Jetspeed Architecture Model
- This figure in next page illustrates the Jetspeed
architecture model. Jetspeed is built on top of
Turbine, a servlet-based framework. Turbine
handles user authentication and page layout as
well as scheduling. Jetspeed can run on a number
of servlet engines and databases.
18 19High-level Jetspeed Features
- Support for wireless markup language (WML)
- A web application development infrastructure
- Portability across all platforms that support JDK
1.2 and Servlet 2.2 - User, group, role, and permission administration
via security portlets - Role-based security access to portlets
20 21Page Layout
- This next figure illustrates the anatomy of a
page containing portlets. Within a page, portlet
content gets rendered by a PortletControl and a
PortletController.
22(No Transcript)
23- PortletControl the function of the
PortletControl within the Portlet page handles
rendering the title and body of the Portlet.
24- 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.
25How Portlets Display Content
- To display content, portlets use the element
construction set (ECS) API. This comes bundled
with Jetspeed, which generates markup elements
from java objects. You can use a servlet template
or JSP technology to generate content as an
output, which is then captured by an ECS element
that displays the content. ECS supports WML as
well as HTML and XML.
26What Is ECS?
- The Element Construction Set is a java API for
generating elements for various markup languages
it directly supports HTML 4.0 and XML, but can
easily be extended to create tags for any markup
language. It allows you to use java objects to
generate markup code
27A Simple ecs Example
- Html html new Html()
- .addElement(new Head()
- .addElement(new Title("Demo")))
- .addElement(new Body()
- .addElement(new H1("Demo Header")))
- out.println(html.toString())
- output(out)
28Generate the Code Below
- lthtmlgt
- ltheadgtlttitlegtDemolt/titlegtlt/headgt
- ltbodygt
- lth1gtDemoHeaderlt/h1gt
- lt/bodygt
- lt/htmlgt
29- ECS places mark-up information into compiled
code . Therefore, we generally recommend using a
page template mechanism of your choice, rather
than using ECS directly.
30Portlet Caching
- Jetspeed provides developers with an advanced
caching mechanism. Portlets that need to be
cached are placed within the cache with relevant
handle information like the classname and some
portlet configuration information like the URL,
etc. If there is a need to remove the portlet
from the cache, it can be done by providing an
expire() method, which determines when the
portlet needs to expire itself.
31What Are the Standard Portlets?
- HTML portlet
- JSP portlet
- RSS portlet
- Webpage portlet
32Wireless Support From portlets
- Jetspeed supports WAP devices, and the WAP
browser renders WML content., One can uses RSS to
syndicate content from the web site. The other
can works with a local RSS-formatted XML file.
33 343?Portlet
35 36- Depicts a portal's basic architecture. The
portal web application processes the client
request, retrieves the portlets on the user's
current page, and then calls the portlet
container to retrieve each portlet's content. The
portlet container provides the runtime
environment for the portlets and calls the
portlets via the Portlet API. The portlet
container is called from the portal via the
Portlet invoker API The container retrieves
information about the portal using the Portlet
provider SPI (service provider interface).
37Page
- Depicts the basic portal page components. The
portal page itself represents a complete markup
document and aggregates several portlet windows.
In addition to the portlets, the page may also
consist of navigation areas and banners. A
portlet window consists of a title bar with the
portlet's title, decorations, and the content
produced by the portlet..
38Portlet Container
- A portlet container runs portlets and provides
them with the required runtime environment. A
portlet container contains portlets and manages
their life cycles. It also provides persistent
storage mechanisms for the portlet preferences. A
portlet container receives requests from the
portal to execute requests on the portlets hosted
by it. A portlet container is not responsible for
aggregating the content produced by the portlets
the portal itself handles aggregation.
39Portlet life cycle
- Init initialize the portlet and put the portlet
into service - Handle requests process different kinds of
action- and render-requests - Destroy put portlet out of service
40Portlet interface
- init(PortletConfig config)
- processAction(ActionRequest request,
ActionResponse response) - render(RenderRequest request, RenderResponse
response) - destroy()
41Portlet modes
- Required modes
- Optional custom modes
- Portal vendor-specific modes
42Window states
- Normal
- Maximized
- Minimized
43Persistent store
- The portlet can store persistent data for a
specific user by using the PortletPreferences
object. Preferences can be read and written in
the action phase, and read in the render phase.
44Sessions
- JSR (java specification request
- ) 168's session concept is based on the
HttpSession defined for web applications. As
portlet applications are web applications, they
use the same session as servlets.
45Including servlets/JSP pages
- In JSR 168, the include mechanism for servlets
and JSP pages is the same for the Servlet API.
Via the portlet context, a request dispatcher is
retrieved for a given path The include() method
is then called on this request-dispatcher object
46- PortletRequestDispatcher rd getPortletContext().
getRequestDispatcher(editJSP)Â Â
Rd.include(portletRequest, portletResponse) - But in jetspeed ,there are another method to
include the servlets/jsp page.
47Advanced Portlet API Items
- User information
- Portal context
- Localization
- Caching
48Extensibility
- If a portlet application uses additional
portlet modes or window states than the ones
defined by the Portlet specification, the portlet
application can declare them in the deployment
descriptor.
494?Portlet in Jetspeed
50What Is a Portlet?
A portlet is a web component managed by a
container, that generates dynamic content.
Portlets are platform independent Java classes
compiled to an architecture neutral bytecode that
can be loaded dynamically into and run by a web
server. While servlets usually interact directly
with web clients, portlets interact with web
clients indirectly through portals, via a request
response paradigm implemented by the portlet
container (HTTP). Portlets are specialized
servlets that plug into and run in portals.
Portlets are designed to be aggregatable in the
larger context of a portal page. They rely on the
portal infrastructure to function.
51Portal Architecture
52Aggregating Content
Portlets are invoked in the course of handling a
single request, aggregating their respective
produced content in one page by appending each
individual portlets output to the page. Portlets
generate markup fragments that can be aggregated
in the scope of a portal, containing links,
actions and content suitable for aggregation
within a portal.
53(No Transcript)
54Portlet Modes
- View Mode standard user interaction
- Customize (Edit) Mode editing the portlet
data, customizing the portlet content. - Maximize View the portlet in full screen with
no other portlets in view. - Minimize Only show the Title Bar.
- Closed Close the portlet remove it from the
page. - When in View Mode, you can see that the title bar
contains buttons allowing you to switch modes
55View Mode
56- Customize
- Close
- Minimize
- Maximize
57Portlet Customize Mode
Here is an example of an RSS Portlets
customization.
58PSML
- PSML is an acronym for Portal Structure Markup
Language. It was created to allow content
structure and abstraction within Jetspeed. PSML
is XML, and is defined by an XML schema at
http//xml.apache.org/jetspeed/2000/psml - The layout of a portal page is defined in PSML.
With PSML, you can define - Which portlets will appear in your portal page,
and at which position in the portal window. - The look and feel (Skins) of the portal windows
- The layout (controller) strategies (2 column, 3
column, tabbed-panes, menu-panes, single column)
for collection of portlets - The control, a decoration to apply to
collections of portlets (title bars, borders,
buttons in the title bar, tabs, menus)
59The Customizer
The layout (PSML) can be edited with the Jetspeed
Customizer (easier than editing XML). To
customize the current pane, press the pencil icon
in the title bar
Or you can also customize for a specific media
type
- Customizing allows you to
- Add and Remove portlets
- Move a portlet to a different position
- Choose the Skin to apply to this pane
- Choose the Layout to apply to this pane
- Change the name of the pane
- Add/Remove/Move Panes (only for Menu and Tab
panes, which contain other panes).
60(No Transcript)
61Adding a Portlet
62Moving and Removing Portlets
- Remove the portlet
- Move the portlet UP
- Move the portlet DOWN
- Move the portlet RIGHT
- Move the portlet LEFT
63Changing the Skin
64Layouts
- Menu-Pane
- Single Column
- Single Row
- Tabbed-Pane
- 3 Column (25/50/25)
- 3 Column (33/33/33)
- 2 Column (25/75)
- 2 Column (50/50)
- 2 Column (75/25)
65Changing The Layout
From 2 column to 3 column (33/33/33)
66Panes
Panes are collections of portlets specified
directly with either a Menu-pane layout or a
Tab-pane layout. Panes allow you to overlay
collections of portlets on top of the same screen
area. You can then select the visible collection
by selecting a tab or menu option.
67Adding/Removing/Moving Panes
68Registries
- Registries are used to define the portal
components - Portlets
- Controllers (Layouts)
- Controls (Decorators)
- Skins
- Media Types
- Registries can be defined in multiple files with
the extension .xreg and placed in the webapps
WEB-INF/conf directory. This allows for easily
integrating new registries into the portal.
69(No Transcript)
70Portlet Registry Entry Types
71Referencing Registry Entries in PSML
-- Referencing a portlet ltentry
parentStockQuote/gt -- Referencing a
controller ltcontroller name"TabController"/gt -
- Referencing a skin ltskin name"orange-red"/gt
72Complete Portal Page Layout
- Looking deeper into how Jetspeed works, we can
see how the web application framework, Turbine,
is used in the portal container implementation of
Jetspeed. Turbine is a Model-View-Controller
(MVC-2) type servlet framework. It introduces the
concept of modules - Layouts controls the layout of the entire web
page. - Navigations Top, Bottom, Right, Left areas of
the web page - Screens (templates) the center area of the web
page, where the PSML is placed.
73- All of these modules are defined as templates.
Jetspeed supports two templating engines - Apache Velocity
- JSP (Java Server Pages)
74Velocity
- Velocity is a java-based template engine, a
simple and powerful development tool that allows
you to easily create and render documents that
format and present your data. - We make servlet development with velocity very
easy if you use our provided class
VelocityServlet as a base class for your servlet,
and offer a utility class to help with
application development.
75The Velocity Fundamental Pattern
- Initialize velocity. This applies to both usage
patterns for velocity, the singleton as well as
the 'separate runtime instance', and you only do
this once. - Create a context object (more on what that is
later). - Add your data objects to the context.
- Choose a template.
- 'Merge' the template and your data to produce the
output.
76Editing Templates
When configuring a website, you will need to edit
the default layouts, navigations and screen
template modules. For the default site, all of
these templates are defined in Velocity. You can
find all templates under the /WEB-INF/templates
directory in the web application.
77Profile Requests
- When a request is received by the portal, the
Profiler will map the request to template and
PSML resources based on request parameters and
user information. When no user information is
available, the profiler will know to provide
anonymous PSML content. The profile uses a
fallback algorithm to find templates and PSML.
This fallback algorithm first searches for the
most specific resource, and then falls back to
least specific resources. Here are the criteria
listed from most to least specific - Country Code
- Language
- Media Type
- User Type
78Media Types
- Media Types are defined in the Media Type
registry. Currently Jetspeed has 3 entries in the
registry - HTML
- WML
- VXML
79(No Transcript)
80(No Transcript)
81(No Transcript)
82Velocity and JSP
In order to incorporate dynamic content into your
web pages and portlets, it is strongly
recommended to use a templating engine such as
Velocity or JSP. Here we demonstrate Jetspeeds
Tools and how they can be used with the Velocity
Templating Engine. Velocity allows you to access
these tools by specifying a dollar sign to
denote the tool. Similarly, you can put easily
expose your business objects to the designer.
83Common Portlets
84(No Transcript)
85Demo Portlets
86Admin Portlets
87Security Model
- Jetspeed provides secure access to the portal.
The basic security model has - Users users in the portal system.
- Permissions portal permissions to portal
resources (view, customize, minimize, maximize) - Groups Users can be associated to groups
through roles. - Roles Users can have several roles. Roles
control access to portal resources (such as
portlets, PSML).
88Example of a security role in a portlet
registry ltportlet-entry type"ref"
parent"CustomizerVelocity" name"UserForm" gt
ltsecurity role"admin"/gt .
89Databases
Jetspeed stores its security information in a
relational database. The PSML can also be
configured to be stored in a database. The
default system comes installed with a
HypersonicSQL database pre-populated with the
demo system data. Jetspeed can be easily
configured to work with most leading database
systems by changing the settings in the
TurbineResources.properties database.default.driv
erorg.hsql.jdbcDriver database.default.urljdbcH
ypersonicSQLwebappRoot/WEB-INF/db/jetspeed dat
abase.default.usernamesa database.default.passwor
d database.adaptorDBHypersonicSQL database.adapt
or.DBHypersonicSQLorg.hsql.jdbcDriver
90A Little Example
91HelloWorld Portlets
- 1?Implement and compile the portlet
- 2?Create the portlet registry fragment
- 3?Put the compiled portlet in the appropriate
location - 4?Register the portlet with the Jetspeed portlet
registry
92Create a Simple Hello World portlet
- package com.bluesunrise.portal.portlets
- Import org.apache.jetspeed.portal.
- portlets.AbstractPortlet
- importorg.apache.turbine.util.RunData
- import org.apache.ecs.ConcreteElement
- import org.apache.ecs.StringElement
- public class HelloWorldPortlet extends
AbstractPortlet - public ConcreteElement getContent (RunData
runData) - return (new StringElement ("Hello
Worldtest!")) -
93Location
- Once the java code is compiled, the class has to
be placed in the classpath. For this example the
classpath is lttomcat_homegt/ltjetspeed_directorygt/we
b-INF/classes/com/bluesunrise/ - Portal/portlets/.
94Hello World! Portlet registry fragment
- lt?xml version"1.0" encoding"UTF-8"?gt ltregistrygt
- ltportlet-entry name"HelloWorld" hidden"false"
type"instance" application"false"gt - ltmeta-infogt
- lttitlegtHelloWorldlt/titlegt ltdescriptiongtHello
Worldlt/descriptiongt lt/meta-infogt
ltclassnamegtcom.bluesunrise.portal.portlets.HelloWo
rldPortletlt/classnamegt ltmedia-type ref"html"/gt - lt/portlet-entrygt
- lt/registrygt
95(No Transcript)
96(No Transcript)
97- Jetspeed is easy to use, I think I will be
accepted commonly.
985?My Idea
99When Do portlets Make the Most Sense?
- If your goal is to bring together your web
applications and information into one convenient
place, portlets are the obvious choice. If your
development goals are somewhat different,
consider portlet and portal server features that
you might want to take advantage of.
100Thank you !!!