DLL Hell...In Java?
I am now functioning (beside the regular technological activities) as a team leader for two parallel projects in our company - one medium (web based) .NET project, and one huge J2EE project. This has been the reason for lack of writing lately.
This is of course a good opportunity to compare the two technologies, although I'm not going to (re-)open a holy war, nor am I consider myself being Java expert.
Anyway, one of the (surprising) problems we encounter in the J2EE environment is no less than the Java equivalent to the DLL Hell.
In both projects, we maintain three environments: Dev, QA and Prod. For each project, the three environments are on the same server (.NET 1.1 on win2003 for the .NET project, WebSphere 5.02 on AS/400 for the J2EE one), and have their own database (SQL Server and DB2, respectively). When we want to deliver new modules to the QA env of the .NET project, we just...well...copy it. Maybe some changes in the web.config to direct to the appropriate database, but that's all, actually.
To my big surprise, this was not the situation in the J2EE project. This project rely heaviliy on CMP EJB (in short: O/R mapping technology for distributed applications in the J2EE environment. Has some common features with the yet-to-come ObjectSpaces.). Looks like the application server (WAS 5, as mentioned before) cannot maintain two versions of EJB, and the result is the Dev and QA talks to the same database. Once there is one EJB “registered“ in the WebSphere, you cannot hold another one with the same name, but of different version. Sounds familiar?
I have a full time programmer trying to solve that for already two weeks, and on Thursday last week he was helped by some WebSphere expert. We'll know tomorrow whether the problem was solved or not.