我是否需要一个用于机器对机器JavaRMI的web服务器?

我是否需要一个用于机器对机器JavaRMI的web服务器?,java,rmi,Java,Rmi,我试图让两个Java进程通过RMI进行对话。2016年。在Java8上 我有一种感觉,事情已经开始了,但我是一个守旧的人,我想坚持简单的RMI。大多数在线文档都相当陈旧。其余部分在RMI框架的各种更改之间。我们目前有:- 通过rmic的原始存根/骨架方法 Java 4之后动态生成的存根 JDK 7 Update 21中对codebase参数的更改 在本文中提到HTTP/FTP服务器 我有一个client.class和一个server.class,它们分别位于不同的物理机器上。我不确定是否需要

我试图让两个Java进程通过RMI进行对话。2016年。在Java8上

我有一种感觉,事情已经开始了,但我是一个守旧的人,我想坚持简单的RMI。大多数在线文档都相当陈旧。其余部分在RMI框架的各种更改之间。我们目前有:-

  • 通过rmic的原始存根/骨架方法

  • Java 4之后动态生成的存根

  • JDK 7 Update 21中对codebase参数的更改

  • 在本文中提到HTTP/FTP服务器

我有一个client.class和一个server.class,它们分别位于不同的物理机器上。我不确定是否需要运行独立的HTTP服务器(如ApacheHTTPD)来提供存根文件供客户端下载。这似乎是codebase参数的要点。这对我来说似乎也是多余的,尽管动态生成的存根文件不是由RMI注册表程序生成的。如果我必须运行httpd,这难道不是对拥有全Java解决方案的嘲弄吗?您将从web主目录提供哪些文件?它是否是server.class的第二个副本,而不是导出到RMI注册表的副本?这一切似乎有点混乱

那么,机器对机器RMI需要web服务器吗

那么,机器对机器RMI需要web服务器吗

否。您并不特别需要web服务器。只是服务器机器(具有通过远程对象实现的远程接口的机器)应该从客户端机器(机器调用方法)可见(可发现)

我已经构建了几个客户机-服务器应用程序和一个分布式计算应用程序,其中唯一的事情就是使被调用方基本上可以被调用方发现。就像在本地网络中运行的应用程序一样,只需配置
/etc/hosts
文件就可以了

我有一个client.class和一个server.class,它们分别位于不同的物理层上 机器。我不确定是否需要运行独立的HTTP 服务器(如apachehttpd)提供存根文件供下载 由客户提供

编号。以上已给出说明

这难道不也是一个嘲笑,如果我 必须运行httpd吗?你会在网上提供哪些文件 目录它会是server.class的第二个副本吗 是否导出到RMI注册表

对于在网络中运行的简单客户机-服务器应用程序(简单的非web应用程序),不需要任何web目录

远程对象的存根充当远程对象的客户端本地代表或代理。调用方调用本地存根上的方法,该方法负责对远程对象执行方法调用。在远程JVM中,每个远程对象可能都有一个对应的框架(在仅Java 2平台的环境中,不需要框架)。骨架负责将调用分派到实际的远程对象实现。有关JavaRMI体系结构的详细信息,请阅读链接


无需下载额外文件即可实现此目的。

您可以使用RMI,而无需使用代码库功能。这不是强制性的

它不仅提供对存根的访问,还提供对客户端可能不知道的任何其他服务器端类的访问:例如,如果指定了一个远程方法来返回接口或抽象类,则可以使用代码库特性来部署返回值的实际实现。这允许更新实现类,而无需大量的客户机部署问题。它应该被视为部署解决方案,而不是RMI的一个组成部分

我是一个守旧的人,我想坚持简单的RMI。大多数在线文档都相当陈旧

没有什么大的变化。1.5中的动态存根,1.7中的代码库调整,自1.2以来没有其他重大变化

我不确定是否需要运行独立的HTTP服务器(如ApacheHTTPD)来提供存根文件供客户端下载

你没有。见上文

这似乎是codebase参数的要点。这对我来说似乎也是多余的,尽管动态生成的存根文件不是由RMI注册表程序生成的

只有当您认为代码库特性仅适用于存根时,才可以使用它:请参见上文。您甚至可以将其反向使用,从客户端到服务器,用于接口的实现类或用作远程方法参数的抽象类

如果我必须运行httpd,这难道不是对拥有全Java解决方案的嘲弄吗

没有人说你必须运行HTTPD,甚至是HTTP服务器。例如,它可以是FTP。它可以是用Java实现的HTTP服务器。很多可能性。或者您根本无法使用该功能

您将从web主目录提供哪些文件?它是server.class的第二个副本吗

不,为什么?客户端不需要server.class

不是导出到RMI注册表的吗

这也不是server.class,而是存根

这一切似乎有点混乱

我不同意。您上面所做的任何猜测都不会出现在文档中

那么,机器对机器RMI需要web服务器吗


不需要。

RMI不需要web服务器-我成功地完成了本教程的学习,但没有HTTP服务器@板球,听上去太棒了。在中称为“Web服务器”的黄色框是什么意思?那么,为什么在同一个示例中还说“类定义通常通过web服务器通过网络访问”?你可能是在同一台机器上做的吗?我在大学里做了一个实验。我是