17.3.3 ユーザファンクションの実装に関する留意事項
ユーザファンクションの実装に関する留意事項を次に示します。
-
ユーザファンクションのデフォルトコンストラクタのアクセス修飾子はpublicにして,EADSサーバから使用できるようにしてください。
-
EADSクライアントからの引数と戻り値は,シリアライズ可能なオブジェクトにしてください。
-
Groupインタフェースを使用してデータを取得する場合,次のどちらかの方法で,オブジェクトをデシリアライズするために十分な内容をクラスパスに追加してください。
-
jarファイルのマニフェストのClass-Path属性にjarファイルのパスを記載する。
-
<運用ディレクトリ>/app/libディレクトリ下にjarファイルを配置する。
-
-
ユーザファンクションのインスタンスは単一であり,複数のEADSクライアントで同時に実行すると,EADSサーバではマルチスレッドで同一のインスタンスを使用します。そのため,ユーザファンクションには次のような処理を実装しないでください。
-
排他制御をしないで,インスタンス変数,static変数を更新する。
-
排他制御をしないで,スレッドセーフでないAPIを使用する。
-
-
FunctionContextと,そこから取得できるオブジェクトの有効範囲は,Functionインタフェースのメソッドの中だけです。これらのオブジェクトを,メソッドの範囲外で参照した場合の動作は保証されません。
-
ユーザファンクション内でスレッドを生成しないでください。スレッドを生成・実行した場合の動作は保証されません。
-
ユーザファンクションのリクエスト1回当たりの実行時間が短くなるよう設計してください。
次のコマンドを実行した際に,ユーザファンクションの実行時間の分だけ,「各処理が完了するまでの時間」および「各処理中に実行したリクエストが完了するまでの時間」が長くなるおそれがあります。
-
次のオプションを指定したezstartコマンド
-rまたは--recovery
-aiまたは--add_id
-apまたは--add_position
-
次のオプションを指定したezserverコマンド
-rまたは--recovery
-aiまたは--add_id
-apまたは--add_position
-
eztool closeコマンド
-
eztool isolateコマンド
-
eztool rebalanceコマンド
-
-
ユーザファンクションは,EADSサーバプロセスで動作するため,カレントディレクトリは運用ディレクトリになります。
-
C言語のクライアントAPからユーザファンクションを実行する場合,ユーザファンクションの戻り値として扱うことができるオブジェクトは,バイト配列とnullだけです。バイト配列およびnull以外のオブジェクトを戻り値とした場合,エラーとなります。
-
C言語のクライアントAPにユーザファンクションの引数を指定する場合,ユーザファンクションで扱うことができるオブジェクトは,バイト配列だけです。