-1
状況をキャッチするまで:私は、例えば、ボイド方法、 を実行するトランザクション方法、ありますホールドスレッドリスナーがイベントに
@Transactional
public void createCall() {
callManager.makeCall();
}
をさんは、CallManagerが、このようなメソッドが含まれているとしましょう:
public void makeCall() {
Call call = CallFactory.createCall();
CallListener listener = new CallListener();
call.addListener(listener);
call.connect();
}
connect()メソッドが例外をスローしない場合、makeCall()メソッドは正常に完了します。
さて、リスナーに我々は、たとえば、ハンドラメソッドを持っています。
public void callTalking(AnyEvent event) {
//some logic
}
主な問題は、私たちの取引方法createCall()リスナーまでがcallTalkingでイベントをキャッチを保持する美しい方法があります()タイムアウトを使用しないでください?
EDIT 重要な情報は、私は(すぐに話す)gigaspaceポーリングイベントを、使用していることをは永遠に成功したトランザクションの後に、データベースからオブジェクトを受け取ります。
ロジックがスレッドに分割されていないので、待機する必要はありません。しかし、異なるスレッドがある場合は、それらの間でsyncを使うことができます( 'Object#wait()'と 'Object#notify()') –
主な問題は次の状況です。アプリケーションは通話を成功させましたが、オペレーターは通話していませんでした。同時にアプリケーションがクラッシュし、通話が失われました。しかし、トランザクションは成功としてマークされ、ロールバックはありませんでした。 –