9. 外部環境プロパティ

9.1. 概要

外部環境プロパティとは、 開発するアプリケーションが Web サービスや外部のWeb ページなどの外部リソースを利用している場合に、 外部リソースに関する情報をまとめたものです。 WebOTX Developer (with Developer's Studio)では、外部リソースの参照先をあとから自由に変更する機能等、 外部環境プロパティを便利に使うための機能を提供しています。 外部環境プロパティは、WebOTX Developer (with Developer's Studio) の独自機能ですが、 一般的なプロパティファイルを用いて実現されています。

外部環境プロパティを利用することにより、開発用と本番用の二種類のサーバーで開発していた場合にも、 再コンパイルの必要なく参照先を切り替えることができます。 また、ネットワーク構成の変更時や、障害時などにも、外部リソースの参照先を切り替えることができます。

9.2. 外部環境プロパティをプロジェクトに追加

外部環境プロパティの設定方法について説明します。

サポートしているプロジェクトは下記になります。

サポートするプロジェクトの右クリックメニューから、構成 > 外部環境プロパティの設定 を選択します。


図9.2-1

外部環境プロパティの設定 ウィザードで外部環境プロパティを設定します。


図9.2-2

表9.2-1
項目 デフォルト値 説明
ソース・フォルダ プロジェクト名 + "/src" 外部環境プロパティファイル、及び、アクセサ・クラスを生成するソース・フォルダを指定します。
リソース・バンドル・アクセサ・クラスのパッケージ webotx.ds アクセサ・クラスのパッケージを指定します。
リソース・バンドル・アクセサ・クラスのクラス ExternalEnvironment アクセサ・クラスのクラス名を指定します。
プロパティ・ファイルのパッケージ webotx.ds 外部環境プロパティファイルを生成するパッケージ名を指定します。
プロパティ・ファイル名 otx-env.properties 外部環境プロパティファイルのファイル名を指定します
キー / 値 ExternalEnvironment_数字 / 空文字 外部リソースに関するプロパティを設定します。 追加ボタンを押すと項目を追加できます。

完了をクリックします。 プロパティ・ファイル名 で指定したパスに外部環境プロパティファイルを作成し、テーブルで表示されているキー / 値をファイルに記録します。 同時に、選択したプロジェクトの .settings フォルダ配下に com.nec.webotx.environment.resource.prefs という名前のファイルが生成されます。 このファイルは当該のプロジェクトの外部環境プロパティの機能に関する情報を記録するファイルです。


図9.2-3

Memo
外部環境プロパティを、チーム開発で共有する場合には、.settings フォルダも 版管理に含めてください。

Memo
外部環境プロパティの設定が完了しているプロジェクトに外部環境プロパティの設定を再設定することはできません。プロパティ・ファイル名等を変更したい場合は、com.nec.webotx.environment.resource.prefsファイルを修正してください。

外部環境プロパティウィザードで表示されるデフォルトのパッケージ名の変更方法について説明します。
メニュー ウィンドウ > 設定 > WebOTX を選択します。 デフォルトのパッケージ名はここで設定することができます。


図9.2-4

9.3. 外部環境プロパティをソースコードで利用

ソースコード中で外部環境プロパティに設定した値を利用する方法について説明します。
Javaエディターの右クリックメニューから、 ソース > 外部情報プロパティ取得ソースの生成 をクリックします。


図9.3-1

外部環境プロパティ取得ソースの生成を選択すると、 外部環境プロパティが設定済みの場合、 外部環境プロパティ取得ソースの生成 ダイアログが表示されます。


図9.3-2

選択した後でOKをクリックすると、 javaファイルに選択した位置で下記のようなソースを追加します。

final String [変数名] = <アクセサー・クラス名>.getProperty(“[選択したプロパティのキー]”);

アクセサー・クラスのインポート文が不足する場合には Ctrl + Shift + O を押すことで、自動的にインポート文が追加されます。

