Hi!

When a runtime exception hits the container, it is required to discard the
bean instance. So there is no bean that could be the target of a container
callback :-)

/Johan

Den 2003-02-20 17.56, skrev "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]>:

> It is my understanding that rolling back Asynchronous transaction is best
> accomplished by using a Stateful Session Bean implementing the Session
> Synchronization interface.
>
> If I understand this correctly, one should:
>
> 1. capture "recovery state" info, perhaps in method afterBegin()
>
> 2. review the status of "transaction committed" state in method
> afterCompletion( boolean committed )
>
> 3. If (! committed ) { recoverAsynchronousState(); }
>
> My question:
> When a runtime exception occurs, ongoing transactions are rolled back, but
> afterCompletion( boolean committed ) will NOT be called.
>
> Does anyone have an elegant solution for handling such errors? I have been
> using a crude framework:
>
> private boolean txnInprogress = false;
>
> public void afterBegin() { txnInProgress = true; }
>
> public Whatever remoteMethod() throws Exception {
>    try {
>         // do some work
>    } catch Exception ex ) {
>         if ( txnInProgress ) {
>              afterCompletion( false );
>         }
>         throw ex;
>    }
>
> public void afterCompletion( boolean committed ) {
>    if (! committed) {
>         // roll back asynchronous txn
>    }
>    // other work
> }
>
> ===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff EJB-INTEREST".  For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".
>

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to