我将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支持变量插值或实现上述行为? 任何帮助都会很棒。
答案 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)。
您需要创建此文件。