有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

SpringJavaTomcat:重新加载上下文。不重新启动服务器的xml

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

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

在我的一个服务中,它被引用到conf/context。Tomcat的xml,如下所示:

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

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


共 (2) 个答案

  1. # 1 楼答案

    据我所知,如果你把它放在tomcat主页的conf/context.xml中是不可能的,如下文档所示:

    • StandardContext.html#reload():如果是上下文。xml已更改,您应该停止此上下文并创建(并启动)一个新的上下文实例。i、 e.无法通过原始上下文实现
    • Reload Existing App:重新加载现有web应用程序,以反映/web-INF/classes或/web-INF/lib内容的更改。i、 e.不反映上下文的变化。xml

    但您可以定义应用程序的/META-INF/context.xml,它将打包到war中,您可以在不重新启动服务器的情况下替换war

  2. # 2 楼答案

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