如何使用Spring将请求转发到另一台服务器?

时间:2014-09-22 11:21:28

标签: java spring web-services servlets

我有一个客户端和一个服务器。客户端只包含UI和视图层以及控制器。服务器端包含服务和存储库层以及更复杂的东西。现在,用户使用以下控制器向客户端发送请求

@RequestMapping(value = "/save", method = RequestMethod.POST, produces = "application/json; charset=UTF-8")
   @ResponseBody
   public String save(HttpServletRequest request, HttpServletResponse response) throws IOException {

      return CallWebService.callWebServiceUrl(request);
   }

但是服务器端的控制器具有此URL的控制器,如下所示

@RequestMapping(value = "/save", method = RequestMethod.POST)
   @ResponseBody
   public CoaChartAccount save(@RequestBody MyObject object) {

      service.save(objCoaChartAccount);
      return object;
   }

现在我想知道如何将请求从客户端包含请求有效负载传递到另一端的这样一个控制器?

1 个答案:

答案 0 :(得分:2)

客户端控制器必须使用RestTemplate将数据发布到Web服务,有关详细信息,请参阅http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#rest-client-access

例如,您的客户端控制器应如下所示:

@RequestMapping(value = "/saveClient", method = RequestMethod.POST)
@ResponseBody
public CoaChartAccount save(@RequestBody CoaChartAccount object) throws IOException {
   return restTemplate.postForObject(URL_SAVING_MYOBJECT, object, CoaChartAccount.class);
}

服务器与您指定的服务器相同(标准的休息Web服务):

@RequestMapping(value = "/saveServer", method = RequestMethod.POST)
@ResponseBody
public CoaChartAccount save(@RequestBody CoaChartAccount object) {

  service.save(object);
  return object;

}