我如何知道是使用标准Java网络还是Java RMI?

时间:2013-02-01 00:42:41

标签: java network-programming rmi

我正在讨论是否应该将java RMI或标准Java网络用于我正在使用的应用程序。

该应用程序将是一个具有心跳传感器和故障保护功能的联网系统。所以它是一个三层系统,至少有一个DB和Java应用程序。

因此,如果我的数据库在一台机器上出现故障,我希望第二台机器“感知”这个。

我对Java RMI有点困惑,是否值得学习它。

或者如果我使用标准的Java网络,我可以像RMI一样吗?我的意思是,如果我真的非常了解Java网络。

谢谢!

2 个答案:

答案 0 :(得分:2)

现在使用SOAP或REST设置Web服务非常容易。使用REST,您可以使用XML或JSON消息,而无需了解所有相关信息。可以从.NET代码或PHP或Javascript访问所有这些类型的服务。 (嗯......除了.NET和Java之外,SOAP是一种痛苦。//个人意见)

Spring可以帮助您设置服务,并且客户端界面非常简单。相当接近标准的bean类和业务方法的注释定义了接口,Spring完成了繁重的工作。 (我说的是Spring Web Services而不是Spring Remoting,虽然这样也行。Spring Remoting并不比RMI IMHO好多了。)

您还可以使用Jersey(JAX-WS)或Jackson(Parse JSON)进行远程处理。关于bean类的标准注释以及什么不构建接口。 CXF也将执行JAX-WS和JAX-RS。这些是用于构建服务的Java标准和通过远程消息进行通信的客户端。

另外,还有用于生成远程接口两侧的eclipse工具。所有都与某些框架相关(Axis-2或CXS是一些)。它是一种代码生成的东西。

您可能希望仔细研究这些内容,看看哪一个与您看待事物的方式产生共鸣。

我知道我更喜欢使用RMI而不是所有这些。但是我很久没有直接使用RMI了。

答案 1 :(得分:1)

RMI是更高级别的协议,而Java中通过Socket类提供的裸TCP / IP支持,您似乎称之为“Java网络”。如果您的系统唯一做的就是发送心跳,并且由于简单原因,您应该选择RMI的节点很少。由于所有参与者都是JVM,因此不需要任何互操作和额外的库来支持它,并且由于参与者数量有限,因此无需考虑任何花哨的东西。