繁体   English   中英

如何使用Apache CXF将Web服务客户端绑定到指定的IP(网络接口)?

[英]How to bind webservice client to specified IP (network interface) with Apache CXF?

我的问题是:有一个配置了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,IP 10.100.0.1上的传入数据时,需要使用“-b”开关运行.sh:run.sh -b 10.100.0.1,这很简单干净。

但我想扩展我的问题:我想强制JBoss在其他主机上使用10.100.100.1作为网络流量的源IP来调用Web服务。 怎么做? 有没有任何开关/财产/什么,谁做的工作?

摘要:

JBoss的结合为eth0为听传入数据上10.100.0.110.200.0.1调用源IP 10.100.100.1 web服务。

请帮助我,任何想法都是真正的apreciated。 我想避免任何iptables / xinted重定向配置:-)

问候,

马里乌什

PS。 我在我的公司找到了另一个类似的问题(但本机JBoss WS相关......):我们的一个软件提供商修改了JBoss5的jbossws-native-core.jar以通过添加行来强制执行此行为:

bootstrap.setOption(“localAddress”,new InetSocketAddress(localAddress,0));

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

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

我建议只能通过eth1,然后让jboss听两个接口。 然后,Jboss会愉快地选择获取流量路由所需的源地址。

你可能需要在远程端有一些相应的路由,如果你有一些特殊的原因你只想听一个接口,或者,如果你无法控制它,你可以编写一个servlet过滤器来删除/拒绝所有到达的流量与错误的目标IP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM