Portlet Incubation
Portlets that should become Jasig hosted portlets should be submitted for incubation following the process documented in the [Incubation wiki space].
Portlet Release Manager
Jasig has defined the role of Portlet Release Manager to help facilitate the Jasig portlet life cycle.
Portlet Developer Information
Developers who wish to share their portlet on this space simply need to add a new child page to the Community Portlets page, then enter their portlet information using the "Portlets Template" provided in this space.
Can't find the portlet you want? We provide resources for users to develop their own portlets.
Portlet Development
- Accessing Portal Roles and User Attributes — Accessing uPortal groups and user attributes from the portlet environment.
- AJAX in a Portlet — Recommended solutions for using AJAX in a portlet
- Automatically Reload a Portlet
- CSS Best Practices — CSS usage in portlets requires care by the portlet developers to avoid styling conflicts with both the portal framework and other portlets on the same page.
- JavaScript Best Practices — JavaScript usage in portlets requires care by the portlet developers to avoid library, version and namespace conflicts with both the portal framework and other portlets on the same page.
- Portlet Modes — Using and switching between JSR-168 portlet modes
- Portlets using Proxy CAS
- Preferences
- Security Information for Portlet Developers
- Using the Jasig Parent POM
Portlet Development FAQ
- Clustering JSR-168 Portlet Applications in Tomcat — JSR-168 Portlet applications represent a special challenge when it comes to clustering within Tomcat (or any other servlet container, for that matter). In order to effectively cluster web applications, session data must be replicated or shared between the nodes in the cluster. Otherwise, the user experiences a complete loss of context during a node failover. While Tomcat has provided session replication for quite some time, it has not supported replication of session changes resulting from a cross-context call from one webapp to another.
- Integrating Alfresco with uPortal — Alfresco offers a portlet version of their web application. This can be
- JBoss Forums Portlet — The JBoss Forums Portlet can only be deployed in the JBoss Portal. There are several calls to JBoss portal specific services, which do not exist in uPortal.
- Sharing uPortal's Connection Pool with Portlets on Tomat 5.5 — Portlets, being their own application on Tomcat, do not inherently have access to uPortal's connection to the database. Fortunately, however, you can move uPortal's database connection context to a global context which is visible to your portlets. Many thanks to Chris Holdorph form UNICON for his insight, and Gregg Lagnese, MicroDeveloper, Inc. for his online Oracle JNDI reference. As a note, these modifications were made on uPortal 2.5.2 and Tomcat 5.5. I'm uncertain how uPortal's inherent support of portlets in v3 will affect database context visibility for individual portlets, or how much these steps differ for Tomcat 5.0 and other versions of uPortal.
Portlet Development Technologies and Frameworks
- portlet defineObjects tag extension — The portlet tag library includes a tag called <portlet:defineObjects/>. This tag establishes three objects; renderRequest, renderResponse and portletConfig for use in included portlet JSP pages. Although you can certainly access some useful information through these objects using the JSTL tag library, accessing scoped variables and the like will require the use of scriptlets. JSTL users are used to having access to scoped variables via the JSTL implicit objects (requestScope, sessionScope, applicationScope etc.).
- Struts Bridge — This document will explore how a Struts application can be modified to work as a JSR168 compliant portlet. It will hopefully serve as a useful reference guide for those planning to install the Struts Bridge into their existing Struts applications. As an example we'll use the iBATIS version of Petstore application, the Petstore is a commonly implemented demonstration of a fictitious e-commerce site. The iBATIS version of Petstore is built with the Struts framework and incidentally also provides an example of the iBATIS DAO framework and SQL Maps framework.
Portlet Examples and Skeletons
- Hello World Portlet — Very simple ant-based portlet which extends GenericPortlet
- Portlet Skeleton — Skeleton project for an ant-based Spring PorletMVC portlet
Portlets from other Portals
Sharing Portlets
Troubleshooting Portlet Deployment
External resources
- Spring PortletMVC
- A framework that provides an MVC layer for the Portlet API in the same way that Spring WebMVC does for the Servlet API.
- TestingPortlets
- PORTLETUNIT is a jUnit Java Unit Testing Framework for testing JSR-168 portlets. It is built on ServletUnit and Pluto. It provides a mock portlet container as ServletUnit provides a mock servlet container.
- Spring in Channels and Portlets
- Tapestry Portlet Support
- Messaging in portlets, test portlets
Portlet Community
- Freshmeat Portlet category lists several projects that are portlets or have portlet interfaces.
- Google Portlet
- Portlet Open Source Trading Site (POST)
- This is sort of a clearinghouse for portlets started by Plumtree, Documentum, BEA, and Sun.
- java.net Portlet Community
- Portlet-related open source projects, articles, tips, news, product announcements, blogs and FAQs. Contains another clearinghouse for portlets called Gems
- Ajax Patterns Portlets The work that Claude Hussenet has done is quite nice. He's using DWR, an AJAX implementation that I've been using on another project.
- JSR-168 Yahoo! Group
- JBoss PortletSwap - downloadable portlets, portlet forums, etc
- JA-SIG Clearinghouse - downloadable portlets, channels, other java projects
- Portlets from other Portals
Portlet Training
- Portlet Development - Unicon, Inc.
- A 3-day course serving as an introduction and guide to developing standards-compliant (JSR-168) portlets.
