Is JSR 168 Not Supported by WebCenter Patch Set 3?

This question may came up when you try to build a JSR 168 portlet or attempt to open one in JDeveloper 11g R1 PS3. In the latter case what happens is that your portlet gets automatically upgraded to a JSR 286 portlet. Given that JSR 286 supersedes JSR 168, most of the time this doesn’t cause problems. However, if for some reason you HAVE to create or edit a JSR 168 portlet without upgrading it, you’ll need to use a Patch Set 2 or earlier JDeveloper for it (or any other tool supporting JSR 168 portlets).

Despite the fact that JDeveloper automatically upgrades your portlets, deploying JSR 168 portlets to the Fusion Middleware 11g Patch Set 3 is fully supported.

This topic is covered by the Oracle Fusion Middleware Upgrade Guide for Oracle SOA Suite, WebCenter, and ADF:

15.4.2.1 About Upgrading JSR168 Portlet Producers to JSR286

Oracle WebCenter 10g supports Java portlets based on the Java Portlet Specification, JSR 168; Oracle WebCenter 11g supports Java portlets based on Java Portlet Specification version 2, or JSR 286. JSR 286 is an extension of JSR 168, and is backward compatible with JSR 168.

In Oracle WebCenter 10g, Oracle JSF Portlet Bridge is based on and conforms to JSR 301, whereas in Oracle WebCenter 11g, Oracle JSF Portlet Bridge conforms to JSR 329.

In JDeveloper 11g, when you open for the first time an existing portlet producer application containing JSR 168 portlets, portlets are automatically upgraded to be JSR 286 compliant. If the application is a portlet bridge application, it is further automatically upgraded to be JSR 329-compliant.

In most cases, the upgraded portlets continue to work exactly as they did before. However, there are a few cases in which JSR 168 portlets function differently when upgraded to JSR 286; these portlets must invoke a JSR 168 compatibility mode to run under JSR 286.

In Oracle WebCenter 10g, a portlet producer application contains the portlet.xml and oracle-portlet.xml files. When you upgrade a portlet producer application, the oracle.portlet.xml file is deleted, and all its details are moved to portlet.xml. The navigation parameters stored in oracle.portlet.xml are converted into public render parameters and are added to portlet.xml. For information about how JSR 168 parameters are handled in an upgraded JSR 286-compliant portlet producer application, see Section 16.4, “Migration of JSR 168 Portlet Producers to JSR 286: Handling of Portlet Elements.”

Patch Set 3 New Features for Portlet Developers

If you’re a portlet developer, WebCenter 11g R1 Patch Set 3 has a handful of new features for you as well.

Most importantly, WebCenter now supports the development of JSR 286 portlets, thus eliminating the need for the Oracle-specific portlet descriptor, oracle-portlet.xml. You can build, test, and deploy JSR 286 portlets. First, you have to walk through the portlet creation wizard by creating an application based on the Portlet Producer Application template.

Then, you need to create a new portlet in your “Portlets” project.

On the JDeveloper design time experience side, the biggest change is the Design view for the portlet.xml portlet descriptor. After you have created the skeleton of your portlet code, you can easily go back and edit the generated code in a very easy to use, declarative manner.

As you can probably see in these screen shots, the editing experience of previously generated portlet meta data became very straight-forward.

Defining portlet events, parameters, security settings are all available to you.

And as always, you can switch to the source view to take a look at the generated code or make changes there manually.

JSF Portlet Bridge Presentations at the JSF Summit

Oracle’s Mike Freedman, the spec lead for JSR 301: Portlet 1.0 Bridge for JavaServer Faces 1.2 and JSR 329: Portlet 2.0 Bridge for JavaServer Faces 1.2 gives two presentations at the JSF Summit, in Orlando, FL.

Here are the abstracts:

 

 

Did you know that your JSF application is also a portlet?

The Portlet Bridge (JSR 301 or JSR 329) provides a Faces compatible runtime environment in a Java portlet environment enabling a JSF application to simultaneously be published as a web application and a portlet. This talk introduces you to the Portlet Bridge and shows you how to use it in your applications. Demonstrations are provided to illustrate concepts. Topics covered include:

  • The difference between JSR 301 and JSR 329.
  • Extending a Faces application so it also runs as a portlet.
  • An overview of the bridge’s configuration flexibility to adapt to differing Faces and application environments.

The Portlet Bridge and the 2.0s

In the recent past both Java Portlets and JSF have published their 2.0 versions. This talk introduces you to how the major new features in each of these 2.0s are managed by the bridge. The Portlet Bridge provides a Faces compatible runtime environment in a Java portlet environment enabling a JSF application to simultaneously be published as a web application and a portlet. As a technology that sits between two others (the Java Portlet API and Faces), its capabilities expand as the controlling technologies are revised. Demonstrations are provided to illustrate concepts. Topics covered include:

  • Portlet 2.0 shared render parameters
  • Portlet 2.0 eventing
  • Portlet 2.0 resource serving
  • JSF 2.0 Ajax support