用参数调用spring中的远程方法

时间:2017-12-07 07:27:19

标签: java spring

我在服务器1上有一个带有Service Annotation的类。

@Service
public class MainHandler implements AbstractHandler {

   @Autowired
   private ServiceLocal defaultService;

   @Override
   public boolean execute(HttpServletRequest request, HttpServletResponse response) throws MsisdnServiceException {
          System.out.println("The default Request" + request);
   }
}

我希望在传递请求后从其他远程服务器调用此方法并从中获取响应,春天的方法是什么。

2 个答案:

答案 0 :(得分:1)

远程调用方法将使用一种名为RMI的技术,您可以轻松地进行谷歌搜索。

但是,由于你想使用HttpServletRequest和HttpServletResponse,你可能应该使用Spring MVC编写一个Http Controller。为此,你也可以谷歌,很容易找到优秀的教程和指南。

答案 1 :(得分:0)

您可以使用spring RestTemplate与服务器进行通信。

首先,您需要在server 1后端创建一个控制器,以便从server 2获取数据:

@RestController
public class MyController { 
    @RequestMapping(value = "/endpoint", method = RequestMethod.POST)
    String execute(@RequestBody MyClass object) {
          System.out.println("Your data" + object);
        }
    }

server 2后端创建一个方法,使用server 1RestTemplate的端点进行REST调用:

void request() {
    String url = "http://localhost:8080/endpoint";

    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.set("Content-Type", "application/json");

    JSONObject json = new JSONObject();
    json.put("name", "yourName");
    json.put("email", "name@gmail.com");

    HttpEntity < String > httpEntity = new HttpEntity < String > (json.toString(), httpHeaders);

    RestTemplate restTemplate = new RestTemplate();
    String response = restTemplate.postForObject(url, httpEntity, String.class);
}