问题标签 [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 投票
4 回答
12772 浏览

java - RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry

对于服务器端的 RMI,我们需要启动rmiregistry程序,还是只调用LocateRegistry.createRegistry?如果两者都可以,有什么优点和缺点?

0 投票
1 回答
3725 浏览

java - JUnit 和 RMI 应用程序的最佳实践,RMI 注册表

我正在寻找为 RMI 客户端应用程序编写一组系统集成测试。我想在 JUnit 3.8.2 中启动 RMI 服务器,然后运行这些测试。有人做过吗?

我在主要的 pojo 中使用这样的东西:

将其转换为 junit 测试的最佳方法是什么,以便注册表仅启动一次并且仅在注册表实际启动时才运行测试?我想避免使用一种测试方法的测试类,其中包含来自 main 的所有测试代码,这是我在来到这里之前发现自己正在做的事情。

另外,在编写测试时我应该注意什么?任何 RMI 测试陷阱?

0 投票
9 回答
61020 浏览

java - 运行 rmi 服务器,classnotfound

嗨,我正在尝试运行一个将类绑定到命名服务器的 java 应用程序,但我不断收到 ClassNotFoundException

首先我启动注册表:

rmir​​egistry

然后从eclipse我尝试执行服务器但得到这个错误

java.rmi.ServerException:服务器线程发生RemoteException;嵌套异常是:java.rmi.UnmarshalException:错误解组参数;嵌套异常是: java.lang.ClassNotFoundException: progInternet2008.commons.NominabileFactory at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250) at sun.rmi.transport.Transport$1.run(Transport.java:159) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:155) at sun.rmi .transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler。在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang .Thread.run(Thread.java:619) 在 sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255) 在 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233) 在 sun.rmi。 server.UnicastRef.invoke(UnicastRef.java:359) at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source) at progInternet2008.Pozzobon.tesi.Slave.main(Slave.java:54) 原因:java.rmi。 UnmarshalException:解组参数错误;嵌套异常是:java.lang.ClassNotFoundException: progInternet2008.commons.NominabileFactory at sun.rmi.registry.RegistryImpl_Skel。

我已经阅读了 RMI Java 教程,但仍然无法正常工作......

作为VM Arguments,我设置了这个:

-Djava.rmi.server.codebase=文件:${workspace_loc}/progInternet2008

请帮我

(我正在使用 Java 6)

0 投票
2 回答
3360 浏览

java - 连接到 Websphere rmi 服务器

我正在尝试对作为安装在 Websphere 中的应用程序的一部分运行的远程对象进行远程调用。最终的解决方案将是 RPG 到本地 java cilent 来调用调用 web 服务的远程服务。这主要是因为我们有一组代码来调用 web 服务并进行 xml 解析,而且 iSeries 不能直接访问互联网。

Iseries WebSphere 服务器 RPG>Java --> Java->Webservice

在我的 RMI 服务器类中,我正在这样注册

如果我在我的本地机器上使用 jdk,那么我运行“rmiregistry”并且可以连接,如果它在 Websphere 中运行,我如何连接到该类。我假设 websphere 在端口 2813 上运行 rmi 服务器,如管理控制台中所述。

我目前遇到读取超时问题

我是使用 RMI 的新手,我可能会假设很多/很少:S

谢谢,斯科蒂布

0 投票
2 回答
539 浏览

java - java rmi 异常

我正在编写一个 rmi 应用程序。当我将所有类放在一个目录中时,一切正常。但是,当我尝试拆分服务器部分和客户端部分时,它会引发 java.lang.ClassNotFoundException.myclasses 这似乎是注册表在其 CLASSPATH 上找不到该类。我想知道如何解决这个问题?

0 投票
1 回答
4442 浏览

java - java.rmi.registry.Registry 和 java.rmi.Naming 类之间的区别

Registry类和类有什么区别Naming

在我的应用程序中,我正在使用Registry类。但我想知道Naming类及其用途?

0 投票
2 回答
3380 浏览

java - RMI 绑定问题(从 Windows RMI 服务器到 Ubuntu RMI 注册表)

我有一个 RMI 服务器,它在 localhost 上运行时正确绑定到 RMI 注册表(以证明设置正确)。执行此操作的代码是:

我的 localhost 使用以下 Java 版本运行 Windows:

现在,我的问题是我想绑定到在另一台机器上运行的 RMIRegistry(运行 Ubuntu 10.04,使用 OpenJDK IcedTea6 1.8.1,java 版本 1.6.0_18)。

