Portlet Standard JSR 168 / JSR 286

Similar documents
Advanced Software Engineering

Advanced Web Systems 4- PORTLET API specifications (JSR 286) A. Venturini

Portlets (JSR-168) Dave Landers. BEA Systems, Inc. Dave Landers Portlets (JSR-168)

JSR-286: Portlet Specification 2.0

Sang Shin. Java Portlets (JSR-168) Revision History. Disclaimer & Acknowledgments

Standards and the Portals Project

JSR-286: Portlet Specification 2.0

IBM Realtests LOT-911 Exam Questions & Answers

WA2089 WebSphere Portal 8.0 Programming EVALUATION ONLY

"Charting the Course... WebSphere Portal 8 Development using Rational Application Developer 8.5. Course Summary

Liferay Faces. Reference Documentation ga4

Content Server / Spark. Version: 6.3. Delivery Portlet Developer s Guide

WSRP Web Services for Remote Portlets

JSR 168 Portlet Spec

Portlets and Ajax: Building More Dynamic Web Apps

Portals allow users easy access to information

IT Certification Exams Provider! Weofferfreeupdateserviceforoneyear! h ps://

JavaServer Faces Technology, AJAX, and Portlets: It s Easy if You Know How!

Liferay 7 Portlet to Empower Your Custom Development

Introduction to JSR 168 The Java Portlet Specification

Portlet Development Guide Introduction to the Portlet API

Liferay Faces. Reference Documentation ga2

PORTLETOVÁ IMPLEMENTACE HRY SUDOKU SUDOKU GAME IMPLEMENTATION AS PORTLET

Index. NOTE: Boldface numbers indicate illustrations or code listing; t indicates a table. 281

Implementing JSR 168 inter-portlet communication using Rational Application Developer V6.0 and WebSphere Portal V5.1

Advanced Topics in WebSphere Portal Development Graham Harper Application Architect IBM Software Services for Collaboration

Lotus Exam IBM Websphere Portal 6.1 Application Development Version: 5.0 [ Total Questions: 150 ]

Java TM Portlet Specification

What's New in the Servlet and JavaServer Pages Technologies?

The Cocoon Portal. A portal solution and framework. Carsten Ziegeler Competence Center Open Source S&N AG, Germany

WebSphere Portal Application Development Best Practices using Rational Application Developer IBM Corporation

Oracle Developer Day

SOFTWARE DEVELOPMENT SERVICES WEB APPLICATION PORTAL (WAP) TRAINING. Intuit 2007

IBM IBM WebSphere Portal V5, Application Development.

Best Practices for JSF Portlet Migration and Development

JOURNAL OF OBJECT TECHNOLOGY

Java J Course Outline

Oracle Fusion Middleware 11g: Build Applications with ADF Accel

Peter Moskovits Principal Product Manager Oracle Corporation. Sue Vickers Group Manager Oracle Corporation

Portal Express 6 Overview

import com.ibm.portal.portlet.service.impersonation.impersonationservice;

Portlet Development Guide Working with the Portlet API 1.1 Java Server Pages in Portlets Portlet Design Guidelines Security and Single Sign On

IT Certification Exams Provider! Weofferfreeupdateserviceforoneyear! h ps://

> Dmitry Sklyut > Matt Swartley. Copyright 2005 Chariot Solutions

Developing Applications with Java EE 6 on WebLogic Server 12c

Tapestry. Code less, deliver more. Rayland Jeans

COURSE 9 DESIGN PATTERNS

Java Training For Six Weeks

Best practices: Developing portlets using JSR 168 and WebSphere Portal V5.02

Building JavaServer Faces Applications

Seam 3. Pete Muir JBoss, a Division of Red Hat

Annotation-Based Spring Portlet MVC

Building the Enterprise

Building Blocks for a Simple TeraGrid Science Gateway

Introduction to Portlet Programming with JSR-168

Java EE 6 - Update Harpreet Singh GlassFish Portfolio Product Manager

Building Web Applications With The Struts Framework

Oracle Fusion Middleware 11g: Build Applications with ADF I

Java EE 6: Develop Web Applications with JSF

Vendor: Liferay. Exam Code: LRP-614. Exam Name: Liferay Certified Professional Developer. Version: Demo

EJB ENTERPRISE JAVA BEANS INTRODUCTION TO ENTERPRISE JAVA BEANS, JAVA'S SERVER SIDE COMPONENT TECHNOLOGY. EJB Enterprise Java

Entando Technology Drill Down

Liferay Customization Hints

