Dave Johnson on open web technologies, social software and Java
In my quest to make Roller work on Java EE 6, the first server that I decided to tackle was Glassfish 3. In this blog I'll describe how I approached the problem and what I learned along the way.
Roller uses JPA for persistence and specifically the Apache OpenJPA implementation. I knew that GlassFish uses the EclipseLink JPA implementation and I suspected that there would be JPA portability problems, so I decided to run Roller's JUnit tests against EclipseLink JPA. I wanted to find and fix those problems before even touching GlassFish. The tests ran and there were many JPA related failures and errors, most due to differences in the way that EclipseLink handles bi-directional relationships and the use of unmanaged objects.[Read More]
It's hard to believe, but I've been dorking around with Roller, the blog software that powers this site, for almost 10 years now. I started in summer 2001. In the past couple of years, I've had a lot less time to work on Roller. I devoted some of that time to mentoring student developers, which was fun and rewarding. I also spent time making Roller more consumable for developers by making it easier to build, run and deploy to modern Java app servers, which was not really fun but was definitely educational, bloggable even.[Read More]
On the last day of 2010, I made available the third release candidate for Apache Roller 5.0. The main difference between this new candidate and the previous one is that the new RC3 runs on Java EE 6 servers: Glassfish 3, JBoss 6 and Websphere 8 (currently in beta). Making this happen took a lot more work than I expected and I'll blog about that over the next couple of weeks as it is an interesting case study in Java EE 6 portability.
Here's the announcement:
Apache Roller 5.0 Release Candidate RC3 is now available for testing. Note that this is NOT a release of the Apache Software Foundation or anybody else; this release candidate is for testing purposes only and not recommended for production. What's new in Roller 5.0: https://cwiki.apache.org/confluence/display/ROLLER/What's+new+in+Roller+5.0 Change list (issues resolved since 4.0) http://bit.ly/gAhDWR Issues resolved since last release candidate (RC3) http://bit.ly/dZ27Nx Signed binary and source files. Also, documentation in PDF form http://people.apache.org/~snoopdave/apache-roller-5.0/ The biggest change in RC3 is the new support for Java EE 6 application servers: Glassfish 3, JBoss 6 and Websphere 8 (beta). I've been able to verify that Roller runs on all of those servers, and I updated the installation guide to explain in detail how you install on Glassfish, JBoss and WebSphere. If you would like to help out then please test RC3, discuss the problems you encounter here and file specific bugs with steps to reproduce in the Roller JIRA bug tracking system. Thanks, DaveThat announcement is available here: http://markmail.org/message/my5wbld2xqvhqpyg
Dave Koelmeyer offers a nice step-by-step guide to getting Roller up and running on OpenSolaris, Glassfish and MySQL.
Although WordPress undoubtedly has more bells and whistles, with themes and plug-ins galore, I find Roller quicker and less fussy in operation, with far more comprehensive documentation and its scalability cannot be denied. This guide will enable you to install and run Apache Roller for the purposes of evaluation and tinkering.
We will be using OpenSolaris snv_134 x64, with Apache Roller 4.01, Glassfish v2.1, and MySQL 5.1.
It's time to catch up on blogging and I'm going to start by going through my backlog of links and adding some commentary, but not in this post; these are miscellaneous links that don't fit nicely into my other posts.
I'm supposed to be on vacation today and I'm doing my best, but I just wanted to point out that something interesting has quietly appeared in the Glassfish Update Center. Why so quiet? Well, it's an EA2 release and the emphasis is definitely on the E. I'll post some more details later, perhaps after winter break. I've still got shopping to do now and I'm supposed to be on vacation.
Interested? If you haven't done so already grab yourself a copy of the new Glassfish V2 UR1 release. Run the updatetool and install the latest EA2 release of Social Software for GlassFish.
See also: Something fishy.
Yes this is my obligatory Glassfish V2 post but listen, for me V2 is a pretty big big deal. Like Eclipse, which was the IDE that pulled me away from VIM, Glassfish V2 is the app server that finally pulled me away from Tomcat.
You see, I've been using Tomcat every day for a very long time. I started back in 2000 when I worked at HAHT Software and I was working on the new "Rocketsled" J2EE version of the HAHTsite app server. We were ripping out the old proprietary page engine and plugging in Tomcat. It was a pleasure to work with and I learned a hell of a lot from the code-base. After joining Sun and switching from Eclipse to Netbeans because Sun-on-Sun matters, I still stuck with Tomcat. It's what we were using for blogs.sun.com and Glassfish was just too bulky and slow. I grew to love Netbeans, but I couldn't stomach Glassfish, until now.
Now that Glassfish V2 is out I'm switching from Tomcat to Glassfish for all of my development. It's more than fast enough. With Glassfish on my MacBook Pro, Roller restart time is about 8 seconds compared to 16 with Tomcat. And the quality is high; the admin console, the asadmin command-line utility and the docs are all excellent. The dog food is surprisingly tasty ;-)
Congrats to the Glassfish team!
Adam Constabaris: A fundamental question for us in building this application was whether to use Tomcat and "soup it up" by using Spring to add services Tomcat doesn't provide itself, or whether to use a full Java EE container. We could have made it work with the servlet container approach, since our application isn't heavily "enterprisey" and we were initially reluctant to pay the complexity price of EJBs. After looking at the Java EE 5 specification, though, we saw a lot of ways we could simplify and standardize things, such as using JSF 1.2 and coding to the Java Persistence API rather than using Hiberrnate APIs directly.
Hey! I know that guy. Hi Adam.
Is there a trend towards full app servers and away from plain old Tomcat? Is it because of strong open source Java EE offerings from Sun, JBoss and Apache? I don't know, but I sure hope so.