Java 使用RestTemplate调用基于Sprinf的RESTWeb服务(使用JSON)

Java 使用RestTemplate调用基于Sprinf的RESTWeb服务(使用JSON),java,json,spring,rest,Java,Json,Spring,Rest,我正在做一些POC,其中有一个基于spring的restweb服务,从一个包含JQuery代码的html页面使用。我使用$.json进行此操作。 设置为:Spring4,带有Jaxson 2.3和jQuery1.10 当我尝试使用绝对url直接点击其余ws时,如protocol://ip:port/contextroot/resourceurl 从$.json中,我得到了正确的响应。 然而,我最近接到另一个任务,从同一个web应用程序中的另一个控制器而不是jquery中完成此调用。现在我要做的是

我正在做一些POC,其中有一个基于spring的restweb服务,从一个包含JQuery代码的html页面使用。我使用$.json进行此操作。 设置为:Spring4,带有Jaxson 2.3和jQuery1.10 当我尝试使用绝对url直接点击其余ws时,如protocol://ip:port/contextroot/resourceurl 从$.json中,我得到了正确的响应。 然而,我最近接到另一个任务,从同一个web应用程序中的另一个控制器而不是jquery中完成此调用。现在我要做的是,从$.json调用一个spring控制器,它创建RestTemplate调用并进行webservice调用。这似乎是可行的,因为web服务实际上已经被命中,并且已经准备好了正确的结果。但是,当web服务尝试返回时,我的代码会中断,从而导致以下异常:

SEVERE: Servlet.service() for servlet [regionserv] in context with path [/lmpamfsWebApp] threw exception [Request processing failed; nested exception is org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class [Lcom.leggmason.lmpamfs.beans.CodeLookupBean;] and content type [text/plain;charset=UTF-8]] with root cause org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class [Lcom.leggmason.lmpamfs.beans.CodeLookupBean;] and content type [text/plain;charset=UTF-8] at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:108) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:549) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:502) at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:239) at com.leggmason.lmpamfs.controllers.RegionController.fetch(RegionController.java:61) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:339) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
严重:路径为[/lmpamfswebap]的上下文中Servlet[regionserv]的Servlet.service()引发异常[请求处理失败;嵌套异常为org.springframework.web.client.RestClientException:无法提取响应:未找到响应类型[class[Lcom.leggmason.lmpamfs.beans.CodeLookupBean;]的合适HttpMessageConverter]和内容类型[text/plain;charset=UTF-8]]以及根本原因
org.springframework.web.client.RestClientException:无法提取响应:未找到响应类型[class[Lcom.leggmason.lmpamfs.beans.CodeLookupBean;]和内容类型[text/plain;charset=UTF-8]的合适HttpMessageConverter 位于org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:108) 位于org.springframework.web.client.restemplate.doExecute(restemplate.java:549) 位于org.springframework.web.client.restemplate.execute(restemplate.java:502) 位于org.springframework.web.client.restemplate.getForObject(restemplate.java:239) 位于com.leggmason.lmpamfs.controllers.RegionController.fetch(RegionController.java:61) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215) 位于org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 位于org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 位于org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749) 位于org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689) 位于org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83) 位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938) 位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 位于org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 位于org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 位于org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 位于org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:339) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409) 位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044) 位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) 位于java.lang.Thread.run(未知源) 控制器代码:

@RequestMapping(value = "/region1", method = RequestMethod.GET,headers="Accept=application/json", produces = "application/json")
    public ModelAndView fetch() throws Exception{
        System.out.println("Inside rest controller body");

        restTemplate= new RestTemplate();
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();


        messageConverters.add(jsonMessageConverter);
        messageConverters.add(new StringHttpMessageConverter());
        restTemplate.setMessageConverters(messageConverters);
        List<CodeLookupBean> region = Arrays.asList(restTemplate.getForObject("http://localhost:9080/lmpamfsWebApp/region", CodeLookupBean[].class));



        return new ModelAndView(jsonView_i, DATA_FIELD, region);
    }
@RequestMapping(value=“/region1”,method=RequestMethod.GET,headers=“Accept=application/json”,products=“application/json”)
public ModelAndView fetch()引发异常{
System.out.println(“内部静止控制器主体”);
restTemplate=新的restTemplate();
列表>();
添加(jsonMessageConverter);
messageConverters.add(新的
 @RequestMapping(value = "/region", method = RequestMethod.GET,headers="Accept=application/json", produces = "application/json")
    public ModelAndView fetchRegion() throws Exception{
        System.out.println("Inside rest body");
        List<CodeLookupBean> region = props.getRegion();
        return new ModelAndView(jsonView_i, DATA_FIELD, region);
}