初めてのWebLogic Event Serverアプリケーションの作成
Pages: 1, 2

HelloWorldアプリケーションについて

図5に、HelloWorldイベント処理ネットワーク(アプリケーション)を構成するコンポーネントを示します。

HelloWorldに関する説明

図5:HelloWorldイベント処理ネットワーク

このアプリケーションには次のコンポーネントが含まれています。

  • HelloWorldAdapter - このコンポーネントは単に、毎秒単位で Hello Worldメッ セージを生成します。実際の使用例としては通常、データ提供元からのデータストリームを読み取り(金融機関からのデータフィードなど)、複合イベントプロ セッサが理解できるイベントのストリームに変換するために使用されます。HelloWorldアプリケーションには、HelloWorldAdapter のインスタンスを作成するHelloWorldAdapterFactoryも含まれています。
  • HelloWorldInstream - このコンポーネントは、アダプタによって生成されたイベント(この例では、 Hello Worldメッセージ)を複合イベントプロセッサにストリーム配信します。
  • HelloWorldProcessor - このコンポーネントは単に、 HelloWorldAdapterコンポーネントからビジネスロジックを含むPOJOにメッセージを転送します。実際の使用例としては通常、プロパティ 値に基づくイベントのサブセットの選択やイベントのグループ化など、ストリームから追加で読み取られた、おそらくははるかに複雑なイベントの処理を実行す るために使用されます(先述のコード例を参照)。
  • HelloWorldOutstream - このコンポーネントは、複合イベントプロセッサによって処理されたイベントをユーザ定義のビジネスロジックが含まれたPOJOにストリーム配信します。
  • HelloWorldBean - これはPOJOのコンポーネントで、単に、プロセッサから出力ストリーム 経由でメッセージのバッチを受け取るたびに1つのメッセージを印刷します。実際には、このコンポーネントにアプリケーションのビジネスロジック(プロセッ サからのイベントのセットに関するレポートの実行、適切な電子メールやアラートの送信など)が含まれることになります。

以下に、 HelloWorldBeanのコードを示します。

public class HelloWorldBean implements EventSink {

  public void onEvent(List newEvents) throws RejectEventException {

      for (Object event: newEvents) {

          HelloWorldEvent helloWorldEvent = (HelloWorldEvent) event;

          System.out.println("Message Robin: " + helloWorldEvent.getMessage());

      }

  }

}

コード例2:HelloWorldBeanクラス

コード例2に示されているように、どのイベントハンドラも単純に EventSinkインタフェースを実装する必要があります。次に、 onEvent()メソッドが呼び出されます。このメソッドがイベントの Listを引数とすることに注意してください。これは、EPLステートメントでは関連するイベントオブジェクトを複数生成できるためです。ただし、このHelloWorldの例では、リスト内に1つのイベントのみを受け取ります。

イベントを生成する HelloWorldAdapterは非常にシンプルです。300ミリ秒ごとにイベントを生成するメソッドを呼び出すだけにすぎません。

public class HelloWorldAdapter extends ActiveAdapter {

    



    /* ... */

    private void generateHelloMessage() {

      List eventCollection = new ArrayList();

      String message = this.message + dateFormat.format(new Date());

      HelloWorldEvent event = new HelloWorldEvent();

      event.setMessage(message);

      eventCollection.add(event);

      fireEvent(eventCollection, null);

    }

} 

コード例3:HelloWorldAdapterクラスからの抜粋

ご覧のように、メッセージの送信は単に、サブクラス ActiveAdapterEventインスタンスを作成し、それに値を代入してから fireEvent()を呼び出すことで実行されます。

ここからが本当の始まり

ソフトウェアが正常にインストールされたら、Eclipseで[File]->[New]->[Project]を選択し、[Event Server Application Project]を選択すると作業を開始できます(図6を参照)。

Eclipse HelloWorld IDEの[File]->[New]->[Project]の説明

図6:WebLogic Event Serverプロジェクトの開始

これ以降のウィザードの操作は直観的に行うことができますが、詳細については、BEAソフトウェアに付属の EventServerToolingPreview.Getting.Started.Guide.pdfを参照してください。

ウィザードの手順に従って新しいアプリケーションの名前とTarget WebLogic Event Serverのランタイムを指定し、 さらに重要な作業として、[include the HelloWorld source code]ボックスを選択します。数秒後に、完全に機能するソリューションのデプロイ(公開)に必要なすべてのアーティファクトを備えた新規プロジェクトが、動的に作成されます。

すべてを統合する

この複合イベント処理ネットワークという新しい世界を自由に探訪していただく前に、Eclipse IDE Event Serverプラグインを使用して作成されるアーティファクトの一部を紹介し、推奨事項について少しばかり説明します。

Eclipse HelloWorld IDEのアーティファクトの説明

図7:Eclipse IDEによる迅速なアプリケーション開発

[src]セクションに、Event ServerプロジェクトのJavaコードがあります(HelloWorldソースが表示されない場合、ウィザードで「helloworld」テンプレー トのオプションを選択してこのプロジェクトに追加されるようにしていないと考えられます)。作成したJavaコードを実装するには、まず helloworldBean.javaに移動し、必要に応じてイベントに関連するメッセージ出力を変更します。

[META-INF]セクションの[Spring]の下に、Application Spring Assemblyファイルがあります。ソリューションに含まれるさまざまなノードは、すべてここで結合されます。このファイルでは、強力なコード補完 IDE機能を使用して複合イベント処理ネットワークへの追加項目を作成できます。

最後に、[META-INF]セクションの[wlevs]の下に、EPL定義ファイルがあります。ここでは、数多くのステートメントとそれに関連する句を指定して、(1つ以上のアダプタ経由で)このアプリケーションに入力されるデータに対するクエリを実行できます。

まとめ

アプリケーションの構築は非常に困難な場合があります。特に、WebLogic Event Serverの機能を詳しく知れば知るほど、EDAでOSGiバンドル、Springアセンブリファイル、EPN、その他の複数のコンポーネントを一緒に してナビゲートする必要があるため、楽ではありません。しかし、この最初のプラグインと、まもなく公開される進化した新しいIDE機能セットを使用すれ ば、開発者は新しいWebLogic Event Serverアプリケーションの動的な作成とデプロイを簡素化できるようになります。

この新しいJavaアプリケーションサーバとツールにより、BEAはアーキテクトや開発者に対し、効果的に機能するイベント駆動型SOAソリュー ションを一定のコストおよびインフラストラクチャの範囲内で配備できるような仕組みを提供しています。BEAは、IT部門が新しい種類のサービスやSLA を採用し、それによって収益を向上できるようにサポートします。EDSOAがあるとプロアクティブなオペレーションによって俊敏性が向上するため、組織は 競争力を強化できるとともに運用コストを削減できます。この独自の新しいランタイムとインフラストラクチャがあれば、迅速な開発が可能になり、市場投入ま での時間を大幅に短縮できます。

参考資料

  • 新しいWebLogic Event Server製品センターに、関連する記事、ブログ、スクリーンキャストが多数用意されています。
  • 筆者のブログ:Robin Smith's blog
  • Arch2Archに、イベント駆動型SOAについての2つのインタビュー、「Building an Event-Driven SOA」と「イベント駆動型SOA」が紹介されています。

Robin Smithは、BEA SystemのWebLogic Time and Event Drive(TED)製品ファミリ担当のシニア エンジニアリング プロダクト マネージャです。