有没有办法在 web 应用程序的 context.xml 中设置docBase属性的相对路径,所以它位于 tomcat 服务器实例的 appBase 目录之外?
我希望能够在计算机之间共享上下文配置,并使应用程序位于目录中,而不是战争文件中。这样我就可以将类直接编译到该目录中(在我的项目开发目录中),并让 tomcat 使用这些类,而无需任何复制/打包。
我正在使用 tomcat 8.0.0-RC5。我的目录布局是:
/home/david/projects/frontend/web-content <-- the static html files
/home/david/projects/frontend/web-content/WEB-INF <-- the WEB-INF with the web.xml
/home/david/projects/tomcat <-- tomcat base directory
/home/david/projects/tomcat/Catalina/localhost <-- holds the frontend.xml context configuration
我试过了
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/frontend" docBase="../../frontend/web-content">
</Context>
但这没有用。/web-content 之前的整个路径似乎被忽略了。日志说:
The main resource set specified [/home/david/projects/tomcat/webapps/web-content] is not valid
上下文容器的Tomcat 8 文档说:
您可以为此目录或 WAR 文件指定绝对路径名,或者指定相对于拥有主机的 appBase 目录的路径名。
这里的 relative 是指 appBase 的严格子目录(不允许 ..)吗?
设置绝对路径没有问题。配置
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/frontend" docBase="/home/david/projects/frontend/web-content">
</Context>
有效,但它特定于我的计算机。所以我不能再不修改就共享上下文配置。
我可以在 tomcat 服务器的 appBase 目录中创建一个符号链接,并让它指向我的应用程序的 web-content 文件夹。这会起作用,但我在 linux 和 windows 机器上会有不同的配置(符号链接)。