如何在web.xml中支持变量插值?

时间:2014-12-29 07:00:35

标签: java tomcat

我将Web应用程序和tomcat打包成zip文件。此zip应该可以在任何位置或路径使用。 此Web应用程序需要加载其他文件夹(响应文件夹)才能启动。 由于zip可以在任何地方解压缩,我需要在服务器启动时找出我当前的路径并在startup.bat中设置路径。

以下是我的zip文件夹结构:

my.zip
    - apache-tomcat
        - bin
            - startup.bat
        - webapp
            - mywebapp
                - WEB-INF
                    - web.xml
    - response-folder

在我的startup.bat中,我有以下一行

set CATALINA_OPTS=-Dapache-tomcat-current-folder="%TOMCAT_CURRENT_FOLDER%"

我想实现以下目标:

<servlet>
    <description>MyService</description>
    <display-name>MyService</display-name>
    <servlet-name>MyService</servlet-name>
    <servlet-class>com.my.package.MyService</servlet-class>
    <init-param>
        <description>Folder that contains response files</description>
        <param-name>RESPONSE_FOLDER</param-name>
        <param-value>${apache-tomcat-current-folder}\response-folder</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

注意:我无法更改Web应用程序java代码,因为Web应用程序不属于我。

我是否知道有没有让web.xml支持变量插值或实现上述行为? 任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

要在web.xml中使用环境变量,您可以添加

set "CATALINA_OPTS=-Dapache-tomcat-current-folder=somevalue"

或者如果要引用系统环境变量

set "CATALINA_OPTS=-Dapache-tomcat-current-folder=%apache-tomcat-current-folder%"

bin/setenv.bat中(bin/setenv.sh代表* nix)。 您需要创建此文件。