This presentation is for informational purposes only and may not be incorporated into a contract or agreement.

Building and Managing Enterprise Wide Web Portals - Tutorial

Type of Classes Nested Classes Inner Classes Local and Anonymous Inner Classes

Enterprise Java Unit 1- Chapter 4 Prof. Sujata Rizal Servlet API and Lifecycle

Introduction to Web Application Development Using JEE, Frameworks, Web Services and AJAX

Introduction to JSP and Servlets Training 5-days

Tutorial: Developing a Simple Hello World Portlet

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format.

/ / JAVA TRAINING

Oracle - Developing Applications for the Java EE 7 Platform Ed 1 (Training On Demand)

When the Servlet Model Doesn't Serve. Gary Murphy Hilbert Computing, Inc.

Call: JSP Spring Hibernate Webservice Course Content:35-40hours Course Outline

Oracle Developer Day

JAVA. Duration: 2 Months

Oracle Fusion Middleware 11g: Build Applications with ADF I

OSGi on the Server. Martin Lippert (it-agile GmbH)

Web Application Development Using JEE, Enterprise JavaBeans and JPA

J2EE - Version: 25. Developing Enterprise Applications with J2EE Enterprise Technologies

Web Application Development Using JEE, Enterprise JavaBeans and JPA

JVA-563. Developing RESTful Services in Java

Java- EE Web Application Development with Enterprise JavaBeans and Web Services

Liferay Exam LRP-614 Portal Developer Version: 6.0 [ Total Questions: 144 ]

SSC - Web applications and development Introduction and Java Servlet (I)

Java EE Application Assembly & Deployment Packaging Applications, Java EE modules. Model View Controller (MVC)2 Architecture & Packaging EJB Module

Oracle ADF: The technology behind project fusion. Lynn Munsinger Principal Product Manager Application Development Tools Oracle Corporation

Call: Core&Advanced Java Springframeworks Course Content:35-40hours Course Outline

JavaEE Interview Prep

A Gentle Introduction to Java Server Pages

Administration Console Extension Developer's Guide

Stand: File: gengler_java_e. Java Community Process: Not perfect, but operating very successfully

(9A05803) WEB SERVICES (ELECTIVE - III)

Oracle Developer Day

Beyond the Portlet API

Oracle Application Development Framework Overview

Migrating traditional Java EE applications to mobile

Introduction. Enterprise Java Instructor: Please introduce yourself Name Experience in Java Enterprise Edition Goals you hope to achieve

Specialized - Mastering JEE 7 Web Application Development

Transcription:

Portlet Standard JSR 168 / JSR 286 Version 1.0 Martin Weiss Martin Weiss Informatik AG

Agenda JSR 168 2 JSR 168 What Is Missing? 22 JSR 286 25 Portlet Events 28 Public Render Parameters 32 Events vs. Public Render Parameters: Decision Criteria 34 Summary 37 Backup 39 Martin Weiss Informatik AG 1

JSR 168 Martin Weiss Informatik AG 2

Introduction Different portal server vendors have defined different portlet APIs Incompatible portlet API interfaces create problems Application and content providers must implement different portlets for different portal servers Portal customers are quickly locked into a particular portal solution We need a portlet specification standardization to provide interoperability between portlets and portals to overcome these problems Martin Weiss Informatik AG 3

JSR 168 and the Java Community Process Java Standardization Request 168 (JSR 168) was specified in the Java Community Process (JCP) -> http://jcp.org Expert Group co-led by IBM and Sun JSR 168 v1.0 was approved in October 2003 Reference implementation of JSR 168 v1.0 provided by IBM, available at Apache -> http://jakarta.apache.org/pluto Compliance test suite available from Sun Wide market adoption: supported by many commercial and open source portals BEA, IBM, Oracle, Sun, Tibco, Vignette, Apache, exo, JBoss, Liferay, uportal, JSR 168 defines a portlet specification with the following goals: Simple programming model Portability Alignment with Servlet Specification v2.3 Martin Weiss Informatik AG 4

Basic Concepts Portal, Portlet Container, Portlets Martin Weiss Informatik AG 5

Basic Concepts Characteristics of Portal Web application which aggregates different applications into one page with a common look and feel for the portal user Provides single sign-on and sophisticated personalization features which enables customized content to users Client request is processed by the Portal Web application, which retrieves the portlets on the current page for the current user. The Portal Web Application, i.e. the front-end servlet, then calls the Portlet Container for each portlet to retrieve its content through the Container Invoker API Martin Weiss Informatik AG 6

