【问题标题】:Spring Java Config: Tomcat deploy without web.xmlSpring Java Config:没有 web.xml 的 Tomcat 部署
【发布时间】:2014-02-27 01:40:51
【问题描述】:

我构建了一个没有任何 XML 的 java 配置 Spring MVC 应用程序。我可以毫无问题地在笔记本电脑上部署和启动应用程序。但是,一旦我尝试在我的测试服务器(tomcat 7)上部署我的应用程序,我就会收到以下消息:

HTTP Status 404 - The requested resource (/[application context]/) is not available.

我使用 Eclipse Maven 插件构建我的应用程序。是否可以在没有 web.xml 的情况下部署应用程序,如果没有,这是我真正需要的基本 web.xml?

Maven WAR 插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>${maven.war.plugin.version}</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

WebAppInitializer:

@Order(value = 1)
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { HibernateConfig.class, SecurityConfig.class, HibernateDaoConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebAppConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Filter[] getServletFilters() {
        return new Filter[]{};
    }
}

更新:catalina.out

Feb 3, 2014 4:18:32 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/[appname]] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak.
Feb 3, 2014 4:18:33 PM org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/[appname]]
Feb 3, 2014 4:18:45 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive [appname].war

【问题讨论】:

  • 你的启动日志显示了什么?
  • 只是“信息:在 catalina.out 中部署 Web 应用程序存档 [appname].war”
  • 将 Spring 日志记录更改为 DEBUG 并检查。
  • 请检查更新:但我仍然没有得到更多信息。
  • Tomcat6 不支持 Java 配置。您需要最新版本的 Tomcat 7 来支持它。 Tomcat 7 的早期版本存在 Java 配置问题。

标签: spring maven tomcat maven-tomcat-plugin spring-java-config


【解决方案1】:

我会升级到最新的 Tomcat 版本,看看是否可行(以隔离您的问题)。在旧版 Tocmat 服务器上使用新的 spring 特性(例如:java config 等)存在许多问题。例如,参见:http://docs.spring.io/autorepo/docs/spring-framework/3.1.x/javadoc-api/org/springframework/web/WebApplicationInitializer.html

Tomcat下映射到'/'

Apache Tomcat 将其内部 DefaultServlet 映射到“/”,并且在 Tomcat 版本 >servlet 映射不能以编程方式覆盖。 7.0.15 修复了这个问题。覆盖“/”>>servlet 映射也已在 GlassFish 3.1 下成功测试。

【讨论】:

    【解决方案2】:

    如果还没有解决,可能是 Servlet 版本的问题。 Servlet 3.x API 需要能够通过编写 java 类而不是在 WEB-INF 文件夹中包含 web.xml 文件来配置 java Web 应用程序。

    完整示例请参见here

    【讨论】:

      猜你喜欢
      • 2021-01-14
      • 2017-08-27
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多