将 Spring Web App 从 tomcat 5.5 迁移到 tomcat 6.0 的问题

Posted

技术标签:

【中文标题】将 Spring Web App 从 tomcat 5.5 迁移到 tomcat 6.0 的问题【英文标题】:Problem migrating Spring Web App from tomcat 5.5 to tomcat 6.0 【发布时间】:2010-10-06 05:46:29 【问题描述】:

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

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

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

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

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

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

谢谢。

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

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

感谢这些人的回复。

【问题讨论】:

【参考方案1】:

如果你使用maven,你需要jstl:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        <scope>runtime</scope>
    </dependency>

【讨论】:

【参考方案2】:

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

在 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 安全性从配置文件中注释掉并重新启动来关闭它。如果其他一切正常,您的应用程序应该会立即启动。然后你就会知道你必须专注于。如果没有,您可以继续搜索还有什么问题。

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于将 Spring Web App 从 tomcat 5.5 迁移到 tomcat 6.0 的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Tomcat 5.5 中部署 web-app 时如何解决错误 listenerStart?

Spring Security - 从 Tomcat 6 部署到 Tomcat 7 时凭据错误

将 Spring Boot RESTful Web 服务部署到 Tomcat 时仍然缺少 Web.xml

将Spring Boot RESTful Web Service部署到Tomcat时,Web.xml仍然丢失

Spring MVC或Spring Boot配置默认访问页面不生效?

从 web.xml 迁移到基于 Java 的配置 - 无法启动 Tomcat 8