【问题标题】:Web Application does not appear to deploy properly on remote tomcat 7Web 应用程序似乎无法在远程 tomcat 7 上正确部署
【发布时间】:2015-06-25 03:00:24
【问题描述】:

我有一个 Java Web 应用程序,当通过 eclipse 或通过将 .war 文件复制/粘贴到本地 tomcat 进行部署时,它将正确部署,我可以使用该 Web 应用程序。我正在尝试将此应用程序部署在安装了 tomcat 的 GCE 实例上。随着远程 tomcat 停止,我将 .war 文件复制到 webapps 文件夹中,就像我对本地 tomcat 所做的那样,然后启动 tomcat。我可以在 catalina.out 中看到一条消息,它正在部署 Web 应用程序存档,并且我可以查看 webapps 文件夹以查看战争已经爆发(此文件夹中的所有内容似乎都是正确的)。但是,我没有看到我的本地 tomcat/eclipse 部署的 webapp 创建的任何 springframework 消息,并且当我尝试转到远程 tomcat 上的应用程序主页时收到 404。我不知道从哪里开始查找我的 Web 应用程序部署有什么问题。

更新

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[] {WebMvcConfig.class,RestAppConfig.class,MySQLConfig.class};
}

@Override
protected Class<?>[] getServletConfigClasses() {    
    return null;
}

@Override
protected String[] getServletMappings() {
    // TODO Auto-generated method stub
    return new String[] {"/*"};
}

这是我用于注释配置的 WebInitialier 类。我在 WebMVC 中配置了 SpringMVC、RESTful 服务的配置以及 MySQL 数据库的配置。我更改了 log4j.xml 中的日志级别以调试所有内容,虽然我对实际记录任何内容非常糟糕,但我在远程 tomcat 服务器上的部署似乎没有实现任何初始化。

【问题讨论】:

    标签: java spring maven tomcat


    【解决方案1】:

    您需要将 yourApp.xml 文件放在 Catalina_HOME/conf/localhost 文件夹中 参考这个link

    【讨论】:

    • 我想我不明白....这是什么 .xml 文件?我还没有处理过 app.xml ......我似乎也找不到你提到的这个 localhost 文件夹。
    【解决方案2】:

    HTTP 404 消息仅告诉您您尝试查找的资源在该 URL 上不可用,我想到的可能有多种原因:

    1) 您的应用程序未正确部署到 tomcat。如果您的应用程序中有一些日志,您可以检查这一点,如果应用程序部署正确,请检查 {tomcat-home}/logs/catalina.log。

    2) 你没有使用好的 URL。

    3) 这可能是 GCE 实例的问题,它可能会阻止对您的 Web 应用程序的外部访问。在这种情况下,您应该允许从您的网址访问端口 8080。如果您还没有这样做,那么很可能是问题所在,因为默认情况下,该端口应该被阻止以供外部访问。您可以尝试 telnet tomcat 来检查是否是这种情况,或者您可以检查 {tomcat-home}/logs/localhost_access_log 以查看您的请求是否到达了 tomcat。如果您看到类似的内容:

    127.0.0.1 - - [15/Jun/2015:09:28:25 -0700] "GET /RESTfulExample/rest/helloworld HTTP/1.1" 404 1011

    表示请求已到达tomcat,但该资源不存在。

    希望对你有帮助,

    卓然

    【讨论】:

    • 所以我确信在 tomcat 部署期间某些东西不起作用,但 catalina 日志中没有错误。至于 GCE 实例,我允许通过 8080 访问,并且能够从 tomcat 安装访问 ROOT 应用程序。我不确定 url 是否正确,但我使用的 url 与我在本地 tomcat 中使用的 url 相同,当然,将 localhost:8080 替换为外部 IP。我认为的问题是在部署期间没有发生通过 Spring 的请求映射,但我不知道如何确保映射发生
    • 你使用 Spring 安全性吗?您的应用程序中有哪些资源?你能添加你的 Spring 配置吗?
    • 我正在使用 Spring MVC 和 Spring 安全性。该应用程序完全是注解配置的......我不知道如何为你添加配置。
    • 您可以编辑您的原始帖子并将您的配置添加为代码示例。我还建议增加 Spring 和 Spring Security 的日志记录级别,这样您就可以在日志中跟踪正在发生的事情。例如,如果您在应用程序中使用 log4j,则可以添加 log4j.logger.org.springframework=DEBUG 和 log4j.logger.org.springframework.security=DEBUG。之后,你可以关注你的 catalina 日志,看看 spring security 是否阻止了对某些资源的访问。
    • 当我在 catalina 日志中看到我的应用程序“部署”时,似乎没有初始化任何内容:部署 web 应用程序存档 /var/lib/tomcat7/webapps/chemsense.war 但没有来自 Spring(或其他任何东西)的初始化正在发生....tomcat 上是否有配置可以告诉 tomcat 初始化?还是我需要在应用程序中添加一些东西以确保初始化?....再次,这一切在我使用过的本地实例上都可以正常工作...似乎只有这个 GCE tomcat 部署引起了头痛。
    猜你喜欢
    • 2012-12-28
    • 2014-07-08
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 2012-11-02
    • 2011-09-22
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多