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 回答