RaSCサービスの実行に用いる,サービス定義XMLの仕様を説明します.
サービス定義XMLは,ユーザプログラムのコマンドラインや,並列実行における並列数などを指定するための設定ファイルです.以下は,最低限の要素を持つサービス定義XMLの例です.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="target" class="jp.go.nict.langrid.servicecontainer.handler.TargetServiceFactory">
<property name="service">
<bean class="jp.go.nict.rasc.wrapper.StandardInputService">
<property name="cmdLine" value="___PATH_TO_PROGRAM___" />
<property name="delimiterIn" value="___INPUT_DELIMITER___" />
<property name="delimiterOut" value="___OUTPUT_DELIMITER___" />
</bean>
</property>
</bean>
</beans>
サービス定義XMLには,大きく分けて以下の2つの要素を指定します.
以下では,それぞれについて説明します.
並列・非並列の設定や,ユーザプログラムとのデータのやり取りの方式は,ユーザプログラムの実行機構を指定することで選択できます.
ユーザプログラム実行機構は, /beans/bean/property[@name='service']/bean/@class (XPathによる記述) に,下記のいずれかを指定することで選択します.
それぞれについて,以下で説明します.
サービス定義XMLには,jp.go.nict.wisdom.wrapper.StandardInputService を指定します.
もっとも標準的な処理を行う機構です.並列化の必要がない場合には,この機構を指定することを推奨します.
サービス定義XMLには,jp.go.nict.wisdom.wrapper.StandardInputParallelArrayService を指定します.
並列化を行うにあたってのもっとも標準的な処理を行います.並列化を行う場合には,この機構を指定することを推奨します.
サービス定義XMLには,jp.go.nict.wisdom.wrapper.StandardInputArrayJoinService を指定します.
String[] analyzeArray(String[]) の実現方法として,String analyze(String) を複数回実行するのではなく, analayzeArray の引数を一つの文字列として結合して,一度の analyze の実行とします.
標準的な analyzeArray では,ユーザプログラムが効率的に実行できず,実行速度が上がらない場合に指定します.
StandardInputArrayJoinServiceの必須パラメータ に示す設定が必要になります.
サービス定義XMLには,jp.go.nict.wisdom.wrapper.StandardInputParallelService を指定します.
/beans/bean/property[@name='service']/bean/ 以下に,下記の形式でパラメータを指定します.
<property name="___PARAM_NAME___" value="___PARAM_VALE___" />
cmdLine: | 起動コマンドを指定.オプション等もここに記述する.ディレクトリ名やファイル名に空白が含まれる場合は,代わりに cmdArray を指定する.両方が指定されるとエラーになる. |
---|---|
cmdArray: | コマンドラインの各要素を list タグ以下の value タグで指定する.実際の記述は 空白を含むディレクトリやファイル名をコマンドラインに指定するには を参照. |
delimiterIn: | 入力の区切り文字.改行は \n とする(実際には環境ごとの改行コードに置き換えられる).本プロパティを指定しない場合は入力ソースがそのまま使用される。 |
delimiterOut: | 出力の区切り文字.改行は \n とする(実際には環境ごとの改行コードに置き換えられる). |
includeDelim: | 出力結果に区切り文字の有無を設定. true にすると,区切り文字も含まれる.例えば,形態素解析器において, delimiterOut を EOS\n にした際に,RaSC非使用時と同様の EOS\n という文字列を末尾に含む結果を得たい場合に true にする. |
---|---|
poolSize: | 起動しておくユーザプログラムのプロセス数を設定.並列実行は,ここで指定した数を上限として行われる. |
initPoolSize: | RaSCサービスの起動直後から,起動しておくユーザプログラムのプロセス数を指定する.ここで指定がない場合,リクエストを受け,そのリクエストを処理するプロセスがない場合に poolSize を上限として,新たなプロセスが生成される. |
pollTimeOut: | 起動したプロセス数が poolSize に達しており,空きプロセスがない場合に待つ時間.ここで指定した時間を経過してもプロセスが空かなければ,エラーが返る. (単位:ms) |
timeOut: | ユーザプログラムからの出力読み出しのタイムアウト.ここで指定した時間を経過しても出力がなければ,エラーが返り,ユーザプログラムは再起動される . (単位: ms) |
startWait: | ユーザプログラムを起動してから,リクエストを受け付けるまでの時間 (単位: ms) |
restartWait: | ユーザプログラムから応答がないなどの理由で,ユーザプログラムを再起動してから,リクエストを受け付けるまでの時間 (単位: ms) |
bufSize: | 入出力のバッファサイズ (単位: byte) |
delLastNewline: | 入力の末尾の改行を削除するかどうかを指定する.一行を1件の入力とするユーザプログラムにおいて, delimiterIn に改行が指定されていると,改行が自動的に付与されるため,入力の末尾に改行があると,改行が重複することになり,エラーになる.これを防ぐ場合に設定する.デフォルトは false . |
directory: | 実行ディレクトリを指定する. |