There is this similarity among NotSupported, Supports, and Never : all have a possibility that the method that they mark/describe run with an "unspecified transaction context".
While Required, RequiredNew and Mandatory have this �opposite� similarity : all DOES NOT have a possibility that the method that they mark/describe run with an "unspecified transaction context".
A method written by a Bean Provider (BP) might have code that calls these CMT transaction methods : entityContext.getRollbankOnly() or entityContext.setRollbankOnly(). These methods need a transaction context to run.
If the BP's method DOES have one of these xxxRollbankOnly methods AND if the method IS mark as NotSupported, Supports or Never, then problem will occur. This is possible since the Application Assembler or the Deployer most probably does not have access to the code.
I think the �problem� mentioned above is that the container will throw TransactionRequired<Local>Exception. (Can someone verify this ?)
I guess this should be the reason why NotSupported, Supports, and Never are labelled as NOT PORTABLE. They are not versatile enough to be used in every possible way.