The following are some “gotchas” to help you with your implementation:
If writing CMTD Session beans, resource manager transaction methods (such as connection.commit()) must not be used.
The ejbCreate() and ejbRemove() lifecycle methods for Session beans (and Message-driven beans) are performed with unspecified transaction context.
The collection returned by the getter method for a cmr-field cannot be used outside of the transaction in which it was materialized (see EJB specification, section 10.3.8).
If using a SQLj Part 0 compiler, make sure that the vendor offers adequate support for the generated code to run within the J2EE environment.
If using SQLj Part 1 or Part 2, be sure to do some performance benchmarking first. This is a new technology ...