800 likes | 1.02k Views
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
E N D
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? • 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 Requests • Preferences • User information • Security • Deployment packaging • Portlet Container • 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
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
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 generatemarkup 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 • 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
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 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)
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
Other Interfaces/Classes • PortletConfig, PortletContext, PortalContext,PortletSession • PortletPreferences interface • WindowState (MINIMIZED, NORMAL & MAXIMIZED) • PortletMode (VIEW, EDIT & HELP) • PortletURL • PortletRequestDispatcher • Portlet Tag Library