Well its time to go to RC1 with Obligate which is a Java annotations based solution to the Design by Contract problem. Its a bit invasive in this first edition, but can be used either directly as a service locator approach, or with a bit of code or generation, ontop of EJBs. As soon as we get a decent EJB 3.0 environment we will be adding EJB 3.0 support, and when we have an app server that does Java EE on Java SE 5.0 with decent EJB generation then we'll add in support for that.
Performance isn't currently obligate's strength, although on even a basic laptop it can do 200,000 calls with full contracts in under 400 seconds, which means 2 milliseconds per call. The aim is that this should be used in pre-production and test environments, paticularly if attempting to do continual live environments.
So if you are feeling brave have a look, there is currently a debate going on in the Java SE 6 group on whether parameter name reflection should be added to the reflection APIs, obligate has a decent example of where it would help.