Tomcat直接提供由多个应用程序共享的静态(css,js)文件

我正在使用ExtJS框架,其中有大量的jscss文件,用于所有的应用程序。 我打算分享这些之间的一些networking应用程序(不同的war文件)。

由于这个原因,我想直接从Web服务器上提供ExtJS jscss ,在我的情况下, Tomcat6可以用来提供静态文件,就像这个有用的链接一样 。

因此,我把我的文件放在/var/lib/tomcat6/webapps/ROOT/extjs/ 。 直接在该目录下的静态文件被正确地提供,例如/extjs/ext.js正确地提供/var/lib/tomcat6/webapps/ROOT/extjs/ext.js文件。

但是,较低级别目录中的文件(例如/extjs/welcome/css/welcome.css )应放在/var/lib/tomcat6/webapps/ROOT/extjs/welcome/css/welcome.css文件中, 404

TL / DR

Tomcat只在顶级目录中提供静态文件。 对于层次结构中较深的文件,将返回一个404

configuration文件内容

  • server.xml中
  • 应用程序的web.xml

固定 – 解决scheme

问题是我正在放置这个条款:

 <Context docBase="/path/to/extjs-static-files" path="/extjs"/> 

在Tomcat的server.xml <Engine>子句中。 一旦我把它放在<Host>标签中,它就开始工作了。 阅读这个文档是非常有用的,以确定我做错了什么。

我正在运行一个RESTful Web服务,它为存储在Tomcat之外的目录中的一些静态内容提供服务。 该目录由web.xml中的servlet参数指定。您可以执行类似的操作,只需指定所需文件的绝对path – 将它们放置在Tomcat的某处或任何您喜欢的地方。 我可以张贴一些示例代码,如果你喜欢。 当然所有其他引用JavaScript和CSS的文件都需要更改,因为这些文件将位于与使用它们的Web应用程序不同的URL目录中。 例如,src =“restAppContextName / serve / youJavaScript.js”其中serve是REST Web服务的@Path,后面的是@PathParam。 对于浏览器来说,/ serve将被视为一个目录,所以从一个js文件到另一个js文件的相对引用应该工作。