Demarcating transaction boundaries for profile management
Using the User Transaction Management MBean, a client can demarcate transaction boundaries for a subset of profile-management operations, by:
- starting a user transaction
- performing some profile-management operations, across a number of different profiles (in the context of that transaction)
- then committing the transaction — resulting in an atomic update of profile state.
Binding user transactions with authenticated subjects
The SLEE binds user transactions to the java.security.auth.Subject associated with the invoking thread. For all user-transaction management, the thread invoking the management operation must therefore be associated with an authenticated subject. The command console interface handles this task as part of the client-login process. (Other user-provided m-lets installed in the Rhino SLEE will need to take care of this requirement in their own way.)
Executing Profile Provisioning operations in a user transaction
The following operations on the Profile Provisioning MBean support execution in a user transaction: createProfile, createProfiles, removeProfile, getDefaultProfile, getProfile and importProfiles.
Furthermore, accessing a Profile MBean while a user transaction is active:
- enlists that MBean into that user transaction
- changes that MBean to the read/write state
- puts any changes to the profile in context of the user transaction.
|Committing or rolling back profiles enlisted in user transactions|
You cannot invoke the ProfileMBean.commitProfile() or ProfileMBean.restoreProfile() operations on a Profile MBean enlisted in a user transaction. Any changes made to such a profile will be committed or rolled back when the user transaction is committed or rolled back (respectively).