コントロールクライアントの作成と実行
次に、先ほど作成したコントロールを利用するクライアントを作成します。まずコントロールを利用するには、そのインスタンスを生成しなければなりません。インスタンスを生成するには下のように記述します。ここでは、org.apache.beehive.controls.api.bean.Controlアノテーションをつけた、コントロールBeanクラスを宣言しています。そして、Controlアノテーションの後にプロパティを渡すようにコントロールパブリックインターフェイスで定義したFileInfoアノテーションを入れています。これで、filePath
、fileName
のプロパティがコントロールに渡されます。また、コントロールのインスタンスは自動的にインスタンス化されます。
//プロパティをつけてインスタンス生成 @Control @FileInfo(filePath="C:\\tmp",fileName="control_test.txt") private SampleCtrlFile control;
次に、onWrite
イベントを受け取って行う処理を記述します。処理のメソッドの前にEventHandlerアノテーションをつけて、以下の表のプロパティを設定します。
プロパティ名 | 概要 |
field | コントロールのフィールド名 |
eventName | イベントのメソッド名 |
eventSet | SampleCtrlFile.Callback.class(イベントのインターフェイス) |
次のように記述します。これにより、コントロールからクライアントにonWriteのイベントが通知されると、ログを出力する処理を行います。
@EventHandler(field="control",eventSet=SampleCtrlFile.Callback.class, eventName="onWrite") public void HelloMessageHandler(String str){ ctgry.info("onWrite-Event"); }
実装された操作はControlから直接呼び出すことができます。
@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String hogehoge = null; try { //write control.write("hogehoge"); //read hogehoge = control.read(); } catch (Exception e) { e.printStackTrace(); throw new ServletException(); } response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<html><body>ファイルから"+hogehoge+ "文字列を読み込みました。</body></html>"); out.flush(); }
Antにより実行
次のように実行することにより、warファイルを指定された場所に作成します。必要に応じて「build.xml」を修正して、デプロイ先を変更してください。
>cd BeehiveConrolSample\samples\sample >ant clean deploy
作成されたwarをTomcat上で動かし、トップ画面のリンクをクリックするとコンロールが動作します。以下が画面キャプチャです。
まとめ
本稿では、Apache Beehiveの概要とコントロールの詳細について解説しました。コントロールをどのように作成し、ビルドするのか? また、クライアントではどのように使うのかが大まかには理解できたでしょうか? 次回はApache BeehiveのNetUIについて解説を行います。
参考資料
- Apache Beehive
- IBM DeveloperWorks 『Tigerでのアノテーション 第1回: Javaコードにメタデータを追加する』 Brett McLaughlin 著、2004年9月