Tomcat 8 Resources / PreResources

时间:2015-08-06 17:34:29

标签: java windows tomcat configuration

首先,我们正在运行Tomcat8,Java8和Windows Server 2012。

我们将图像,样式,JavaScript和其他静态资源存储在名为“shared”和“uploads”的Web应用程序之外的目录中。为了配置它,我创建了一个基本上下文,所有应用程序都是这样的:

<Context>
    <Resources>
        <PreResources base="${document.root}\shared" className="org.apache.catalina.webresources.DirResourceSet" webAppMount="/shared" />
        <PreResources base="${document.root}\uploads" className="org.apache.catalina.webresources.DirResourceSet" webAppMount="/uploads" />
    </Resources>
</Context>

此外,还有一个特定于站点的上下文,如下所示:

<Context docBase="${document.root}\sitename">
</Context>

我们注意到对共享目录的某些请求正在运行,而其他请求则没有。我发现它与文件名大小写有关。共享中的某些文件的名称以小写字母开头,而某些文件以大写字母开头。具有较小案例名称的那些工作正常。因此,为了测试一个理论,我对同一个文件名(一个不存在)提出了两个请求,只改变了大小写,所以我可以看到404页面并看到实际使用的文件路径。

我首先请求此网址:

{domain}/shared/Base.js

生成的404页面表示Tomcat搜索了此路径:

/shared/base.js

然后我请求了这个网址:

{domain}/shared/base.js

生成的404页面表示Tomcat搜索了此路径:

/shared/base.js

正如您所看到的,无论我在URL中使用哪种外壳,它似乎都将其转换为小写。因此,如果我将其中一个文件重命名为全部小写名称,则一切正常。问题是这些是大型目录,我们的目标是升级我们的服务器而不需要重复的代码更新。此外,上传内容由我们的用户提交,并且在确保唯一名称之外,我们不会更改文件名,因此外壳将继续随机。是否有人知道我可以使用某些属性或配置来使Tomcat完全按照URL中提供的方式使用文件名?

0 个答案:

没有答案