1

Java Web アプリケーションを使用している場合、アプリのデプロイ時に一度だけプロパティ ファイルを読み取るにはどうすればよいでしょうか (後でそれらをシングルトンに保存します)。つまり、構成の変更には再デプロイが必要になります。

それ以外の場合、アプリが常に .properties ファイルを読み取らないようにする別の方法はありますか? 以前は web.xml ファイルに設定がありましたが、現在は .properties が必要です。

JBoss 構成パスからアプリ設定を読み取るために使用されるコード:

File f = new File(System.getProperty("jboss.server.config.dir"), 
                  "myappsettings.properties");
Properties p = new Properties();
p.load(new FileInputStream(f));
try {
   db_name = p.getProperty("DATABASE_NAME"));
   file_path = p.getProperty("FILE_PATH"));
   ...
} catch (Exception e) {
   ...
}
4

2 に答える 2

4

JEE6 以降、ServletContextListener の別の代替手段として、シングルトン スタートアップ Bean を使用できます。

@Singleton
@Startup    
public class PropertyRegistry {

  @PostConstruct
  private void init(){
    //do something
  }
}
于 2012-08-14T08:28:14.907 に答える
3

独自の実装ServletContextListener:

public class PropertiesReadingListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent event) {
        //read properties here...
        event.
          getServletContext().
          setAttribute("db_name", p.getProperty("DATABASE_NAME"));
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {
    }
}

でこのクラスを参照する必要がありますweb.xml:

<listener>
    <listener-class>com.example.PropertiesReadingListener</listener-class>
</listener>
于 2012-08-14T08:18:19.623 に答える