初めてのWebLogic Event Serverアプリケーションの作成

Robin Smith著
2007年7月16日(翻訳記事2007年12月20日)

要約

SOAの次世代のイベント駆動型リアルタイムJavaコンテナであるWebLogic Event Serverがリリースされました。このコンテナでは、OSGiバンドルと Spring Frameworkという強力な組み合わせによって、ノードのイベント処理ネットワークが使用されます。

この記事では、初めてWebLogic Event Serverアプリケーションを作成する場合の手順を、順を追って説明します。これで、ごく短時間のうちにアプリケーションを作成し、公開(デプロイ)し て、作動させることができます。このチュートリアルを読みとおせば、イベント駆動型のリアルタイムアーキテクチャの設計原則をほぼ理解できたも同然です。

一般的な概念

開発プロセスを開始する前に、ここで基本的な概念を整理しておきましょう。作成するアプリケーションは、複合イベント処理(CEP)ネットワークを モデルとします(図1を参照)。これにより、イベントの作成側と消費側のコラボレーション結果が、以下を反映するノード(段階)とともに収集されます。

  • サービス - アダプタ、ストリーム、およびプロセッサの組み合わせです。
  • ビジネスオブジェクト - サポートされているSpring Framework(Spring Beans)を使用できるPOJO(Plain Old Java Object)です。イベントに対しては、それに対応するビジネスロジックが動作しますが、そのビジネスロジックを維持する「動力」の役を果たします。
  • イベント - イベントネットワークを「横断」し、POJOまたはマップとして表現されます。

図1:イベント駆動型プログラミングモデル

Spring Frameworkによって方向が示される

この新しいJavaコンテナでは、Springが完全にサポートされています。この優れたフルスタックのJavaアプリケーションフレームワークで は、開発の生産性と実行時のパフォーマンスが向上する一方で、テストカバレッジとアプリケーション品質が改善されるという、開発プロジェクトにとって大き なメリットが得られます。

WebLogic Event Serverでサポートされているイベント駆動型プログラミングパラダイムにより、Springベースでアセンブリおよびコンフィグレーションが宣言され る(図2を参照)ため、Springコンフィグレーションファイルでアプリケーションを構成することが可能になります。このファイルで、WebLogic Event Serverサービス用のカスタムSpringタグ、レガシー型のSpring Beansへのシームレスな統合、および追加サービスに対する依存関係の注入機能(例えば、BEA製品ポートフォリオが提供するSOAファブリックによっ て提供される機能)が統合されます。

HelloWorld Springアセンブリ

図2:HelloWorld Springアセンブリファイルの例

イベント処理言語

複合イベント処理(CEP)ネットワークのもう1つの重要な側面は、プロセッサがBEAのイベント処理言語(EPL)を使用して1つ以上の受信デー タストリームから「イベント」を取り出すことです。イベントプロセッサのコンテキストでEPLが使用される点は構造化データのデータベース管理と似ていま すが、その目的はまったく逆です。イベント駆動型アプリケーションの場合、情報が静的に維持されてデータ全体に対するクエリが一時的に 実行される代わりに、クエリが静的に維持されて、データは連続的に変化します。プロセッサ(CEPエンジン)は、EPLを「同化」して因果律を連続的に フィルタリングし、相関分析を行い、管理した上で、データストリームを集約します。これらすべてがソフトウェアによってリアルタイムに実行されます。

EPLは、プロセッサを駆動するSQLに類似したBEAのイベント処理言語です。IF句の代わりにWHEN句を使用することで従来のSQLの機能が 拡張されているため、ストリーミングデータ内にウィンドウを定義する場合に必要となる時間的制約を処理し、そのウィンドウ内でイベントパターンを特定して それに応じた対応を行うことができます。以下にEPLの例を示します。

<n1:config>

  <processor>

    <name>helloworldProcessor</name>

    <rules>

      <rule> 

         select * from HelloWorldEvent retain 1 event </rule>

    </rules>

  </processor>

  <adapter>

    <name>helloworldAdapter</name>

    <message>HelloWorld - the current time is:</message>

  </adapter>