在这台 Ubuntu 机器上,我的 CLASSPATH (echo $CLASSPATH) 中没有任何内容,并且正在运行 OpenJDK RMIRegistry(而不是与 Ubuntu 捆绑的那个):

现在,在上面的代码中,当变量 rmiServerHostname 是“localhost”并且 RMIRegistry 在我的 Windows localhost 上运行时,代码可以正常工作(RMI 服务器代码绑定到 RMI 注册表)。但是,当 rmiServerHostname 是我的远程 Ubuntu 机器(“神”)时,“重新绑定”调用会引发以下异常:

如果我杀死 RMIRegistry,我会收到一条不同的错误消息(我希望):

我会假设 RMIRegistry 的这些实现(Windows Java6 和 Ubuntu OpenJDK 6)之间没有不兼容性......但是,我不确定如何深入了解这一点。特别是因为我知道代码可以正常工作(在第一个 Windows/localhost 示例中)。


迄今为止的进展

非常感谢您的帮助。我知道我对 rmiServerHostname(在我的本地主机上运行)和 rmiRegistryHostname(在“神”上运行)感到困惑。我已经用以下内容修改了代码,但仍然遇到同样的问题(注意“Registry registry = LocateRegistry.getRegistry( rmiRegistryHostname )”行中的更改):

打印语句的输出是(注意,我的本地主机是 'RTPC-16')

该文件确实存在:

所以,再次总结一下:

  • 当 RMIRegistry 和 RMIServer 位于同一物理主机(例如,localhost)上时,此代码有效
  • 当我尝试在单独的主机上运行RMIRegistry 进程时会出现问题(即 RMIRegistry 正在“神”上运行,而 RMIServer 正在我的本地主机“RTPC-16”上运行)
  • 我在客户端和服务器上捆绑了 RMI 接口代码库(“ReutersTickHistoryInterface.jar”),所以我没有预料到 RMI 需要传输任何类定义 - RMI 只是在客户端上创建存根类并处理实际的 RMI 调用
0 投票
3 回答
5197 浏览

java - 在与 RMIServer 不同的主机上运行 RMIRegistry

这可能吗?(假设 Java 6)

一个人为/简单的例子来说明我的观点是:

  • 我有一个定义明确的 RMI 接口,永远不会改变(一个 JAR 文件,没有模板参数)
  • 在主机 X 上运行的 RMIRegistry;
  • RMI 服务,它从主机 Y 到它的 registry.rebind()(主机 X 上的 RMIRegistry);和
  • 从主机 Z 执行 RMI 调用的 RMI 客户端

如果可能,我将如何在 RMI 服务(主机 Y 上的进程)上指定属性“java.rmi.server.codebase”?

如果主机 A 和 B 是同一台机器,则当“java.rmi.server.codebase”为“file:///C:/rmiCodebase/myCommonInterface.jar”时,此配置有效

如果主机 A 和 B 在不同的机器上,那么我在重新绑定时得到以下异常(在主机 Y 上设置了相同的“java.rmi.server.codebase”):

如果主机 A 和 B 位于不同的机器上,并且我通过 Web 服务器使接口 JAR 可用(其中“java.rmi.server.codebase”是“http://Y/rmiCodebase/myCommonInterface.jar”“ http://Z/rmiCodebase/myCommonInterface.jar"),然后我在重新绑定时得到这个稍微不同的错误:

我有点困惑 - 如果所有 RMI 服务都必须在与 RMIRegistry 相同的物理主机上运行,​​这似乎非常受限制(这是我成功开始工作的唯一事情)

归根结底,我只希望机器 Z 能够对运行在机器 Y 上的服务进行 RMI 调用。我正在为机器 Y 和 Z 上运行的进程提供 myCommonInterface.jar。我什至不希望机器 X 必须使用通用(远程)接口做任何事情!

虽然以下链接很有用,但它不能帮助我回答这个问题:http: //download.oracle.com/javase/1.4.2/docs/guide/rmi/codebase.html

0 投票
2 回答
6576 浏览

java - RMI 连接被拒绝

我正在尝试建立一个 rmi 连接。我遇到了许多安全问题,但无法找到解决所有这些问题的方法。我执行我的 jar 文件:

我用来创建它的代码是:

我收到的错误跟踪是:

我尝试了不同的方法来解决这个问题,任何人都可以在这里看到问题吗?

谢谢

0 投票
1 回答
4170 浏览

java - RMI 连接错误客户端

尝试连接到 RMI 服务时出现错误:

我正在使用以下命令执行客户端代码:

我正在使用的代码是:

我收到的错误是:

有谁知道这里有什么问题?