CEPエンジンにイベントを送信するアプリケーションを実装します。
利用する、入力アダプターの種類にあわせた実装を行います。
入力アダプターの種類ごとのサンプルプログラムについては「開発リファレンス」の「第3章 入力アダプター機能リファレンス」を参照してください。
SOAPリスナから呼び出すWebサービスのアプリケーションを実装します。
Webサービス実装手順について説明します。
WSDLの作成
SOAPリスナ定義で設計した、呼び出すWebサービスのインターフェース情報(WebサービスのURL、名前空間、プレフィクス、メソッド)と、複合イベント処理文(select文)で選択列としたパラメーターから、ユーザー開発アプリケーションのWSDL(インターフェース定義)を作成します。
目的とするイベントを検出するための複合イベント処理文(select文)と、そのルールに関連付けたSOAPリスナ定義、および、SOAPリスナから生成されるSOAPメッセージの関係を以下に示します。
図5.5 ルール定義およびリスナ定義と、送付されるSOAPメッセージの対応関係
このSOAPメッセージを受け取るWebサービスのWSDLのサンプルを以下に示します。このWSDLはメッセージを受け取るだけ(One-way)のWebサービスを定義しています。アプリケーションに応答を返す(Request-response)Webサービスとして実装した場合、CEPエンジンはその応答を無視します。
001 | <?xml version='1.0' encoding='UTF-8'?> |
上記WSDLの下線部分を、ルール定義、SOAPリスナ定義に合わせて以下のように修正することによって、作成するWebサービスの雛形を生成するためのWSDLとして利用できます。
003、005、011行目
WSDLの対象名前空間(definitions要素のtargetNamespace属性)、対象名前空間の接頭辞の宣言(definitions要素のxmlns:tns属性)、WSDL中のXMLスキーマの対象名前空間(types要素中のxs:schema要素のtargetNamespace属性)をSOAPリスナ定義の名前空間の値にします。
012、025行目
WSDL中のXMLスキーマで定義するメッセージのルート要素の名前(types要素中のxs:schema要素中のxs:element要素のname属性)、WSDLのメッセージとして定義している要素(message要素のpart要素のelement属性)をSOAPリスナ定義のルート要素の値にします。
015、016行目
WSDL中のXMLスキーマで定義するルート要素の子要素の名前(types要素中のルート要素定義配下のxs:element要素のname属性)を、複合イベント処理文(select文)の出力プロパティ名にします。
出力するプロパティの数だけ同様の行を作成します。この要素のタイプ(xs:element要素のtype属性)については、上記の例では文字列(xs:string)を指定しています。プロパティのタイプに合わせて適切に設定しておくことにより、ご利用のツールによってはタイプに応じたソースコードを生成してくれるため、プログラム中での型変換が不要となります。
047行目
最終的なサービス公開用のWSDLでは、service要素配下のsoapbind:address要素のlocation属性に、実際のサービスのURLが入り、これはリスナ定義の接続URLの値にもなります。しかし、開発時には、この接続URLは決まっていない場合も多いため、上記サンプルのままでも問題ありません。
Webサービスのアプリケーションの実装
作成したWSDLを元に、お使いの開発ツールからWebサービスのアプリケーションの雛型を出力し、そこにアプリケーションのロジックを追加します。
CEPエンジンのカスタムリスナ経由で呼び出される、ユーザー開発Javaクラスを実装します。
ユーザー開発Javaクラスは、次のインターフェースを実装します。
com.fujitsu.cspf.cep.CustomListener
インターフェースの実体は、CEPサーバの/opt/FJSVcep/cep/lib/CepServerCustom.jarに含まれています。CepServerCustom.jarをお使いのJava開発環境にコピーし、クラスパスを設定して開発を行ってください。
ユーザー開発Javaクラスからカスタムリスナ用のログファイル(カスタムログ)へのログ出力が可能です。カスタムログの出力先は次の通りです。
/var/opt/FJSVcep/cep/cep/logs/EngineLog/CEPエンジン名/custom.log
出力方法
実装には、Apache Log4jのクラス(org.apache.log4j.Logger)を使用します。
以下のメソッドでログ出力インスタンスを取得します。("custom"は固定です)
Logger myLogger = Logger.getLogger("custom");
参考
Apache Log4jのjarファイルは/opt/FJSVcep/log4j/lib/log4j-1.2.16.jarにあります。
Loggerクラスのfatal、error、warn、infoメソッドを使用してログ出力します。
myLogger.error("xxxxxx");
注意
org.apache.log4j.Loggerクラスのtraceおよび、debugメソッドは利用できません。
作成したソースコードはコンパイルして、クラスファイルまたはjarファイルを生成する必要があります。
JDK7以降のjavacを使用する場合は「-target 1.6」をオプションに指定してコンパイルしてください。
イベントログを分析するアプリケーションを実装します。アプリケーションはHadoopのAPIを使用して実装します。詳細は、Interstage Big Data Parallel Processing Serverのマニュアルを参照してください。
Terracottaアプリケーションを実装します。詳細については、Interstage Terracotta BigMemory Maxのマニュアルを参照してください。