이 문제에 대한 많은 질문을 보았지만 아무에게도 도움이되지 않았습니다. 간단한 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의에 사용되지 않습니다, 나는 MappingJackson2HttpMessageConverter
로 RequestMappingHandlerAdapter
에게 (내 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하지만이 중 하나도 유용하지 않았습니다.
근본적인 문제가있는 사람이 있습니까? 사전에
감사합니다! 감사합니다.
classpath에 적절한 jackson 버전을 추가하고'@ EnableWebMvc'을 추가하고 나머지는 Spring으로 남겨 둡니다. 'HandleAdapter' 나 커스텀'HttpMessageConverter'를 추가하는 것만으로 주위를 망칠 필요가 없습니다. –
맞습니다. 그냥 잭슨 deps addind, 봄 자동으로 처리기를 구성하는 것 같다. 그럼에도 불구하고 동일한 오류 (getOutputStream()이 이미 호출되었습니다)가 여전히 발생합니다. –
요청/응답을 읽도록 사용자 지정 필터가 구성되어 있습니까? –