3

我有一个在 tomcat 5.5 上运行良好的 Spring Web 应用程序。我试图将相同的 Web 应用程序部署到 tomcat 6 容器并遇到一些问题。

我遇到的主要两个问题与为 jstl 配置容器和让 spring 安全登录正常工作有关。

我相信我已经通过在 $CATALINA_HOME/lib 目录中包含这里的 jstl-1.2.jar lib 解决了 jstl 配置问题(尽管它确实看起来很奇怪,很难找到如何让它工作)。

现在的主要问题是,当我尝试使用基于表单的身份验证登录时,当登录表单提交到“j_spring_security_check”时出现 HTTP 404 错误。

我已经根据 spring 安全文档在 web.xml 文件中设置了过滤器,但似乎 tomcat 没有按预期调用它。

我希望有人可以在这里分享他们的经验,因为我肯定在我的配置中缺少一些基本的东西。

谢谢。

更新:虽然根据此处的响应进行故障排除,但我最终做的一件事是下载一个新的 tomcat 6.0.18 副本,并确保我在 WEB-INF/lib 目录中有 jstl-1.2.jar 文件。有趣的是,现在该应用程序似乎运行良好。

我有点难过,但我现在将尝试找出导致错误的两个 tomcat 安装的差异,并在此处发布进一步的更新。

感谢您对这些家伙的回复。

4

3 回答 3

1

根据您提供的信息,很难判断出了什么问题。

Tomcat 5.x 及更早版本中常用的共享库位于 common/lib 中;现在它们属于 /lib 目录。

就个人而言,我更喜欢在部署的 WEB-INF/lib 中尽可能多地放置,因为我不想依赖以特定方式设置服务器。如果类加载器可以在我的 WAR 文件中找到它需要的所有 JAR,我很高兴。

Tomcat 5.x 和 6.x 都使用 JSTL 1.2 版 JAR,所以这很常见。就是位置变了。我建议在 WEB-INF/lib 中使用您需要的 JAR 构建您的 WAR 文件。

如果您使用的是 Spring Security(以前称为 ACEGI 的模块),请确保您也有这些 JAR 可用。

HTTP 404 - 确定不只是部署或 URL 问题?

尝试通过将 Spring 安全性从配置文件中注释掉并重新启动来关闭它。如果其他一切正常,您的应用程序应该会立即启动。然后你就会知道你必须集中精力。如果没有,您可以继续搜索还有什么问题。

于 2009-02-08T12:33:28.837 回答
1

如果您使用 maven,则需要 jstl :

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        <scope>runtime</scope>
    </dependency>
于 2009-02-08T08:51:17.897 回答
0

我同意达菲莫,没有足够的信息。尝试在您的应用程序中打开详细日志记录,看看日志中是否有任何明显的内容。

于 2009-02-09T00:55:03.687 回答