また、追加削除 をクリックすると、プロパティの 追加と削除が行えます。

外部環境プロパティが未設定の場合、外部環境プロパティが設定されていません ダイアログが表示されますので、外部環境プロパティの設定を行ってください。


図9.3-3

外部環境プロパティが設定されている場合でも、設定されたファイルが存在しない場合にも、 ダイアログが表示されますので、外部環境プロパティの再設定を行ってください。


図9.3-4

9.4. 外部環境切り替えコマンド

外部環境切り替えコマンドは、JAR や WAR ファイルなどのアーカイブファイルに含まれる外部環境プロパティファイルを 後から差し替えるための CUI ツールです。以下の2つの機能を提供します。

外部環境切り替えコマンドを利用する場合には、 WebOTX Developer (with Developer's Studio) の WebOTX プラグインに含まれる JAR を利用します。

JAR ファイルの位置:

${AS_INSTALL}/Studio/plugins/com.nec.webotx_x.xx.x.xx/lib/dstool.jar

以下では、dstool.jar のパスを ${DSTOOL_PATH} として説明します。

本コンポーネントの利用は、以下のようなコマンドを実行します。 プロパティファイルに関する機能は、property-util というサブコマンドを利用します。 以下はヘルプを表示するコマンドです。

java -jar ${DSTOOL_PATH} property-util --help

9.4.1. プロパティファイルの内容の表示

アーカイブファイル内のプロパティファイルの内容を表示する方法について説明します。 プロパティファイルの内容を表示するためには、--list オプション、 または、--listtarget オプションを利用します。

9.4.1.1. list オプション

--list オプションは、アーカイブファイルに含まれるプロパティファイルの一覧を表示し、 一覧の中から表示するプロパティファイルを選択して表示するオプションです。

java -jar ${DSTOOL_PATH} property-util --list ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --list target.jar

コマンドを実行すると、以下のようにアーカイブファイルに含まれるプロパティファイルの一覧が表示されます。

0. webotx/ds/messages.properties
1. webotx/ds/messages_ja.properties
2. webotx/ds/otx-env.properties

>_

内容を表示したいプロパティファイルの番号を入力し、エンターキーを押してください。

9.4.1.2. listtarget オプション

--listtarget オプションは、アーカイブファイルに含まれるプロパティファイルのパスをあらかじめ指定し、 プロパティファイルの内容を表示するオプションです。

java -jar ${DSTOOL_PATH} property-util --listtarget ${アーカイブファイルに含まれるプロパティファイルのパス} ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --listtarget webotx/ds/otx-env.properties target.jar

アーカイブファイルに含まれるプロパティファイルのパスは、 --list オプションで表示されるパスです。

Memo
アーカイブファイルに含まれるプロパティファイルのディレクトリ区切り文字は "/" を使用してください。

9.4.1.3. recursive オプション

--recursive オプションは、例えば WAR ファイルの中に JAR ファイルを含むような、 入れ子になったアーカイブファイルを扱うためのオプションです。--list オプションと 同時に指定します。

java -jar ${DSTOOL_PATH} property-util --list --recursive ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --list --recursive target.jar

--recursive オプションを指定すると、 入れ子になったアーカイブファイルも一覧に表示されます。 アーカイブファイルはディレクトリと同様に扱われます。 本ツールが、アーカイブファイルとして扱うファイルの拡張子は .jar .war .rar .ear の4つです。

0. webotx/ds/messages.properties
1. webotx/ds/messages_ja.properties
2. webotx/ds/otx-env.properties
3. lib/lib.jar/webotx/ds/otx-env.properties

>_

プロパティファイルの内容を表示する方法は、--recursive オプションを指定しない場合と同様に、 表示したいプロパティファイルの番号を入力し、エンターキーを押してください。

9.4.2. プロパティファイルの変更

アーカイブファイル内のプロパティファイルの内容を変更する方法について説明します。 プロパティファイルの内容を変更するためには、--modifyfile オプション、 及び、--modifytarget オプションを利用します。

9.4.2.1. modifyfile オプション

--modifyfile オプションは、アーカイブファイルに含まれるプロパティファイルを変更するオプションです。 ローカルのプロパティファイルを指定すると、指定したファイル名と同じ名前のプロパティファイルを アーカイブファイルの中から検索し、ファイルを差し替えます。 アーカイブファイルは上書きされます。エラーメッセージが表示されなければコマンドは成功です。

java -jar ${DSTOOL_PATH} property-util --modifyfile ${ローカルのプロパティファイル} ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --modifyfile C:\otx-env.properties target.jar

この例では、アーカイブファイルに含まれる otx-env.properties というファイルが差し替えられます。

複数のプロパティファイルを同時に変更することもできます。 同時に変更したい場合には、--modifyfile オプションの引数にパス区切り文字で連結した ファイルパスを指定します。パス区切り文字は、Windows をお使いの場合は ";"(セミコロン) 、 それ以外の OS をお使いの場合は ":" (コロン)を利用してください。

java -jar ${DSTOOL_PATH} property-util --modifyfile ${ローカルのプロパティファイル1}${パス区切り文字}${ローカルのプロパティファイル2}... ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --modifyfile C:\otx-env.properties;message.properties target.jar

この例では、アーカイブファイル中の otx-env.properties と message.properties の2つが差し替えられます。

Caution
パスに区切り文字を含むファイルは扱えません。パスに区切り文字を含まないようにしてください。

9.4.2.2. modifytarget オプション

--modifytarget オプションは、アーカイブファイルに含まれるプロパティファイルの 変更対象を指定するオプションです。 同じ名前のプロパティファイルが複数含まれる場合や、アーカイブファイル中のプロパティファイルの名前と ローカルのプロパティファイル名が異なる場合に利用できます。

java -jar ${DSTOOL_PATH} property-util --modifyfile ${ローカルのプロパティファイル} --modifytarget ${アーカイブに含まれるプロパティファイルのパス} ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --modifyfile C:\otx-env-backup.properties --modifytarget webotx/ds/otx-env.properties target.jar

この例では、アーカイブファイル中の otx-env.properties をローカルの otx-env-backup.properties というファイルで差し替えています。

複数のプロパティファイルを指定することもできます。 --modifyfile オプションと同様に、パス区切り文字で連結したファイルパスを指定してください。

java -jar ${DSTOOL_PATH} property-util --modifyfile ${ローカルのプロパティファイル1}${パス区切り文字}${ローカルのプロパティファイル2}... --modifytarget ${アーカイブに含まれるプロパティファイルのパス1}${パス区切り文字}${アーカイブに含まれるプロパティファイルのパス2}... ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --modifyfile C:\otx-env.properties;C:\otx-env-backup.properties --modifytarget webotx/ds/otx-env.properties;lib/lib.jar/webotx/ds/otx-env.properties target.jar

この例では、webotx/ds/otx-env.properties は C:\otx-env.properties で lib/lib.jar/webotx/ds/otx-env.properties は C:\otx-env-backup.properties で、それぞれ差し替えられます。

9.4.2.3. recursive オプション

--recursive オプションを、利用することもできます。 --recursive オプションを指定すると、入れ子になったアーカイブファイルも変更対象となります。

java -jar ${DSTOOL_PATH} property-util --recursive --modifyfile ${ローカルのプロパティファイル} ${対象のアーカイブファイル}

実行例:

java -jar ${DSTOOL_PATH} property-util --recursive --modifyfile C:\otx-env.properties target.jar

この例では、target.jar が webotx/ds/otx-env.properties と lib/lib.jar/webotx/ds/otx-env.properties の2つの otx-env.properties を含んでいるため、 コマンドは失敗します。