Informs all registered objects an association has started.
The Control object which represents the transaction is given.
A flag is passed indicating whether this association
is as a result of a Current.begin operation.
// Determine the Coordinator for the transaction.
org.omg.CosTransactions.Coordinator coord = null;
try {
coord = control.get_coordinator();
} catch (Unavailable exc) {}
// Browse through the set, telling each that association is starting.
if (coord != null) {
for (int i = 0; i < registered.size(); i++) {
StaticResource resource =
(StaticResource) registered.elementAt(i);
try {
resource.startAssociation(coord, begin);
} catch (INVALID_TRANSACTION exc) {
// Catch INVALID_TRANSACTION exception, and allow it to
// percolate. We need to inform all previously called
// StaticResources that the association has ended
// immediately.
for (int j = i - 1; j >= 0; j--) {
((StaticResource) registered.elementAt(j)).
endAssociation(coord, begin);
}
throw (INVALID_TRANSACTION)exc.fillInStackTrace();
} catch (Throwable exc) {
// discard any other exception
}
}
}