一旦我将测试应用程序移动到高效(?)应用程序并开始在Tomcat上进行测试,我的基于Spring 3.1的REST服务就停止了工作.虽然显示了默认的index.jsp,但我的应用程序(http:// myhost:myport / test-webapp / myrestservice)无法访问,我得到了所请求的资源(/ test-webapp / myrestservice)不可用.
这是我做的:
控制器:
@H_301_10@package com.test.webapp.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.test.webap.entity.Account; @Controller @RequestMapping("/myrestservice") public class AccountController{ @RequestMapping(method = RequestMethod.GET,produces="application/json") @ResponseBody public Account getEntity() { // ...
Dispatch Servlet配置:
@H_301_10@package com.test.webapp.web; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; import com.test.webapp.config.AppConfig; public class AppInit implements WebApplicationInitializer { private static final String DISPATCHER_SERVLET_NAME = "dispatcher"; public void onStartup(ServletContext container) throws ServletException { // Create the dispatcher servlet's Spring application context AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext(); dispatcherContext.register(AppConfig.class); // Manage the lifecycle of the root application context container.addListener(new ContextLoaderListener(dispatcherContext)); // Register and map the dispatcher servlet ServletRegistration.Dynamic dispatcher = container.addServlet( DISPATCHER_SERVLET_NAME,new DispatcherServlet(dispatcherContext)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } }
配置类:
@H_301_10@package com.test.webapp.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan( basePackages = {"com.test.webapp.controller"}) public class AppConfig{ // Nothing here. Once I start using the beans,I will put them here }
并且,web.xml中没有太多内容:
@H_301_10@
在我的项目中除此之外没有任何东西.我错过了什么吗?旧项目更像是记录传入的JSON请求等(现已被删除)正在运行,但我不再拥有它了(所以,很多新手布鲁斯.请在这里帮助我.非常感谢! !
更新
问题已解决.检查答案
最佳答案
您在生产环境中使用的是什么版本的Tomcat?看起来你需要Tomcat 7来获得支持WebApplicationInitializer所需的Servlet 3.0规范实现.