java - Context.xml 中的相对路径

标签 java tomcat context.xml

有没有办法在 web 应用程序的 context.xml 中设置 docBase 属性的相对路径,使其位于 tomcat 服务器实例的 appBase 目录之外?

我希望能够在计算机之间共享上下文配置,并让应用程序位于目录中,而不是 war 文件中。这样我就可以将这些类直接编译到该目录(在我的项目开发目录中)并让 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 documentation对于上下文容器说:

You may specify an absolute pathname for this directory or WAR file, or a pathname that is relative to the appBase directory of the owning Host.

这里的relative是指appBase的严格子目录吗(不允许..)?

设置绝对路径没有问题。配置

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/frontend" docBase="/home/david/projects/frontend/web-content">
</Context>

有效,但它特定于我的计算机。所以我不能再不修改就分享上下文配置。

我可以在 tomcat 服务器的 appBase 目录中创建一个符号链接(symbolic link),让它指向我的应用程序的 web-content 文件夹。这可行,但我在 linux 和 windows 机器上会有不同的配置(符号链接(symbolic link))。

最佳答案

只取相对路径名的姓氏而忽略第一部分 最有可能是tomcat中的错误。相对路径名应该有效或必须抛出错误。 但是忽略零件是不好的。 解决方法可能是使用这样的绝对路径名: <Context docBase="${catalina.home}/../www.war"

我刚刚阅读了 Tomcat 8.0.15 的变更日志。 该错误应该已修复(!): “正确处理上下文的 docBase 属性的相对值。”

关于java - Context.xml 中的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19518107/

相关文章:

eclipse - 从 diskfileupload 上传文件时出错

java - Logback SMTPAppender找不到JNDI位置并启动

xml - 我想运行 main() 加载 spring 上下文 xml 与另一个项目的 xml 和源

java - 用于 Eclipse 的 Spring 上下文 XML validator ?

java - 如何自动添加gradle依赖

java - RxJava- 在 Observable 链中执行 peek() 或 void 操作?

java - 从 http GET 响应获取图像作为 base64 字符串

Java 增量和赋值运算符

java - 如何发现网络上 Tomcat 服务器的 IP 地址?

spring - 初始大小 BasicDataSource