[Seasar-user:18580] Re: 【S2Config】環境設定に依存した設定情報の読み込みがうまくいかない

黒瀬健二 [E-MAIL ADDRESS DELETED]
2009年 10月 5日 (月) 13:53:49 JST


加藤さん



黒瀬です。お世話になっております。
s2config-exampleをベースに、現象が再現する編集を加えた
プロジェクトを添付いたします。

編集点は以下になります。

・src/resources/log4j.propertiesに以下を追記
  env=test
・src/resources/log4j_test.propertiesを追加

上記の変更のみで、Log4JConfigTestをJUnitで実行すると
処理が返ってこなくなります。
(マシンの挙動からすると無限ループに陥っているように見えます。)

ちなみに、Log4JConfigクラスをプロジェクトから削除し
Log4JConfigTestクラスにコメントアウトしてある下記のメソッドを
有効にして実行すると期待通りの挙動をします。

@Test
public void test2() {
	ConfigContainer config = SingletonS2Container
			.getComponent(ConfigContainer.class);
	System.out.println(config.getConfigValue(String.class,
			"log4j.category.org.seasar"));
			
	⇒期待通りにlog4j_test.propertiesの設定値「INFO, C」が取得できる。
}

もし私のほうに認識違いがあればご指摘頂けると幸いです。
以上、よろしくお願い致します。

2009年10月2日22:50 Junichi Kato <[E-MAIL ADDRESS DELETED]>:
> 黒瀬さん
> 加藤です。
>
> お待たせしてます。やっと時間がとれたので確認させてください。
>
> 2009年9月17日13:40 黒瀬健二 <[E-MAIL ADDRESS DELETED]>:
>> お世話になっております。黒瀬と申します。
>>
>>
>> S2Configを利用させて頂いています。
>> 環境依存に対応した設定情報を扱いたかったので、マニュアルを
>> 参照して動作確認を行ったのですが、うまく動作しない場合が
>> ありました。
>>
>> コンフィグコンテナのみの利用で動作させると問題ないのですが
>> コンフィグクラスを定義すると、当該クラスのコンポーネント定義
>> から処理が返ってこなくなってしまいました。
>>
>> 関連ファイルの記述を下記に記します。
>> (S2Configの設定自体はマニュアル通りに行っております。)
>>
>> ■設定ファイル1:app.properties
>>  env=test
>>  sample1=hoge1
>>  sample2=hoge2
>>
>> ■設定ファイル2:app_test.properties
>>  sample1=hoge11111
>>  sample2=hoge22222
>>
>> ■コンフィグクラス:AppConfigクラスの定義
>>
>>  @Config(name = "app")
>>  public class AppConfig {
>>
>>    @ConfigKey(name = "sample1", readOnly = true)
>>    public String sample1;
>>
>>    @ConfigKey(name = "sample2", readOnly = true)
>>    public String sample2;
>>  }
>>
>> ■メインプログラム
>>  public static void main(String[] args) {
>>
>>    SingletonS2ContainerFactory.init();
>>    ConfigContainer config = SingletonS2Container
>>                                .getComponent(ConfigContainer.class);
>>    System.out.println(config.getConfigValue(String.class, "sample1"));
>> }
>>
>> ■上記メインプログラムを実行した場合のログ
>> 2009-09-17 12:43:54,125 [main] DEBUG org.seasar.framework.env.Env -
>> 環境変数#Envにファイル(env.txt)から値(ct)が設定されました
>>                                         <<<<<<<< 途中省略 >>>>>>>>
>> 2009-09-17 12:43:54,781 [main] DEBUG
>> org.seasar.framework.container.util.S2ContainerUtil -
>> クラス(org.s2.config.test.config.AppConfig[appConfig])のコンポーネント定義を登録します
>> (ここから処理が返ってこなくなる)
>
> 上記のConfigContainerに対応するdicon上での定義はありますでしょうか?
>
>>
>> ※ちなみに、AppConfigクラスの定義をプロジェクトから削除してプログラムを
>> 実行すると、test環境の設定が適用され正常に「hoge11111」が表示されます。
>
> ちなみに、config.getConfigValue(String.class, "sample1")は、常にhoge1を返すはずなんですが、、、
> envで上書きしたプロパティを取得するには、findAllConfigValueメソッドになります。
>
> 申し訳ありませんが、s2config-exampleを基に、再現する簡単なソース一式を送ってもらえないでしょうか?
> それで確認したほうが早いと思います。
> よろしくお願い致します。
>
>>
>> 実行環境については以下の通りです。
>>     JDK: 1.6.0_14
>>      S2: 2.4.38 (Smart Deploy)
>> S2Config: 1.0.1
>>
>> ご確認して頂けると幸いです。
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: s2config-example.zip
Type: application/zip
Size: 12833 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20091005/53e4896a/attachment.zip>


Seasar-user メーリングリストの案内