Basic Concepts Characteristics of JSR 168 Portlet Container Extension of the Servlet Container Runs the portlets, provides them with the required runtime environment, and manages the portlet lifecycle Provides persistent storage for portlet preferences (user specific portlet customization) The Portlet Container calls the portlets through the Portlet API The Container Provider Service Provider Interface (SPI) enables the Portlet Container to retrieve information from the Portal Martin Weiss Informatik AG 7

Basic Concepts Portal page Represents a complete markup document and aggregates several portlet windows (via Portal Web Application) Navigation mechanism to enable the user to navigate to other portal pages Martin Weiss Informatik AG 8

Basic Concepts Characteristics of JSR 168 Portlet API Technical point of view distinct, functional components of a portal Implemented in Java, based on a well-defined portlet API Managed by portal through a portal container Many similarities with the Servlet API (e.g. deployment, class loading, lifecycle) User perspective Functional entities represented on a portal page (Portlet window) Martin Weiss Informatik AG 9

Basic Concepts Portlet window Representation of a portlet on a Portal page A portlet window consists of: Title bar, with the title of the portlet Decoration, including buttons to change the window state of the portlet (such as maximize or minimize the portlet) and buttons the change the mode of a portlet (such as show help or edit the predefined portlet settings) Content produced by the portlet (also called a markup fragment) Martin Weiss Informatik AG 10

Scope of JSR 168 What does JSR 168 define? Portlet API and Portlet Container Contract between the API and the container Deployment unit: portlet application What is out of scope of JSR 168? Aggregation, layout management Page personalization and configuration engines Portal administration and configuration Martin Weiss Informatik AG 11

Portlet Modes JSR 168 defines three categories of portlet modes Modes which are required View: Display the portlet output (default mode) Edit: Displays one or more views that let the user personalize portlet preferences Help: Display help views Optional custom modes About: Display the portlet purpose, origin, version, and other information Config: Display one or more configuration views that let administrators configure portlet preferences which are valid for all users Edit_defaults: Set the default values for the modifiable preferences that are typically changed in the Edit screen Preview: Render output without the need to have back-end connections or user specific data available Print: Display a view which is suitable for printing Martin Weiss Informatik AG 12

Window States A window state is an indicator of the amount of portal page space assigned to the content generated by the portlet. The portlet container provides the current window state to the portlet, and the portlet uses the window state to decide how much information it should render. However, portlets can also programmatically change their window state while processing an action event JSR 168 defines the following window states: Normal: The portlet shares the space with other portlets and should take this into account when producing its output Maximized: No other portlets are displayed, providing maximum space for the portlet s use Minimized: Only the portlet s title bar is displayed In addition the these window states, JSR 168 allows the portal to define custom window states Martin Weiss Informatik AG 13

Portlet MVC architecture Martin Weiss Informatik AG 14

Two Phase Processing in JSR 168 Martin Weiss Informatik AG 15

Portlet Class The abstract javax.portlet.genericportlet class provides the default implementation for the javax.portlet.portlet and javax.portlet.portletconfig interface User defined portlets should derive from GenericPortlet and typically override the following method: processaction, to handle action request doview, to handle render requests when in VIEW mode doedit, to handle render request when in EDIT mode dohelp, to handle render request when in HELP mode init and destroy, to manage resources that are held for the life of the portlet Normally, there is no need to override the render method Martin Weiss Informatik AG 16

Two Types of Portlet Requests / Response processaction (ActionRequest, ActionResponse) Render parameters are reset Portlet can set new render parameters via ActionResponse which are then available in the render request render (RenderRequest, RenderResponse) Invoked on every request to the portal to create portlet markup fragments Portal keeps resending last set of render parameters Use render parameters or session to transfer data between the action and render phase Martin Weiss Informatik AG 17

Portlet data model JSR 168 defines different mechanisms for the portlet to access transient and persistent data Persistent state Initialization parameters, defined in the portlet deployment descriptor (portlet.xml) Portlet preferences o User-independent (Administrator) preferences; read-only preferences o User-dependent preferences Transient state Navigational state defines how the current view of the portlet is rendered and is specific to the portlet window. Navigational state consist of portlet mode, window state and render parameters Session: The portlet can store data in the session with either global scope ( application scope ), to let other components of this Web application access the data, or portlet scope, which is private to the portlet Martin Weiss Informatik AG 18

Portlet Packaging and Descriptors Portlets are packaged as portlet applications in WAR files Portlet deployment description (portlet.xml) describes the portlet application and its portlets Top element is <portlet-app>; contains <portlet> definitions Web deployment description (web.xml) describes the web application Martin Weiss Informatik AG 19

