问题标签 [rmiregistry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1310 浏览

java - 如何告诉 rmiregistry 在哪里寻找课程?

甲骨文说registry

同一主机上的 RMI 服务器使用引导命名服务将远程对象绑定到名称

现在,我有这样一个服务器,rmiregistry用于提供JNDI.

和人类:

rmiregistryrmiregistry &. 然而,当我运行代码时,它抱怨在执行时无法解组参数,bind因为Person找不到类。

我知道rmiregistry找不到类文件,但我不明白为什么。这是告诉它在哪里可以找到要绑定的类的正确方法吗?

0 投票
1 回答
4203 浏览

java - RMI ConnectException:连接拒绝主机:127.0.0.1

java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: [java] java.net.ConnectException: Connection refused (Connection refused)尽管我已经完成了迄今为止在论坛上找到的所有提示,但在运行我的 Ant build.xml时出现此错误。

构建.xml 文件

客户政策

服务器策略

创建和运行 RMI 注册表

我的 /etc/hosts 文件

任何帮助将不胜感激。

0 投票
0 回答
822 浏览

java - RMI Registry 和 RMI Server 是否有不同的端口号?

我对 RMI 的印象好像它们是不同的服务器。我写一个接口为:

对象作为对象的类:

我希望上述类的 add() 方法卡在 while 循环中。

我将服务器程序编写为:

然后客户端程序:

我在端口 1099 启动 rmiregistry 并运行 nmap 命令:

我的系统中已经运行了一个 Web 服务器。然后我运行服务器程序:

然后在我在不同的机器上运行客户端之后:

由于 add() 方法卡在了 while 循环中,所以 RMI 服务器还没有完成。如果我再次运行 nmap,它不会显示任何额外的开放端口。

两个服务器是不同的还是相同的?

0 投票
2 回答
4209 浏览

java - java.lang.ClassCastException: com.sun.proxy.$Proxy1 无法转换为

服务器:

客户:

问题是在铸造时发生异常,在这种情况下,它发生在:ProductFacade product_1 = (ProductFacade) registry.lookup(product_id);

例外:

0 投票
1 回答
217 浏览

java - 是否可以仅在 Java RMI 中的特定环回地址上创建注册表?

我正在使用 Java RMI。客户端和服务器在同一台机器上。要在服务器上启动注册表,我目前正在使用

所以我的注册表是在我的机器的 IP 和指定的端口上启动的。客户端使用此代码获取注册表

而且当我使用其他环回地址之一时,例如 127.0.0.2、127.0.0.3 .. 127.255.255.254。在创建注册表时,我是否有可能只为一个环回地址指定 IP(例如,仅用于 127.0.0.1)?没有类似的方法:

0 投票
1 回答
576 浏览

java - 无法将(服务)对象从 RMI 服务器发送到客户端

我一直在绞尽脑汁试图找出问题所在,我很确定服务器连接建立得很整齐。我什至放了一些系统打印以确保发送和接收对象。让我先发布我的代码。

RemoteService.java(接口):

服务器提供的服务使用的Service.java(接口):

RSimpl.java(RemoteService 接口实现者)

Client.java(客户端,这看起来很脏:p)

StartServer.java(实例化 RSimpl 对象并启动服务器)

Calculator.java(计算器服务,无需勾选)

DiceRoll.java(DiceRoll Service,这个不用勾选)

DigitalClock1.java(无需检查——这些仅用于编译目的)

我正在start rmiregistry 9797testrmi目录(包)所在的目录运行。然后我java testrmi.StartServer从同一个目录运行。我得到服务器正在运行消息,然后我从另一个目录运行客户端,但具有相同的包名,仅包含 Client.class、RemoteService.class 和 Service.class;客户端启动正常,显示所有三个服务,但是当我从列表中选择时,我收到异常错误“无法加载服务,重试?”。

注意:如果我在客户端包目录中复制服务(calculator.class、diceroll.class 和 digitalclock1.class),客户端会正确加载服务。我不希望客户端直接访问服务而不连接到服务器。

0 投票
1 回答
1731 浏览

java - 互联网上的 Java RMI 连接

我正在尝试从托管在不同网络上的服务器获取远程对象。我能够在同一台机器和同一网络上连接,但是当我尝试从不同的网络获取它时,我得到:

连接拒绝主机:192.168.1.131;嵌套异常是:java.net.ConnectException:连接超时:连接

查找功能似乎在错误的网络中搜索。我尝试使用 System.setProperty 但它不起作用。这里的代码:

服务器

客户

我还需要java.rmi.server.hostname在客户端 jar 中设置吗?

0 投票
1 回答
96 浏览

java - java rmi 简单项目classNotFoundException 绑定注册表

好的,我相信这应该很容易,但是我对 Java 还很陌生(我更像是一个 .NET 男孩:P),并且在遵循我在这里发现的每一个建议都没有成功之后,我认为是时候退后一步问。

我正在尝试使用客户端、服务器和定义了通用接口的通用项目来启动一个简单的 rmi 项目。我刚刚实现了我的服务器代码,当我尝试运行它以检查一切是否正常时,我遇到了 java.lang.ClassNotFoundException。

在对类似问题进行了多次回答之后,我很确定我的问题来自 rmiregistry 在与我的项目不同的位置上运行。

我使用以下代码来设置注册表代码库:

}

