2015-01-14 3 views
0

이 문제에 대한 많은 질문을 보았지만 아무에게도 도움이되지 않았습니다. 간단한 REST 서비스를 게시하려고하지만 문제는 중요하지 않습니다. 작동하지 않습니다. HttpMediaTypeNotAcceptableException가 나는이 Question에 도달 인터넷 검색봄 호출 (4.x) 휴식 서비스

을 던져졌다

@RestController 
public class ProductsRestController { 

    @Autowired 
    private ProductService productService; 

    @Transactional 
    @RequestMapping(value = "/listproducts") 
    public List<Product> products() { 
     return this.productService.findAll(); 
    } 
} 

을 호출 (브라우저를 통해) :

내 첫 번째 접근 방식은이 같은 REST 컨트롤러를 만드는 것이 었습니다. 제안 된 솔루션은 MappingJacksonHttpMessageConverter을 구성하고 AnnotationMethodHandlerAdapter에 추가하는 것입니다.

java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonProcessingException 

나는 추가 : 이것은 다음과 같은 오류 날를 행하지

@Override 
public void configureMessageConverters (final List<HttpMessageConverter<?>> converters) { 
    converters.add(new MappingJackson2HttpMessageConverter()); 
} 

:이 콩은 봄 4.x의에 사용되지 않습니다, 나는 MappingJackson2HttpMessageConverterRequestMappingHandlerAdapter에게 (내 WebMvcConfigurerAdapter 이내)이 방법을 사용 필요한 의존성

<artifactId>jackson-core</artifactId> 
<artifactId>jackson-databind</artifactId> 

그 결과에 :

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: getOutputStream() has already been called for this response 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 
    org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:85) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) 
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 

다시 인터넷으로 연결이 다른 Question하지만이 중 하나도 유용하지 않았습니다.

근본적인 문제가있는 사람이 있습니까? 사전에

감사합니다! 감사합니다.

+1

classpath에 적절한 jackson 버전을 추가하고'@ EnableWebMvc'을 추가하고 나머지는 Spring으로 남겨 둡니다. 'HandleAdapter' 나 커스텀'HttpMessageConverter'를 추가하는 것만으로 주위를 망칠 필요가 없습니다. –

+0

맞습니다. 그냥 잭슨 deps addind, 봄 자동으로 처리기를 구성하는 것 같다. 그럼에도 불구하고 동일한 오류 (getOutputStream()이 이미 호출되었습니다)가 여전히 발생합니다. –

+0

요청/응답을 읽도록 사용자 지정 필터가 구성되어 있습니까? –

답변

0

문제가 무엇이든, 항상 더 많은 인터넷 검색이 있습니다. 다른이 Question가 내 문제를 해결하는 데 도움이됩니다.

제품 클래스에는 Product를 다시 참조하는 다른 bean에 대한 참조가 있으므로 순환 참조가 발생합니다. DTO를 사용하면 문제가 해결되었습니다.

모두에게 감사드립니다.