Saturday, April 12, 2008

What happening to Java EE ???

I was working with J2EE (specially EJB) from until 2003. because of J2EE performance issues and slow development I decide to switch to another solutions like lightweight containers.

After a while I chose Spring as a business framework and Hibernate as a ORM tool and in presentation layer Struts, WebWork and a little Tapestry.

From 2003 until 3 months ago Hibernate + Spring + (Webwork or Tapesty) was my favorites in all projects and I have very success story with these solutions.

About 3 months ago I was join to new team and began to work on a project with Java EE 5 standard specification again.

Weblogic has been chosen as an Application Server and JPA as a persistence mechanism.

Weblogic need high resources, and its not good for development environment.
we decide to chose another server for development environment. I began to test GlassFish and Geronimo.

there was a lot of problems during these tests and now I am really confused. I don't understand that what portability means in Java EE. what is standard in Java EE.

Here is a list of my problems

1 - JNDI naming is not standard in Java EE and each server has its naming convention for JNDI.
than you most change lookup code for each server.

2 - Hibernate does not understand Geronimo JTA Transaction and you most add some code to fix this issue.

3 - Open JPA (default JPA implementation in Geronimo) has its database model for OneToMany Relations. then you most change database and table relation for this server.

4 - Toplink (default JPA implementation for GlassFish) not support some kind of table mapping for class hierarchy.

5 - JAX WS Web Service Client for each server is unique. and you need to write deferent code for each server.

that was my Java EE tragic story.