Well, this is quite interesting article and I suppose these rules are just result of common sense.
However, while author is concentrated on usage of annotations with EJB, I suppose that since annotations now are built-in feature of Java, the entire question may be wide - When not to use annotation?
In some cases, annotations are positioned by replacement of configuration files (for example - mapping to database etc). The main drawback of such approach is significant reducing of code portability and reuse.
Another thing - runtime annotations processed by APT. Potentially, one may create annotations that just will twist behavior of the code and therefore reduce readability and transparency of plain Java code (actually, similar problem occur with AOP - you could not say for sure which code will be executed and which actions will be performed, for example during call of particular method just by inspecting plain Java class listing).
In general, it seems that it is possible to discover more annotations use cases that looks attractive from the first glance but may result bad design.
Therefore, I suppose it could be great to collect opinions when NOT to use annotation.
Best regards,
Andrew Sazonov
http://www.softamis.bizSoftAMIS - you source of high quality Java and Web solutions!