Java RMI IIOP是否可以在Internet上运行?

时间:2011-07-20 16:29:34

标签: java rmi

我知道RMI在LAN外部进行连接的时间很短。我想知道RMI IIOP是否可以通过互联网连接服务器客户端。可能吗 ?如果是,可能的解决方案是什么?

3 个答案:

答案 0 :(得分:4)

RMI在互联网上运行良好,它基于TCP。我个人使用KryoNet作为RMI实现。这没有麻烦,也非常迅速。序列化机制使用Kryo,它是最快的通用序列化库之一。请注意,防火墙可能存在问题。但是,您可以轻松地拥有一个侦听端口80的RMI服务器。这样可以正常工作(除非有大量数据包侦听,我猜)。 An RMI server that works over HTTP is interesting too.嗯。

答案 1 :(得分:0)

是的,但前提是防火墙处的端口是打开的。使用HTTP而不是RMI的优点是它可以很容易地通过代理服务器传递。

答案 2 :(得分:0)

就互联网范围内的使用而言,在本地RMI协议JRMP上使用IIOP没有特别的优势。

IIOP 使您能够使用非基于Java的代码调用Java对象,因此如果您想支持非Java客户端,您将需要考虑IIOP或其他东西更多浏览器/ JavaScript友好,如SOAP或XMLRPC。

如果您不需要支持非Java客户端,那么推荐IIOP并不多。使用IIOP,您将丢失JRMP提供的分布式垃圾收集,因此您必须决定何时不再发布任何RMI发布的对象。

使用JRMP,您必须担心手动管理的是绑定到RMI注册表的RMI对象。一旦对它们(本地和远程)的所有引用都被删除,您发布的所有其他对象将自动进行垃圾回收。如果您使用IIOP,则需要在需要使用它时手动调用PortableRemoteObject.unexportObject()。