Jersey REST 客户端请求 - 如何设置源 IP 地址

Posted

技术标签:

【中文标题】Jersey REST 客户端请求 - 如何设置源 IP 地址【英文标题】:Jersey REST client request - how to set source ip address 【发布时间】:2016-02-27 23:54:36 【问题描述】:

我的系统有许多以太网接口,如 eth0、eth1、eth3 等,为每个接口配置了不同的 IP 地址。

我的应用程序部署在这个系统上,作为 REST 客户端,它将向两个服务器 A 和 B 发出请求。要求是在向服务器 A 发送 REST 请求时,源 IP 地址应该是“eth0”IP 地址,而向服务器 B 发送请求,我应该使用“eth1” ip 地址。

我使用下面的代码发出客户端请求

client = ClientBuilder.newClient();
WebTarget webTarget = client.target(node.getUrl());
webTarget = target.path(path).resolveTemplatesFromEncoded(pathValues);
Builder builder = webTarget.request();
response = builder.post(entity);

我以为我可以在“客户端”中设置源 IP 地址,但找不到任何方法。您能告诉我如何为客户端请求设置此源 IP 地址吗?

【问题讨论】:

您必须以某种方式将自定义 SocketFactory 与 Jersey 一起使用。不是一件容易的事:/ 【参考方案1】:

如果 eth0、eth1... 位于不同的 IP 域中,操作系统将解决该问题并使用最佳接口。 如果不是http://docs.oracle.com/javase/tutorial/networking/nifs/definition.html 所以你需要在客户端下找到socket,我不知道jersey是否允许访问它。

【讨论】:

以上是关于Jersey REST 客户端请求 - 如何设置源 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jersey 获取完整的 REST 请求正文?

从 Jersey REST 客户端调用时出现 405 错误代码

使用jersey客户端消耗spring REST api

jersey rest web 服务与 Activemq 中间件集成

如何在 jersey 1.11 过滤器中添加自定义响应和中止请求

Jersey REST API 请求不起作用