Yes, it is valid. This is one of the things that you can only do with BMT, start a transaction in one method of a stateful session bean and commit in another method. This is discussed a little bit in EJB3 in action, page 201, section 6.3.4
As for timeout method, Required or Requires_New are allowed (refer to the sidebar EJB Timers and Transactions, page 173 of the same book). I am not sure why only these two are allowed, I am suspecting because the container is invoking the timeout method not a client.
Thanks for pointing the relevant pages. The page 201 also says
Another drawback for BMT is the fact that it can never join an existing transaction. Existing transactions are always suspended when calling a BMT method, significantly limiting flexible component reuse.
To avoid this we use joinTransaction( ). Correct?
Yes I have read in Java Beat that NOT_SUPPORTED is also one of the supported types for Time out methods.
SCJP 1.4 - 95% [ My Story ] - SCWCD 1.4 - 91% [ My Story ] Performance is a compulsion, not a option, if my existence is to be justified.