Java - Tomcat: Reload context.xml without restarting server

泪湿孤枕 提交于 2021-02-11 15:19:28

问题


I'm using spring mvc and tomcat as a server. I want to be able to change a jndi field that is Autowired(as String):

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

in one of the my services, that is referenced to conf/context.xml of Tomcat, that looks something like this:

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

However, when I change the value on context.xml, this change is not reflected on my service managed by spring, unless I restart server. Is there anyway to reflect this change without restarting or redeploying war? I know there is a solution to include such a dynamic field in one of properties file and then use commons configuration library to reload the changes, but I'm looking for a solution to keep this field on my conf/context.xml...


回答1:


I think that is not possible. Why don't use a property file or a static class?




回答2:


As far as I know, it's impossible if you put it into the conf/context.xml of your tomcat home as the following doc shows:

  • StandardContext.html#reload(): If the context.xml has changed, you should stop this Context and create (and start) a new Context instance instead. -- i.e. can't achieve by original context
  • Reload Existing App: Reload an existing web application, to reflect changes in the contents of /WEB-INF/classes or /WEB-INF/lib. -- i.e. not reflect the change of context.xml

But you can define your app's /META-INF/context.xml, which will be packed into war and you can replace war without restart server.



来源:https://stackoverflow.com/questions/35067651/java-tomcat-reload-context-xml-without-restarting-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!