【问题标题】:How to bind webservice client to specified IP (network interface) with Apache CXF?如何使用 Apache CXF 将 Web 服务客户端绑定到指定的 IP(网络接口)?
【发布时间】:2011-05-29 20:27:23
【问题描述】:

我的问题是:有一个配置了 2 个 NIC 的 RHEL 默认服务器:

  • eth0 与 IP 10.100.0.1
  • eth1 与 IP 10.100.100.1

另外,Red Hat 上安装了 jboss-6.0.0.20101110-CR1,在这个 JBoss 上部署了一个 EAR,这是一个简单的 servlet 监听传入的数据,经过一些处理,应用程序将处理后的数据转发到另一个 web另一个主机上的服务(例如 10.200.0.1),使用 Apache CXF 框架(这样的代理具有一些处理)。

现在,配置问题。

当JBoss需要监听eth0上传入的数据,IP10.100.0.1,需要run.sh加上“-b”开关:run.sh -b 10.100.0.1,很简单干净。

但我想扩展我的问题:我想强制 JBoss 以 10.100.100.1 作为网络流量的源 IP 调用其他主机上的 Web 服务。怎么做?是否有任何开关/属性/任何东西,可以完成这项工作?

总结:

JBoss 绑定到 eth0 以监听 10.100.0.1 上的传入数据并在 10.200.0.1 上调用源 IP 10.100.100.1 的 web 服务.

请帮助我,任何想法都非常感谢。我想避免任何 iptables/xinted 重定向配置:-)

问候,

马吕斯

PS。我在我的公司发现了另一个类似的问题(但与原生 JBoss WS 相关......):我们的一个软件提供商修改了 JBoss5 的 jbossws-native-core.jar 以通过添加以下行来强制这种行为:

bootstrap.setOption("localAddress", new InetSocketAddress(localAddress, 0));

到 NettyClient.java,当 localAddress 提供有 -D 开关并由代码中的 getProperty() 方法读取时。但我也想避免对 JBoss 组件进行任何修改...

【问题讨论】:

    标签: java networking jboss cxf


    【解决方案1】:

    如果 JBoss 只在一个 ip 上侦听,那么它将能够轻松地使用相同的 ip 进行回复。我建议你用路由解决这个问题,而不是用java中的黑客攻击。我推测,因为它已经在工作,10.200.0.1 实际上可以通过 eth0 和 eth1 访问。

    我建议让它只通过 eth1 可用,然后让 jboss 监听这两个接口。然后,Jboss 会很高兴地选择所需的任何源地址来路由流量。

    您可能需要在远程端进行一些相应的路由,如果您有某些特殊原因只想监听单个接口,或者,如果您无法控制,您可以编写一个 servlet 过滤器来丢弃/拒绝所有到达错误目的地 IP 的流量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 2013-10-03
      相关资源
      最近更新 更多