如何在运行时更改init-parameters?

时间:2010-01-15 06:05:29

标签: java servlets

如果我修改XML以更改init参数的值 我只在重新部署网络应用时看到了这些变化。

我的问题是我无法通过在运行时设置值来解决这个问题。是否有任何API允许我动态更改值。

3 个答案:

答案 0 :(得分:8)

出于某种原因,它被称为init-parameter。所以,你不能。

但是你可以在运行时更改值,这没问题。

  1. 阅读init参数后,将它们作为ServletContextctx.setAttribute("name", value))的属性
  2. 创建一个小的(受密码保护的)页面,列出ServletContext的所有属性,并提供更改它们的功能。

答案 1 :(得分:2)

也许你可以使用apache commons configuration,特别是看看Automatic Reloading ...

答案 2 :(得分:2)

改为使用properties files并编写代码,以便1)每次从中读取值,或者2)可以在命令中重新加载值,或者3)以特定间隔自动重新加载文件。

如果将属性文件放在webapp的运行时类路径中的某个位置或将其路径添加到webapp的运行时类路径中,则可以按如下方式轻松访问/加载它:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("filename.properties"));
String value = properties.get("key");