0

我正在使用 IBM WebSphere (WAS) 7.0.0.19 来托管基于 Java 的 Web 应用程序,并且我需要将扩展​​ *.html 映射到特定的 servlet,以便我可以对用户提供的 HTML 进行一些服务器端清理文件。(服务器读取文件,用一些额外的信息对其进行扩充,并将修改后的内容透明地提供给查看页面的人。)

不幸的是,当我这样做时,欢迎文件停止工作。以前,如果我输入目录的 URL,服务器会查找 index.html 并提供它。现在,我刚刚得到一个 403 禁止规则(“禁止 - 按规则。”)。访问日志不再显示任何内容——它们只是声明服务器规则禁止目录索引,这是正确的。我不希望网络服务器为没有 index.html 的目录构建目录,但是当有 index.html 时,我希望它提供该文件。

我的第一个想法是它试图通过我的 servlet 提供 index.html,servlet 找不到文件(因为 url 缺少“index.html”),因此它认为没有 index.html。但是,我输入了一些调试代码,并且非常确信当我只是转到目录本身时,servlet 代码永远不会运行。

我真的不关心 index.html 是否通过 servlet 提供服务——在这个特定文件的情况下,servlet 无论如何都会吐回原始文件。我只希望 index.html 由某些东西提供服务。

这是我的 web.xml 的相关部分

<servlet-mapping>
    <servlet-name>PageScrubber</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>        

<welcome-file-list>         
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

对于它的价值,在添加 servlet 映射之前 index.htm 和 index.jsp 无法正常工作。以前只有 index.html 有效。但是,现在它们都不起作用。

我在两个 Oracle 产品中使用了相同的 web.xml:WebLogic (WLS) 和 Oracle Application Server (OAS),没有任何问题。

我很有信心只是添加了这个清理器 servlet 导致了问题,因为删除该指令会导致目录索引重新开始工作。

在使用扩展文档根目录时,我确实发现了一些关于welcome-file-list 不起作用的注释,并且我尝试将 com.ibm.ws.webcontainer.EnablePartialURLtoExtendedDocumentRoot 设置为 true,但这似乎并没有改变任何东西。

我几乎没有想法。有没有人对为什么找不到我的 index.html 有任何想法?提前致谢!

4

1 回答 1

1

警告:我在这里工作的内存不足。

Welcome 文件曾经由 File Serving Servlet(或类似的东西)提供服务。

此信息将位于 WebSphere 扩展文件中。

我会退后一步,删除您的 pageScrubber 并获取服务 Servlet 的文件以提供欢迎文件,并在返回使用 PageScrubber 之前查看一切是否正常。

这些是我最初的想法。

高温高压

于 2012-07-06T05:55:12.120 回答