Java - Tomcat:重新加载context.xml而不重新启动服务器

时间:2016-01-28 17:08:04

标签: java spring tomcat jndi context.xml

我使用spring mvc和tomcat作为服务器。我希望能够更改自动装配的jndi字段(作为字符串):

<jee:jndi-lookup id="someMessage" jndi-name="someMessage"/>

在我的一个服务中,引用了Tomcat的conf / context.xml,看起来像这样:

<Environment name="someMessage" value="Change this." type="java.lang.String" />. 

但是,当我更改context.xml上的值时,除非我重新启动服务器,否则此更改不会反映在由spring管理的服务上。无论如何反映这种变化而不重新开始或重新部署战争?我知道有一个解决方案,在一个属性文件中包含这样一个动态字段,然后使用commons配置库重新加载更改,但我正在寻找一个解决方案来保持我的conf / context.xml上的这个字段...

2 个答案:

答案 0 :(得分:0)

我认为这是不可能的。为什么不使用属性文件或静态类?

答案 1 :(得分:0)

据我所知,如果你将它放入你的tomcat家的conf/context.xml是不可能的,如下面的文档所示:

  • StandardContext.html#reload():如果context.xml已更改,则应停止此Context并创建(并启动)新的Context实例。 - 即无法通过原始背景实现
  • Reload Existing App:重新加载现有的Web应用程序,以反映/ WEB-INF / classes或/ WEB-INF / lib内容的更改。 - 即不反映context.xml的变化

但是你可以定义你的应用程序/META-INF/context.xml,它将被打包成战争,你可以在没有重启服务器的情况下替换战争。