如何在运行时更改init参数?

4

如果我修改XML以更改init参数的值,只有在重新部署web应用程序时才会看到更改。

我的问题是,我是否可以通过在运行时设置值来避免这种情况。是否有任何API允许我动态更改值。

3个回答

8

它被称为init-parameter,有其原因。所以你不能。

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

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

2
利用属性文件,编写代码使其可以每次读取该值,或者可以按命令重新加载该值,或者在一定时间间隔内自动重新加载该文件。
如果将属性文件放置在Web应用程序的运行时类路径中,或将其路径添加到Web应用程序的运行时类路径中,则可以轻松地访问/加载它,如下所示:
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("filename.properties"));
String value = properties.get("key");

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接