From time to time, I am one of those lucky professionals having the chance of working with state-of-the-art and break-through technologies.

In my current project, the customer has explicitly chosen to explore the well-marketed capabilities of the new EJB3.0 specification and its open-sourced implementation from JBoss.

After some really deep hands-on work with this environment, I have brought up 10 points that annoy me and that should be addressed in future releases. But before diving into that, I must confess that the EJB3.0 is a huge step forward from its predecessor. I finally have the feeling that I am designing and implementing things the way they should be (or at least it is getting pretty close).

Designing and implementing for EJB3.0 is really fun. You can easily see your business model reflected in the Entity Beans and Session Beans and you know, deep inside, that you will not need to implement and maintain a bunch of auxiliary classes to glue everything together. This is the nice part of it!

Also, the annotation-cantered style for practically everything is just wonderful: everything is where it should be AND you still have the possibility of overriding some configuration with xml descriptor files. It is a very well-balanced solution.

If you put your hands onto writing EQL and using the simple but yet very powerful constructor expression, your daily routine is greatly simplified.

Having said all these nice things, let's check the bad facts.

1) @EJB injection not fully implemented on JBoss 4.0.5 with EJB3 RC9

2) Environment entries cannot be injected into Entity beans

3) Default Entity Listeners

4) @GeneratedValue only works on @Id annotated members

5) @GeneratedValue does not work in composite primary-keys

6) Persistency cascading and multiple persistence fails if not proper surrogate key is previously given

7) @GenericGenerator is not support in the deployment descriptors

8) Composite keys' members cannot take part in a relationship with another entity

9) Deletion of Orphan Entities is not part of the spec

10) Pessimist Locking mechanisms (i.e. serialized) were just ignored in the spec