This is really a problem with the way EJB specs are written. The lifecycle is intentionally very loose to allow things like circular references. The problem is that if you allow circularity you can't have strict ordering. Singleton has a solution for this using @DependsOn. We are looking at opening this up for other bean types, but it would of course be a proprietary feature.