Portlet Deployment Descriptor Schema Martin Weiss Informatik AG 20

Portlet Deployment Descriptor Schema Martin Weiss Informatik AG 21

JSR 168 What Is Missing? Martin Weiss Informatik AG 22

Inter-portlet communication Only supported within the same portlet application using session attributes Target portlets will only see messages during next render request Portlets should not update their state during a render request: event handling not really possible Martin Weiss Informatik AG 23

Serving non-html resources A portlet can only render html fragments Have to fallback/delegate to the servlet container Requires coordination between portlet and servlet Martin Weiss Informatik AG 24

JSR 286 Martin Weiss Informatik AG 25

New JSR 286 features Portlet coordination Portlet events Public render parameters Resource serving Portlet acts as a proxy to a resources, e.g. PDF documents Portlet has full control over the output stream (no portal aggregation) Introduction of a new URL type, resource URLs. Resource URLs trigger the serveresource lifecycle method on the ResourceServingPortlet interface Allows better AJAX support Java 5, aligned with J2EE 1.4 Java 5 annotation support in javax.portlet.genericportlet Final version submitted in February 2008 Martin Weiss Informatik AG 26

Backward compatibility JSR 286 was designed to avoid breaking binary code compatibility with JSR 168 and to maintain compatible behavior for all API methods Backward compatibility also includes the deployment descriptor in which JSR 286 added new entries, but did not change existing ones (Migrate JSR 168 portlets by changing the one line in the portlet deployment descriptor that references the schema to the new V2.0 portlet deployment descriptor schema) Martin Weiss Informatik AG 27

Portlet Events Martin Weiss Informatik AG 28

JSR 286 eventing Loosely coupled publish/subscribe model Does not require that the different portlet developers know about each other s work Events are send and received during action phase At development time, define the date that a portlet understand in the portlet.xml and implement the event specific methods in the portlet class At deployment time, create the action connections between the portlets (not part of the specs) Martin Weiss Informatik AG 29

Event declaration Portlet events are declared in portlet.xml <event-definition> using Qnames or default namespace A portlet specifies which events it wants to send (<supported-publishing-event>) or receive (<supported-processing-event>) as part of the portlet definition Permits portlets to send and receive complex Java objects (payload types) XML serialization mechanism based on JAXB 2.0 Martin Weiss Informatik AG 30

Event flow Martin Weiss Informatik AG 31

Public Render Parameters Martin Weiss Informatik AG 32

Public render parameter positioning Besides portlets events, public render parameter represents an alternative way for coordination between portlet => more lightweight communication alternative compared to portlet events From a programmer s point of view, a public render parameter is handled almost identically to an ordinary (private) render parameter: The portlet can set and read this parameter using the same API methods that JSR 168 introduced for private render parameters. The important difference is that a public render parameter is declared in the portlet.xml deployment descriptor and therefore becomes an external interface of the portlet. Martin Weiss Informatik AG 33

Events vs. Public Render Param: Decison Criteria Martin Weiss Informatik AG 34

Portlet events features They require explicit portlet code to send and receive They can contain complex information They allow fine-grained control by setting up different sorts of wires between portlets (on-page or cross-page) They can trigger cascaded updates with different information. For example, portlet A can send event X to portlet B, which in turn sends a different event Y to portlet C They cause increasing processing overhead as the number of communication links grows They must be initiated by some explicit user interaction (normally, by clicking an action link in a portlet), and they cannot be used to set up a coordinated view when first jumping to a page Martin Weiss Informatik AG 35

Public render parameter features They do not usually require explicit coding but only a declaration in the portlet.xml deployment descriptor They are limited to simple string values They do not require explicit administration ( Wiring ) to set up coordination Martin Weiss Informatik AG 36

Summary Martin Weiss Informatik AG 37

Summary JSR 168 provides the overall UI component model JSR 286 focuses on building integrated composite applications out of these components Portlet technology similar to Servlet API (plus extensions) Wide market adoptions (commercial and open source portals) Martin Weiss Informatik AG 38

Backup Martin Weiss Informatik AG 39

JSR 168 Martin Weiss Informatik AG 40

Core interfaces javax.portlet.portletcontext The PortletContext interface defines a portlet view of the portlet container. Attributes stored in the context are global for all users and all components in the portlet application The context provides access to the portlet request dispatcher Interface methods o void setattribute (String, String) o void removeattribute (String) o String getattribute (String) o java.util.enumeration getattributenames () o javax.portlet.portletrequestdispatcher getrequestdispatcher () Martin Weiss Informatik AG 41

