2011-05-20 40 views
3

我有一个Web应用程序,我希望通过外部文件夹(容器外部和.war文件)中的设置进行配置。因此,我想只注入一个设置到我的webapp中,这是我配置的根文件夹。这样做的原因是维护团队可以在纯文本文件中更新配置设置,而无需重新部署war文件。如何参数化Web应用程序(不是servlet)的初始化

我的问题是,在只有一个配置设置的情况下,参数化Web应用程序的最佳方式是什么。我知道我可以使用JVM arg,然后从初始化servlet中检测它。理想情况下,我想要一些我可以放在server.xml(不是web.xml文件)中的东西,它可以通过我的ServletContextListener.contextInitialized(ServletContextEvent paramServletContextEvent)方法以编程方式获得。

有没有办法做到这一点使用ServletContextListener方法或是另一种方式?

回答

3

我们正在使用-Dconfig.location=/foo/bar/config.properties,它工作正常。这是一个JVM参数,所以它转到启动脚本。

你可以在server.xml中通过JNDI注册属性,但我不相信这是一个更好的选择。 server.xml或catalina.sh - 都是容器级别

+2

要检索它,请使用System#getProperty(“config.location”)'。 – BalusC 2011-05-20 12:32:30

+0

嗨,我试图避免使用JVM参数(如问题中所述)。有没有一种在每次战争的基础上传递参数的方法(通过server.xml文件)? – Chris 2011-05-20 16:20:25

+0

@Chris - 看到更新。 – Bozho 2011-05-20 16:23:17