</n1:config>

コード例1:HelloWorldの例で使用されるEPL

コード例1の簡単なEPLステートメントの中にある「retains」句は、クエリによって認識可能なイベントのウィンドウを定義しています。この 例で、retains値の1は各イベントを1度だけ表示することを示します。コード例2に、これらのイベントを処理するコードを示します。

EPLは、受信データからイベントを「抽出」してビジネスロジック(POJO)を起動するために、開発者が広範なクエリを実装できるようにする強力 な言語です。特に素晴らしいのは、EPLがアプリケーションのプログラミング的側面の外側で定義されている点で、そのため開発の生産性や柔軟性を容易に向 上させることができます。実際、関連するアプリケーションの再コンパイル、バンドル、再発行を行わなくてもクエリを動的に変更して、変化する条件や状況に 対してソリューションがリアルタイムに対応できるようにすることが可能です。

プログラミングの概念についての説明は以上です。コードの説明に入る前に、コンテナについて簡単に説明しておきましょう。

イベント駆動型SOAのリアルタイムJavaコンテナ

ここまでの説明で疑問を感じておられるかもしれませんが、BEAが提案しているのは、最先端のJava EE Application Serverへの拡張という従来からある話でもなければ、他の広範な製品群に対するアドオンでもありません。WebLogic Event Serverは、最新のBEA msA(マイクロサービスアーキテクチャ)に基づいてゼロから構築されたまったく新しいJavaコンテナです。この設計の中核にあるのは、高性能リアルタ イムアプリケーションの不可欠の条件である、あらかじめ定められたピークの作業負荷の下でデタミニスティックかつ極めて低いアプリケーションレイテンシを 実現することです。他のソリューションでは、新しい拡張APIや複雑な自己メモリ管理の実装を実現するために開発者がプログラミングを行う必要があります が、この新しいJavaコンテナでは、その目的を達成するために、例えばスレッドコンテキストのスイッチングおよび同期の動的な最小化、I/Oの調整(ソ ケット接続など)、リアルタイムのスケジュール設定方法と効率的なメモリ管理の統合など、開発者のリアルタイムの概念が透過的に導入されています。

このような機能はすべて、イベント駆動型SOA(EDSOA)ファミリのもう1つの製品、WebLogic Real Timeの機能を利用することで強化できます。この製品については別の記事が詳細に説明していますが、低レイテンシ重視のJava仮想マシン(JVM)を 実装したWebLogic Event Server専用の基盤的ランタイムです(図3を参照)。

Event Serverのデタミニスティックなコンテナ

図3:独自のデタミニスティックなJavaランタイムおよびJavaコンテナ

新しいRAD開発環境

以上で、WebLogic Event Serverの新しい概念と実装についての少し面倒な説明は終了です。ここからは、WebLogic Event Server用の迅速なアプリケーション開発(RAD)環境、BEA Eclipseについて紹介していきます。

これらの新しい技術の概念と豊富な機能を知ることは非常に重要ですが、それはそれとしてBEAでは現在、WebLogic Event Serverアプリケーションを動的に構築して公開できる直観的なウィザードのコレクションを提供しています。

初めてEDAアプリケーション(昔の呼び方では「HelloWorld」)を作成する場合、その前に必要なソフトウェアがすべてインストールされていることを確認してください。BEAでは、Eclipse 3.2( WTP込み)を使用し、次に「機能の更新」機能を使用して最新バージョンの Springを 入手することをお勧めしています。これで、再度「機能の更新」でLocal Siteオプションを使用すれば、BEA WebLogic ServerプラグインのカスタムBEA Eclipse Technology Previewをインストールできます(図4を参照)。

Eclipseのインストール機能

図4:WebLogic Event Server Eclipseプラグインのインストール

Pages: 1, 2

Next Page »