Apcoordinator ユーザーズガイド |
目次 |
第2部 Apcoordinatorコアの機能 | > 第4章 APIを使ったプログラミング |
コンストラクタは必ずObjectの引数が必要です。これは、イベントの発生源となったオブジェクトを表します。nullは指定できません。
public class MyEvent extends com.fujitsu.uji.event.UjiEvent { static public final int TYPE0=0; static public final int TYPE1=1; protected int type; // typeはイベントの種類を、sourceはイベントの発生源となったオブジェクトを // 表します。 public MyEvent(int type, Object source) { // 以下に初期化する手続きを記述してください。 super(source); this.type=type; } public int getType() {return type;} }
イベントリスナはcom.fujitsu.uji.event.UjiEventListenerインタフェースを実装して次のように作成します。
ビジネスクラスでは、イベントリスナとイベントを次のように使用します。
import com.fujitsu.uji.event.UjiEvent; import com.fujitsu.uji.event.UjiEventListener; public class MyListener implements UjiEventListener { java.io.File file; public MyListener(java.io.File file) { this.file=file; } // このメソッドは、イベントが発生したときに呼び出されます。 public void eventRaised(UjiEvent evt) { if (evt instanceof MyEvent && ((MyEvent)evt).getType()==MyEvent.TYPE1) { file.delete(); } } }
イベントリスナをDispatchContextから削除するには、removeUjiEventListenerメソッドを使用します。
public void startup(DispatchContext context) { context.addUjiEventListener(new MyListener(new File("foo")); .... } public Object postprocess(DispatchContext context,Object result) { .... if (failed) { context.fireUjiEvent(new MyEvent(MyEvent.TYPE1,this)); } }
登録されたイベントリスナはリクエストの処理が終了するまで有効です。リクエストの処理とは、Webアプリケーションの場合は<uji:dispatch/>
の実行、EJBセションBeanの場合はビジネスメソッドの呼び出し、SOAPサーバアプリケーションはサービスクラスの呼び出しです。
目次 |