The Enterprise Information Portal (EIP) has certainly become one of the major enterprise software categories of the day. While the definition varies somewhat from vendor to vendor, a portal is basically a dynamic Web site containing multiple modules (often called portlets or gadgets or other goofy names), the display of which can be customized by each user. Portals contain a user security methodology, ideally including a single sign-on so users can log in to all of the modules at once.
If you need a real-world example, think of the application behind My Yahoo!. The difference would be that in most enterprise environments, corporations set up portals to enable their partners, customers or vendors to log in and view critical information about their company. This can include information from corporate databases and other back office software, e- commerce applications, other Web-enabled applications and an unlimited amount of data from content management systems, syndication sources and more.
Numerous software vendors have portal solutions available. At the high end, Plumtree, IBM, SAP, BEA and other similar solutions have unbelievably high license fees. Add in the costs of integration and implementing and EIP solution can easily run up in the million dollar figures. Other companies, including Microsoft and Sybase offer solutions with a lower license fee. The reality is that many companies don’t need everything these solutions offer. Most, if not all, high-end solutions have application integration features that allow for (relatively) simple integration with ERP and other back office solutions, truly a key factor for Fortune 1000 companies, as well as built-in application servers and content management solutions. For many small-to-medium enterprise companies, this is way more than is needed or even desired.
This is where the solutions reviewed below really shine (in varying degrees). Most of these solutions offer a skeletal form of what would be expected in an EIP solution, but are quite sufficient for a J2EE developer to begin their portal development process and save a significant amount of coding time working with underlying processes, such as authentication and personalization.
Enterprise Portals Key Review Factors
There are quite a few open source and free EIP solutions available, but many fewer in the J2EE world, though in many ways J2EE is a natural fit for portals. In addition to the helpful API’s for data integration (such as Java DataBase Connectivity [JDBC], Java Connector Architecture [JCA] and Java Naming Directory Interface [JNDI]), tremendous strides are being made to make it even better: a portlet API is currently under review (see JSR-168 specs) and Java’s Web Services implementation are both great examples of this.
Though what every company is looking for in a portal solution is variable, I reviewed these based on the following items:
Installation and setup: How easy was it to install? What J2EE application servers are supported?
Documentation: Was there documentation? Of what quality?
“Out of the (proverbial) box” features: What features come with the portal without requiring additional programming? How good are the implementations? Anything expected that isn’t there?
Ease of customization: If changes are required, how difficult is it to get into the code and make them?
Additional bonus features: Does the portal have any features beyond authentication and site customization?
Portlet API: How difficult is it to create or modify applications to be used as modules? What types of portlets can be used?
These 4 portal solutions seemed the best for review purposes:
RedHat CCM (formerly ArsDigita)
If you have done any research into J2EE portal application, Jetspeed is sure to turn up. A part of the Apache Jakarta project (Apache’s J2EE segment), Jetspeed has been around since 1999 and members of the Jetspeed project are active participants in the JSR-168 portlet API specifications (other participants include IBM, BEA Systems, Borland and Epicentric). All of these factors make Jetspeed one of the better options.
Jetspeed uses XML extensively for display and back-end functionality. This includes simple use of RSS feeds and XML data into portlets and WAP cell phone site delivery. Additionally, Portal Structure Markup Language (PSML) is used to store portal-specific information including styles, personalization information and portlet registries.
The documentation is fairly good overall – improved significantly with a tutorial for the 1.4b3 release. Additionally, FAQ’s, sample sites, Javadocs and other information is readily available via the Jetspeed home page.
Beyond basic user storage and preference settings and portlet integration, Jetspeed offers a number of nice features. The administrative interface is intuitive. Content can be syndicated and syndicated content can be accessed as portlets. It will be standardized on the portlet specification, enabling absorption of third-party portlet applications. Currently, numerous types of applications can be integrated as portlets including: RSS, JSP, servlets, external Web page, XSL, Velocity, a database browser and more. Data can be integrated with Avantgo. It is also highly portable between J2EE servers using the JDK 1.2 and Servlet 2.2 specifications.
The only weakness I could find with Jetspeed was that its not very customizable. Customizing Jetspeed requires not only knowledge of J2EE programming concepts, but also the Turbine application framework. This isn’t inherently a weakness. Building applications on top of existing frameworks is laudable and is a good development strategy. However, not knowing Turbine will add to the learning curve of understanding how Jetspeed works. Note also, that some templates are written using the Velocity template engine (Turbine has Velocity built in).
Mentum Group jPorta
Where Jetspeed is a full-feature strategy, jPorta is a much more scaled-down solution. Which can be beneficial, depending on the need. The documentation is well-designed, and describes the basic functioning, including how to use the XML-based gadget (portlet) registry, the layout manager and gadget tag usage syntax (jPorta uses JSP custom tags for much of its functioning). Installation instructions are only provided for JBoss/Tomcat, although the documents say it will work with any servlet 2.3 engine. I was able to easily deploy the application WAR file on JRun4, but wasn’t able to log in for unknown reasons.
This last topic leads to Jeenius, the framework underlying jPorta that handles a number of lower-end management functions, much like the JavaServer Tags do. The most notable and deepest use of Jeenius is to handle all of the security (e.g. users and roles) and user profile information. Anyone interested in customizing jPorta will inevitably need to at least understand what Jeenius handles. For example, to troubleshoot my login issue, I will need to see what is happening with Jeenius’ tag.
The good news is that both jPorta and Jeenius are fairly easy to learn. Both use JSP extensively to handle all of the display, relying on underlying custom tags to do the core of the work. This means that customization is remarkably easy, even for less-experienced J2EE developers. The code is very clean and the tag API is intuitive. If you are looking for a simple solution to display some simple servlet, HTML or JSP-based application as gadgets, jPorta would be quite viable. A number of sample gadgets are included that provide a good example for how to develop portlet-type applications for jPorta.
Liferay was developed out of the lack of a lower end portal solution. Of all the portals reviewed, Liferay has the best Web site and accompanying documentation. Check out the FAQ). The result is a pretty deep solution that handles not just the basic users and portlet drawing, but also has a full administrative interface, documented support for all of the major databases, documented support for the main J2EE application servers (JBoss/Jetty, JBoss/TomCat, Oracle AS, Pramati, WebLogic, Orion, and more coming soon, see site for versions and latest details) and single sign-on capabilities. Did I mention it also supports multiple languages?
Liferay is a true J2EE application, relying on numerous patterns, EJBs and built on top of the Struts platform. Many J2EE developers are familiar with Struts, making this a good call for an underlying framework. An XML-based registry is also used to store portlets. A number of portlets are included, including a guestbook, a calendar, a mapping utility using Expedia, news, polls, a document library, live stock information and more (including Bible verses). It’s a great start for anyone launching a portal project. I was unable to determine what the API is for developing portlets, it looks like EJBs are used for this. In addition to the included portlets, Apache Lucene is used to enable document searching. XML is supported and it looks like Web services.
Liferay is clearly a good option, especially for anyone who is familiar with Struts. Of course because Liferay is a complete application, it will work well for many companies out of the box. The only concern I would have would be how easy or difficult it is to develop portlets.
Everyone is familiar with RedHat of Linux fame. RedHat has now incorporated the ArsDigita content management solution into their book of offerings, now called the RedHat Content and Collaboration Management (CCM) Software Solutions. CCM is obviously a content management solution at heart, but because it offers many portal-like features, and because many portal projects focus on delivering content only, this is certainly a product worth taking a look at.
The documentation, and this is one of the advantages of RedHat software, is good and detailed. In addition, RedHat offers support and consulting if you should get stuck using their products. The installation documentation covers TomCat 3 & 4, Resin and WebSphere. All instructions assume you are using Linux, or at least Unix. Which is not to say it won’t run on Windows, you’re just on your own. No support available to get you up and running.
Customization of CCM is possible. The development docs are fairly extensive. Again, this is primarily a content management tool, and though I could find portlet-type classes in the Javadocs, there wasn’t anything specifically about developing portlets in the documentation. That said, ArsDigita was around for a while and the application itself is quite large at this point in time. A significant Java library powers CCM. XML/XSTL are used on the front-end, which is always a plus, especially for content management.
The feature list is quite extensive and includes user/group management, work flows and support for multiple languages. Of course the content repository is the core aspect of this package and something not included, to this extent, in any of the other solutions. The XSLT front-end will also allow for VoiceXML, WML or other XML displays. If you need a portal solution with less on the back-end and an integrated content management solution then this package is worth evaluating. Keep in mind that only the evaluation version is free.
I would recommend any of these portal solutions. Which one you choose will depend primarily on what you specifically need. jPorta offers a simple solution that is easy for JSP developers to implement. Both Jetspeed and Liferay offer fairly robust J2EE solutions that will offer a full portal framework. Liferay contains a great feature set and good documentation. Jetspeed also has a fairly good feature set and will support JSR-168. Finally, the RedHat solution is a good one for any company who wants the look-and-feel of a portal and a content manager to back it up.