我正在讨论是否应该将java RMI或标准Java网络用于我正在使用的应用程序。
该应用程序将是一个具有心跳传感器和故障保护功能的联网系统。所以它是一个三层系统,至少有一个DB和Java应用程序。
因此,如果我的数据库在一台机器上出现故障,我希望第二台机器“感知”这个。
我对Java RMI有点困惑,是否值得学习它。
或者如果我使用标准的Java网络,我可以像RMI一样吗?我的意思是,如果我真的非常了解Java网络。
谢谢!
答案 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,因此不需要任何互操作和额外的库来支持它,并且由于参与者数量有限,因此无需考虑任何花哨的东西。