サンプルプログラムのソースコード:
1 | import java.io.BufferedOutputStream; |
ソースコードについて解説します。
mainメソッド
30行目から37行目
実行時の引数から以下を取得します。
引数 | 変数 | 用途 |
---|---|---|
1 | hostName | CEPサーバのホスト名 |
2 | engineName | CEPエンジン名 |
3 | dataType | イベントデータ形式 |
4 | charSet | 文字セット |
5 | eventTypeId | イベントタイプID |
6 | data | イベントデータ本体 |
7 | lWait | データ送信待ち時間 |
8 | loop | データ送信回数 |
39行目
自身のオブジェクトを生成します。
40行目
送信用メソッドを呼び出します。
引数にはイベントデータ本体、文字セット、データ送信回数、データ送信待ち時間を渡します。
HttpClientコンストラクタ
49,50行目
引数からエンドポイントアドレスを作成します。
52行目
URLオブジェクトを生成します。
openメソッド
62行目
URLオブジェクトから接続先のHttpURLConnectionを作成します。
64行目
POSTメソッドを利用してSOAPメッセージを送信するため、HTTPのメソッドにPOSTを指定します。
65行目
リクエストヘッダーにTYPEを設定します。
66行目
リクエストヘッダーにEVENT-TYPE-IDを設定します。
68から75行目
content-typeを設定します。イベントデータ形式がCSVの場合はtext/plain、XMLの場合はtext/xmlを設定します。また、イベントデータの文字セットを設定します。
77行目
出力するためのフラグをセットします。
78行目
データ送信先に接続します。
sendMessageメソッド
91行目から114行目
引数で指定したデータ送信回数分のループです。
92行目
openメソッドを実行しデータ送信先に接続します。
93行目
BufferedOutputStreamを取得します。
95行目
イベントデータ本体に含まれる %COUNTER% をループ回数で置換します。
これは、毎回異なるイベントデータを送信するための措置です。
以下のようなイベントデータを想定しています。
"STR0001","CPN0001",%COUNTER%,"30"
96行目
データを指定した文字コードでwriteします。
98行目
BufferedOutputStreamをflushします。
99行目
BufferedOutputStreamをcloseします。
101,102行目
HttpURLConnectionからInputStreamを取得し、BufferdReaderを作成します。
106行目
BufferdReaderから送信結果を標準出力に書き出します。
109,110行目
InputStreamとBufferdReaderをcloseします。
112行目
HttpURLConnectionを切断します。
113行目
次のイベントデータの送信までwaitします。
サンプルの実行例を以下に記述します。
なお、例ではDebugLogListenerを使用し、エンジンログにデバッグ情報を出力しています。
コマンド実行結果
# java -cp ./ HttpClient localhost CepEngine CSV UTF-8 CSVEvent HTTP,CSV,%COUNTER% 1 3 <ENTER>
Code=0 Message=Sending message completed normally.
Code=0 Message=Sending message completed normally.
Code=0 Message=Sending message completed normally.
エンジンログ出力結果
2012-07-29 13:05:02,954 [DEBUG] abc:length=1
abc[0]
operation :CSV: String
count :0: String
ID :HTTP: String
2012-07-29 13:05:03,027 [DEBUG] abc:length=1
abc[0]
operation :CSV: String
count :1: String
ID :HTTP: String
2012-07-29 13:05:03,108 [DEBUG] abc:length=1
abc[0]
operation :CSV: String
count :2: String
ID :HTTP: String
サンプルの実行例を以下に記述します。
なお、例ではDebugLogListenerを使用し、エンジンログにデバッグ情報を出力しています。
コマンド実行結果
# java -cp ./ HttpClient localhost CepEngine XML UTF-8 XMLEvent '<?xml version="1.0" encoding="UTF-8"?>\
<XMLEvent><ID>HTTP</ID> <operation>XML</operation> <count>%COUNTER%</count></XMLEvent>' 1 3 <ENTER>
Code=0 Message=Sending message completed normally.
Code=0 Message=Sending message completed normally.
Code=0 Message=Sending message completed normally.
(注) 見やすさのため、上記の例では入力コマンドの途中で「\」で改行しています。実際には「\」は入力せず、次の行の内容を続けて入力します。
エンジンログ出力結果
2012-07-29 13:07:32,670 [DEBUG] abc--0:length=1
abc--0[0]
operation :XML: String
count :0: String
ID :HTTP: String
2012-07-29 13:07:32,685 [DEBUG] abc--0:length=1
abc--0[0]
operation :XML: String
count :1: String
ID :HTTP: String
2012-07-29 13:07:32,698 [DEBUG] abc--0:length=1
abc--0[0]
operation :XML: String
count :2: String
ID :HTTP: String