Hello Phil,
This is Bharat. I think that it all depends on what is it that you are trying to do!
For example, we have a rather large WebLogic 6.1 application that uses an Entity Bean to read and cache the configuration data that is used heavily by other Beans and
java programs. Weblogic allows us to deploy it as a Read Only Bean. We did that and have been experiencing sporadic performance problems for quite some time. Upon doing extensive load-testing and performance monitoring, we found that this particular Bean was showing very high lock-waiting count as compared to other beans. This was quite a surprise to us since we assumed that the Read Only declaration, which is WebLogic specific, should allow us to use this Bean without any locking since it caches read only data. Not true, Ed Roman's book, Mastering Enterprise Beans, clearly shows that for a Read Only Bean, the transaction attribute should either be Not Supported or Never.
Since we have other Beans calling this Bean that have a transactional context, we cannot use Never which will throw an exception. Therefore, we declared it as Not Supported. Preliminarly
testing shows a lock waiter count of zero as it should be. Heavy duty load testing remains after making this deployment change.
This experience leads me to believe that almost all of the transactional attributes are needed at one point or the other. Some are more heavily used that the others though.
However, I agree with you that Never (and may be Mandatory?) attributes probably are not as useful?
Hope this helps.
Regards.
Bharat