2014-12-27 3 views
2

Я пытаюсь создать контроллер Rest, используя Spring 4. Я также использую mongodb в качестве базы данных, а Tomcat 7 - как веб-сервер. Я получаю сообщение об ошибке при попытке отправить любой запрос Rest:Не удалось инициализировать класс org.springframework.web.context.request.ServletRequestAttributes

type Exception report 

message Servlet execution threw an exception 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Servlet execution threw an exception 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
root cause 

java.lang.NoClassDefFoundError: Could not initialize class org.springframework.web.context.request.ServletRequestAttributes 
    org.springframework.web.servlet.FrameworkServlet.buildRequestAttributes(FrameworkServlet.java:996) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:923) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.56 logs. 

Я использую эти версии в моем pom.xml

<!-- Web --> 
    <jsp.version>2.2</jsp.version> 
    <jstl.version>1.2</jstl.version> 
    <servlet.version>2.5</servlet.version> 

    <!-- Spring --> 
    <spring-framework.version>4.0.0.RELEASE</spring-framework.version> 

    <!-- spring-web --> 
    <spring-web.version>4.1.2.RELEASE</spring-web.version> 

    <!-- Spring data for MongoDB --> 
    <springframework.data-version>1.6.1.RELEASE</springframework.data-version> 

здесь класс контроллера that'm используя:

@RestController 
@RequestMapping("/rest/user") 
public class UserContoller { 

    @Autowired 
    UserServices userServices; 

    @RequestMapping(value = "/{username}", method = RequestMethod.GET) 
    public @ResponseBody User findUserByUsername(@PathVariable ("username") String username){ 
     return userServices.findUserByUsername(username); 

    } 

} 

не могли бы вы помочь мне? спасибо заранее

ответ

0

Я исправил это так:

@RequestMapping(value = "/user", method = RequestMethod.GET, produces = "application/json") 
@ResponseBody 
public User findUsername(@RequestParam("username") String username) { 
    logger.info("Searcing for user using his username"); 
    return userServices.findUserByUsername(username); 
} 
0

у меня был подобный вопрос, и я считаю, что сочетание вещей решить эту проблему: (до сих пор изучают входы и выходы Спринг так голые со мной, если я добавить дополнительные ненужные элементы)

  • Убедитесь, что у вас есть следующие две строки в servlet.xml и в этом порядке (то есть аннотацию приводом должны быть перечислены до того по умолчанию-сервлет-обработчика)

<mvc:annotation-driven /> 

<mvc:default-servlet-handler /> 

<bean id="viewResolver" 
     class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/"></property> 
    <property name="suffix" value=".jsp"></property> 
</bean> 

* Любой эквивалент viewResolver боб отлично ,

  • Убедитесь, что это в вашем web.xml:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

  • Я вижу, вы не упоминаете, что вы получите, будет производить. Для Ex: у меня есть этот атрибут в моем @RequestMapping produces = MediaType.APPLICATION_JSON_VALUE

  • Наконец, я не уверен, почему, но каждый раз, когда я добавляю новое сопоставление контроллера, мне нужно запустить жизненный цикл Maven Install или он не видит новое отображение. Этот вопрос я все еще пытаюсь понять.

Смежные вопросы