然后,我尝试使用这个主类启动我的服务器代码:

}

但是当我运行它时,总是在 IRegulador 接口处得到一个 java.lang.ClassNotFoundException。

现在有趣的部分:

  • 我已经打印到控制台 java.rmi.server.codebase 值,它指向定义 IRegulador 接口的项目的 bin 文件夹。(file:/F:/Practicas%20y%20dem%c3%a1s/Sistemas%20Distribuidos/common/bin/)
  • 显然,该项目也设置在服务器项目(Regulador)的类路径中
  • Workspace 和 rmiregistry 位于不同的磁盘上
  • 尽管如此,这似乎不是一个全局类路径问题,因为 Utils 类与 IRegulador 接口在同一个项目中,并且它在抛出异常之前运行(因为 java.rmi.server.codebase 设置正确)。

我尝试在调用它之前设置 rmiregistry 的类路径(尽管在某些答案上直接不鼓励),但没有任何改变。我也尝试从 Regulador 项目 bin 文件夹中启动 rmiregistry.exe,但似乎也没有改变任何东西。

来自 .NET 背景,我总是发现这些类路径问题令人困惑,而且这个问题开始消耗的时间比我怀疑它应得的要多得多。我迫切需要帮助。

更新:我开始认为问题出在从 IRegulador.class 传递到代码库的 url 中。如果我将它粘贴到 Windows 资源管理器中,SO 无法找到它,所以我认为它的构建存在一些阻止注册表到达路由的结构问题:

文件:/F:/Practicas%20y%20dem%c3%a1s/Sistemas%20Distribuidos/common/bin/

UPDATE2:我认为路径路径可能太复杂了,所以我决定对其进行简化并将其从任何非直线字符中剥离。现在代码库值是

文件:/F:/Practicas/SD/common/bin/

但是问题仍然存在,我不知道为什么 rmiregistry 无法访问该文件夹。

然后我决定将整个项目移动到执行 rmiregistry 的同一个磁盘上,看看它是否有任何改变。但没有任何改变,同样的问题。

0 投票
1 回答
860 浏览

java - LocateRegistry.createRegistry() 不会使应用程序保持活动状态

我已经调试了每一行代码以及多个工作示例,但由于某种原因,当我启动 RMI 服务器时,我的 java 应用程序刚刚关闭。

我希望 java 应用程序能够继续运行,因为我已经启动了一个注册表并且我已经反弹了一个实现java.rmi.Remote.

但是发生的情况是应用程序在创建完所有内容后立即停止。

这是我的 Main.java:

我的 Server.java 看起来像这样:

服务器扩展的接口位于“共享”模块中。我用那个模块开始了这个项目,并添加了像服务器这样的模块。

这是我的控制台输出:

如您所见,当注册表绑定远程对象时,该进程立即关闭。

0 投票
0 回答
1055 浏览

rmi - java.rmi.ServerError:服务器线程发生错误;嵌套异常是:

我正在将 jdk 从 8 升级到 10 并得到一个异常:

rmir​​egistry可以正常启动,但是我的RMI服务器程序无法绑定我的对象。为什么?