改变一个JAR / WAR文件config.properties文件在运行时和hotdeploy的变化? 我的要求是什么如下,我们有一个JAR / WAR文件“config.properties”,我有通过网页打开文件,并且用户已经作出的一些必要的修改之后,我必须更新“的配置。在JAR / WAR文件并热部署它的属性”。 我们能够实现这一壮举? 如果是的话可以请你点我到相关网站/文件,这样我可以在此快速启动。
Answer 1:
我会强烈建议你重新考虑architecht这个解决方案。 你描述的应该通过JNDI或类似的技术来完成,而不是通过重装性能。
部署应该考虑静态的 - 任何给定的Web容器允许魔法欺骗不应该依赖,并且将打破一些天(最有可能在最不方便的时候)。
Answer 2:
你有一对夫妇把我的头顶部的问题:
确保没有什么是抱着
static
引用一个java.util.Properties
先前已加载的config.properties
文件。大多数servlet引擎将解开你的战争到工作目录,这样的属性文件加载不会是一个在战争中,这将是一个解压。 这意味着当您重新启动servlet引擎 ,因为这是通常的战争解开其中一个点的更改将被覆盖。
虽然这些问题并非不可逾越我总是发现它更容易通过存储在JNDI属性(如托尔比约恩建议)或数据库(同时注意有关我在第1点中提到的静态引用)实施这种行为。
该JNDI /数据库解决方案具有轻松部署到多个环境,因为每个通常都有它自己的注册表/数据库的很好的副作用。
Answer 3:
即使我同意上司的评价之前解释的,我可以建议一个解决方案:
Apache的共享配置扩展给你posibility做这样的事情:
config.setReloadingStrategy(new FileChangedReloadingStrategy());
这可能使的伎俩在所有更改运行时间为基础的配置文件,没有密码。
然而,像JNDI和Web应用程序配置的其他方法,安全性是一个问题。 要小心哪些参数可以/必须能够配置。
文章来源: change a config.properties file in a jar / war file in runtime and hotdeploy the changes?