【问题标题】:In Tomcat 8 server.xml config file, is there a way dynamically configure a path to a resource using variable substitution?在 Tomcat 8 server.xml 配置文件中,有没有办法使用变量替换动态配置资源的路径?
【发布时间】:2015-06-24 18:57:25
【问题描述】:

我正在使用 Apache Tomcat 8。

$CATALINA_HOME/conf/server.xml 中,我在GlobalNamingResources 标签中有一个Resource

<Resource name="jdbc/myderby"
          auth="Container"
          type="javax.sql.DataSource"
          username=""
          password=""
          driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
          url="jdbc:derby:myderby;create=true"/>

但我想在 url 参数中使用我的 webapp 上下文路径作为我的数据库的基本路径。例如:

url="jdbc:derby:${WEBAPP_HOME}/WEB-INF/db/myderby;create=true"

这可能吗?如果可以,我需要为${WEBAPP_HOME} 设置什么属性?

【问题讨论】:

    标签: jsp tomcat jakarta-ee servlets tomcat8


    【解决方案1】:

    来自 Tomcat 8 documentation

    Tomcat 配置文件被格式化为无模式 XML;元素和属性区分大小写。 支持 Apache Ant 风格的变量替换;名称为 propname 的系统属性可以使用语法 ${propname} 在配置文件中使用。所有系统属性都可用,包括使用 -D 语法设置的属性、JVM 自动提供的属性以及 在 $CATALINA_BASE/conf/catalina.properties 文件中配置的属性。

    因此可以使用像 ${WEBAPP_HOME} 这样的变量。 conf/catalina.properties 似乎是一个设置它的好地方。 或者您可以使用已定义的变量 ${catalina.base} 来表示 derby 数据库的路径:

    &lt;Resource ... url="jdbc:derby:${catalina.base}/webapps/mycontext/WEB-INF/db/myderby;create=true"/&gt;

    【讨论】:

    • 以防其他人不知道这个出色的功能(直到最近才像我一样):这个功能实际上从 Tomcat 3.3.1 开始就可以使用 tomcat.apache.org/tomcat-3.3-doc/serverxml.html 这些天,在同一个裸机上部署了如此多的 Tomcat金属或虚拟机,这是一个非常方便的功能!
    猜你喜欢
    • 2012-03-18
    • 2021-12-17
    • 2020-07-31
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 2017-06-19
    • 2016-05-26
    相关资源
    最近更新 更多