一旦我将测试应用程序移动到高效(?)应用程序并开始在Tomcat上进行测试,我的基于Spring 3.1的REST服务就停止了工作.虽然显示了默认的index.jsp,但我的应用程序(http:// myhost:myport / test-webapp / myrestservice)无法访问,我得到了所请求的资源(/ test-webapp / myrestservice)不可用.
这是我做的:
控制器:
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配置:
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("/");
}
}
配置类:
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中没有太多内容:
在我的项目中除此之外没有任何东西.我错过了什么吗?旧项目更像是记录传入的JSON请求等(现已被删除)正在运行,但我不再拥有它了(所以,很多新手布鲁斯.请在这里帮助我.非常感谢! !
更新
问题已解决.检查答案
最佳答案
您在生产环境中使用的是什么版本的Tomcat?看起来你需要Tomcat 7来获得支持WebApplicationInitializer所需的Servlet 3.0规范实现.
原文链接:https://www.f2er.com/spring/431462.html