是否有一种方法可以在web应用程序的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内容之前的整个路径似乎被忽略了。日志上写着:
The main resource set specified [/home/david/projects/tomcat/webapps/web-content] is not valid上下文容器的Tomcat 8文件说:
您可以为这个目录或WAR文件指定一个绝对路径名,或者指定一个相对于拥有主机的appBase目录的路径名。
相对在这里是否意味着appBase的一个严格子目录(不..。允许)?
设置绝对路径是没有问题的。配置
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/frontend" docBase="/home/david/projects/frontend/web-content">
</Context>工作,但它是特定于我的电脑。因此,我不能在不修改的情况下共享上下文配置。
我可以在tomcat服务器的appBase目录中创建一个符号链接,并让它指向我的应用程序的web内容文件夹。这是可行的,但我在linux和windows机器上会有不同的配置(符号链接)。
发布于 2014-11-17 11:54:44
只取相对路径名的姓氏,忽略前面的部分,很可能是tomcat中的一个bug。相对路径名应该有效,或者必须抛出错误。但是忽略部分是不好的。解决方法可能是使用如下绝对路径名称:<Context docBase="${catalina.home}/../www.war"
我只是读了一下Tomcat 8.0.15的变化。错误应该是固定的(!):“正确处理上下文的docBase属性的相对值。”
https://stackoverflow.com/questions/19518107
复制相似问题