- PR -

Jmeterを使用したSOAP電文試験

1
投稿者投稿内容
めがねくん
会議室デビュー日: 2008/07/11
投稿数: 2
投稿日時: 2008-07-11 15:00
Windows版のJmeterを使用してSOAP電文の試験を行おうとしています。
サンプラーは「Soap/XML RPCリクエスト」を使用しているのですが以下の点をクリアしたいのですが実現方法がわかりません。

1 文字コードはUTF−8
2 Soap電文内に日本語を含む
3 スレッド毎に電文の内容を一部変更したい(IDの項目など)

上記1&2を試したところ、
Soap/XML RPCデータ欄に直接入力すると、日本語が文字化けしてしまう為、
UTF−8でセーブしたテキストファイルを用意しファイルを読み込ませる事でクリアできました。

上記3は、ユーザパラメータを使用することでクリアできました。

のですが、UTF−8でセーブしたテキストファイルにユーザパラメータ置換用文字列(${ })を記述したのですが、変換をしてくれません。

全ての条件を満たす方法をご存知の方がいらっしゃいましたらご教授願います。
よろしくお願いします。
めがねくん
会議室デビュー日: 2008/07/11
投稿数: 2
投稿日時: 2008-09-24 02:06
自己レスです。といっても現場で解決していただいたのですが・・・・

ファイル名を指定した場合
「Soap/XML-RPCリクエスト」サンプラーの入力画面の「ファイル名」項目にSoap電文データ・ファイルを指定した場合には、以下の動作となる。
プログラム(SoapSampler#sendPostDataメソッドの部分)

public void writeRequest(OutputStream out) throws IOException {
byte[] buf = new byte[1024];
// 1k - the previous 100k made no sense (there's tons of buffers
// elsewhere in the chain) and it caused OOM when many concurrent
// uploads were being done. Could be fixed by increasing the evacuation
// ratio in bin/jmeter[.bat], but this is better.
int read;
InputStream in = new FileInputStream(xmlFile);
while ((read = in.read(buf)) > 0) {
out.write(buf, 0, read);
}
in.close();
out.flush();
}

8行目 FileInputStreamオブジェクトを作成し、ファイルをオープンする。FileInputStreamオブジェクトは、ファイル内のエンコードに依存せず、バイト単位でデータを読み込む
9行目 1024バイト単位でファイルから、データを読み込む(文字コード変換は行わない)
10行目 書込み先(out)へ、読み込んだデータをそのまま書き込む上記繰り返し
入力項目に直接XMLデータを書き込んだ場合「Soap/XML-RPCリクエスト」サンプラーの入力画面の「Soap/XML-RPCデータ」項目にSoap電文データを直接指定した場合には、以下の動作となる。

□「Soap/XML-RPCデータ」項目の文字化け
 「Soap/XML-RPCデータ」項目の文字化け発生原因の調査結果は以下の通りである。

プログラム(SoapSampler#sendPostDataメソッドの部分)
public void writeRequest(OutputStream out) throws IOException {
PrintWriter printer = new PrintWriter(out);
printer.print(getXmlData());
printer.flush();
}

プログラム(SoapSampler#getXmlDataメソッド)
public String getXmlData() {
return getPropertyAsString(XML_DATA);
}

入力されたデータはJava標準の文字列(String型=UNICODE)として保存され、PrintWriterオブジェクトのprintメソッドにより出力されている。PrintWriter#print(String)メソッドはJavaVM標準のエンコードで出力される(Windows環境ではMS932)。このため、Soap電文内の日本語はShift_JIS(MS932)で送信されると思われる。JMeter起動プログラム(jmeter.bat)内の「%JVM_ARGS%」に「-Dfile.encoding=utf-8」を指定することで、標準エンコードをUTF-8に変更することができる。
1

スキルアップ/キャリアアップ(JOB@IT)