我构建了一个没有任何XML的java配置的Spring MVC应用程序。我可以在笔记本电脑上部署和启动应用程序,没有任何问题。但是当我尝试在我的testserver(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
答案 0 :(得分:1)
如果仍然没有解决,可能是由于Servlet版本。 Servlet 3.x API需要通过编写java类而不是在WEB-INF文件夹中包含web.xml文件来配置java Web应用程序。
请参阅here以获取完整示例。
答案 1 :(得分:1)
我将升级到最新的Tomcat版本并查看是否有效(以隔离您的问题)。使用旧的Tocmat服务器的新弹簧功能(例如:java配置等)存在许多问题。例如,请参阅:http://docs.spring.io/autorepo/docs/spring-framework/3.1.x/javadoc-api/org/springframework/web/WebApplicationInitializer.html
在Tomcat下映射到'/'
Apache Tomcat将其内部DefaultServlet映射到“/”,而在Tomcat版本&lt; = 7.0.14上,无法以编程方式覆盖此&gt;&gt; servlet映射。 7.0.15修复了这个问题。覆盖“/”&gt;&gt; servlet映射也已在GlassFish 3.1下成功测试。