[英]How to bind webservice client to specified IP (network interface) with Apache CXF?
我的问题是:有一个配置了2个NIC的RHEL默认服务器:
另外,在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.1和10.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.