Core interfaces javax.portlet.portletrequestdispatcher The PortletRequestDispatcher interface defines an object that receives requests from the client and sends them to the specified resources (such as a servlet, HTML file, ore JSP file) on the server The portlet container creates the PortletRequestDispatcher object, which is used as a wrapper around a server resource located at a particular path or given by a particular name Interface method o void include (RenderRequest, RenderResponse) Martin Weiss Informatik AG 42

Core interfaces javax.portlet.portletrequest The PortletRequest defines the base interface to provide client request information to a portlet. The portlet container uses two specialized versions of this interface when invoking a portlet, ActionRequest and RenderRequest Interface methods: o String getparameter (String) o java.util.enumeration getparameternames () o javax.portlet.portletsession getportletsession () o javax.portlet.portletpreferences getpreferences () o javax.portlet.portletmode getportletmode () o javax.portlet.windowstate getwindowstate () o void setattribute (String, Object) o Void removeattribute (String) o String getattribute (String) Martin Weiss Informatik AG 43

Core interfaces javax.portlet.actionresponse The ActionResponse interface represents the portlet response to an action request. It extends the PortletResponse interface The portlet container creates an ActionResponse object and passes it as argument to the portlet s processaction method Interface methods: o void sendredirect (String) o void setportletmode (javax.portlet.portletmode) o void setrenderparameter (String, String) o void setwindowstate(javax.portlet.windowstate) Martin Weiss Informatik AG 44

Core interfaces javax.portlet.portletsession The PortletSession interface provides a way to identify a user across more than one request and to store transient information about the user A PortletSession is created per user client per session scope The PortletSession interface defines two scopes for storing objects (APPLICATION_SCOPE, PORTLET_SCOPE) Interface methods: o void setattribute (String, Object) o void setattribute (String, Object, int) o void removeattribute (String) o void removeattribute (String, int) o Object getattribute (String) o Object getattribute (String, int) o void invalidate () Martin Weiss Informatik AG 45

Core interfaces javax.portlet.portletpreferences The PortletPreferences interface allows the portlet to store user specific data There are two different types of preferences: o Modifiable preferences theses preferences can be changed by the portlet in any standard mode (EDIT, HELP, VIEW). Per default every preference is modifiable o Read-only preferences these preferences cannot be changed by the portlet in any standard portlet mode, but may be changed by administrative modes. Preferences are readonly, if they are defined in the deployment descriptor with read-only set to true Interface methods: o String getvalue (String, String) o java.util.enumeration getnames () o void reset (String) o void setvalue (String, String) o void store () Martin Weiss Informatik AG 46

JSR 286 Martin Weiss Informatik AG 47

Annotations in javax.portlet.genericportlet ProcessAction This annotation allows to annotate a method that should process a specific action ProcessEvent Allows to annotate methods that should process specific events RenderMode Allows to annotate methods that should render a specific portlet mode Martin Weiss Informatik AG 48

Portlet Events Martin Weiss Informatik AG 49

Sample: portlet.xml Martin Weiss Informatik AG 50

Event programming model New core interfaces javax.portlet.event javax.portlet.eventportlet javax.portlet.eventrequest javax.portlet.eventrespones javax.portlet.stateawareresponse Martin Weiss Informatik AG 51

New core interfaces javax.portlet.event Interface methods o String getname () Get the local part of the event name o javax.xml.namespace.qname getqname () Get the event QName o java.io.serializable getvalue () Get the event payload Martin Weiss Informatik AG 52

New core interfaces javax.portlet.eventportlet Implementing class: javax.portlet.genericportlet Interface methods o void processevent (javax.portlet.eventrequest, javax.portlet.eventresponse) Method invoked during action phase Martin Weiss Informatik AG 53

New core interfaces javax.portlet.eventrequest Superinterface: javax.portlet.portletrequest The portlet container creates an EventRequest object and passes it as argument to the portlet s processevent method Interface methods o javax.portlet.event getevent () Martin Weiss Informatik AG 54

Sample: portlet classes Martin Weiss Informatik AG 55

Public Render Parameters Martin Weiss Informatik AG 56

Sample: portlet.xml Martin Weiss Informatik AG 57

Sample: portlet classes Martin Weiss Informatik AG 58

Contact Martin Weiss Informatik AG Untere Roostmatt 8 6300 Zug Author Martin Weiss martin.weiss@mw-informatik.ch Martin Weiss Informatik AG 59