如何将Java RMI限制为特定接口?

时间:2017-10-28 10:44:00

标签: java rmi firewall

我们的产品有两个接口,即面向客户和内部接口。是否可以让rmi仅在特定接口(如环回)上运行,还是需要使用防火墙规则来阻止访问?

有没有办法让服务器只绑定到指定接口的请求?我发现这个属性可以在服务器上设置,这是否会阻止外部请求?

{{1}}

有没有办法让rmiregistry选择它所监听的界面,就像mysql的绑定选项一样?

这个问题似乎有关,但我希望得到一个更简单的答案: example

1 个答案:

答案 0 :(得分:1)

  

我发现可以在服务器上设置此属性,这是否会阻止外部请求?

-Djava.rmi.server.hostname=127.0.0.1

该属性控制将IP地址放入从此JVM导出的删除对象的存根中。如果您想将这些限制在' localhost'的客户端。设置这实际上是有效的,但它不是一个很好的解决方案。

您必须使用RMIServerSocketFactory导出远程对象,该ServerSockets创建LocateRegistry.createRegistry(int port, RMIServerSocketFactory ssf, RMIClientSocketFactory csf)绑定到您想要的特定IP地址。

  

有没有办法让rmiregistry选择它所监听的界面,就像mysql的绑定选项一样?

答案相同。您必须通过csf自行导出注册表。 RMIServerSocketFactory当然可以为空。

如果您在导出JVM中使用多个equals()实例,请确保y(n) = sum(k = 1 to 10 )( a(k)*y(n-k) ) + e(n). 明智地实施y(0) = a(1)*y(-1) + a(2)*y(-2) + .... + a(10)*y(-10) + e(0) = e(0) = 3 ,例如只要绑定IP地址相同,它们就是相同的。

  

这个问题似乎有关

不是。