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".