Liferay…I need a Life Jacket; Giving JBoss Portal a Try.
After completing my previous post on Liferay I began to see that things were really not deploying properly from the EXT environment. I went back and tried the simpler plugins SDK and continued to experience more trouble getting just the basic portlets to build and deploy properly. Thus a series of forums posts (which were always answered quickly and in a friendly helpful nature) I have determined that 5.1 is just not ready for use unless you are an experienced LRP developer.
So I had a choice to either drop back and use 4.3 or try a different platform. Because I want to use the latest frameworks like Seam with my portal, I decided to give JBoss Portal (JBP) 2.7 a try.
The installation process with JBP is very simple. As with LRP I grabbed a complete bundle, extracted it, followed the docs to set a database, user account, and started the server. As with LRP you’ll need to add an option to your run.bat startup file to increase the PermGenSpace. A couple of things I noticed:
- I’m using the default server config – and starting jboss with the -c default option
- I’m using mysql so I just copied the MySQL file from the setup directory to server/default/deploy and editied it appropriately
- To set PermGenSpace use this JAVA_OPTS argument: -XX:MaxPermSize=128m
Once I did these things the portal started up right away and I could get in and do all the “regular” portal stuff:
There’s a decent set of documentation in HTML and PDF format to show you around. JBP and LRP are roughly equivalent, although they tend to leapfrog eachother and JBP tends to integrate heavily with other JBoss middleware products.
My next task was to get portlet development moving along. The first thing I did was to grab the JBoss Tools suite of Eclipse plugins and install them all in an Eclipse 3.3.2 config. After that I found developer instructions in the “Reference Guide” – they should perhaps change that name since this was the last place I looked for help. JBP includes sample modules and example code in the main portal install. The reference guide shows you how to build and deploy these. The build process uses Maven2 (similar to Ant) – I use maven 2.0.9. I had an issue straight off because Maven could not find the 2.0 portal api jar. I had to config an extra repository in my pom.xml file like this:
<name>Jboss.com Repository for Maven</name>
Then I edited the main maven config file to give it a path to a local repository to download and store jar files and stuff. In my case this means adding this line:
to the mvn/conf/settings.xml file.
Pom.xml is the configuration file maven2 will look at to find things for aq project/build. It is located in the project directory. Just stick this “repositories” block at the end of the file before the end </project> tag. Once the .war build correctly, dropping it into the deploy directory of your jboss server deploys the module as expected.
My next task was making mods and deploying them. I used Eclipse 3.3.2 with the JBoss Tools. That’s an easy install, just grab them, extract them, and place them into the plugins and features folders. Then start up Eclipse with the -clean option (I have this set permanently). Once I did that I could import that existing project into my workspace and screw around. First I had to fix the fact that Elcipse could not find the portal api 2.0 jar – no problem at all, just point it to the repo url for your maven config. After you do a build it will put jars and unresolved things from your project there.
So I made a couple of quick edits, re-ran my maven build and copied over the war. I did not restart jboss. I checked the page again and voila:
My changes are there. Not bad – and something that I could not get working with Liferay. That’s not a condemnation of LRP, just a simple fact. I have no experience with either tool and yet I could sit down in less that one day and do something I tried for several weeks to do with Liferay. So JBoss is what I’ll be using right now.
I’m going to get working on some portlets and post a follow-up on this for how I do. I’m going to work on a few DB things, MVC stuff, and see if I can get some Seam portlets working.
Update: I’ve posted part 2 here.