问题标签 [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.
java - RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry
对于服务器端的 RMI,我们需要启动rmiregistry
程序,还是只调用LocateRegistry.createRegistry
?如果两者都可以,有什么优点和缺点?
java - JUnit 和 RMI 应用程序的最佳实践,RMI 注册表
我正在寻找为 RMI 客户端应用程序编写一组系统集成测试。我想在 JUnit 3.8.2 中启动 RMI 服务器,然后运行这些测试。有人做过吗?
我在主要的 pojo 中使用这样的东西:
将其转换为 junit 测试的最佳方法是什么,以便注册表仅启动一次并且仅在注册表实际启动时才运行测试?我想避免使用一种测试方法的测试类,其中包含来自 main 的所有测试代码,这是我在来到这里之前发现自己正在做的事情。
另外,在编写测试时我应该注意什么?任何 RMI 测试陷阱?
java - 运行 rmi 服务器,classnotfound
嗨,我正在尝试运行一个将类绑定到命名服务器的 java 应用程序,但我不断收到 ClassNotFoundException
首先我启动注册表:
rmiregistry
然后从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)
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
谢谢,斯科蒂布
java - java rmi 异常
我正在编写一个 rmi 应用程序。当我将所有类放在一个目录中时,一切正常。但是,当我尝试拆分服务器部分和客户端部分时,它会引发 java.lang.ClassNotFoundException.myclasses 这似乎是注册表在其 CLASSPATH 上找不到该类。我想知道如何解决这个问题?
java - java.rmi.registry.Registry 和 java.rmi.Naming 类之间的区别
Registry
类和类有什么区别Naming
。
在我的应用程序中,我正在使用Registry
类。但我想知道Naming
类及其用途?
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 调用
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
java - RMI 连接被拒绝
我正在尝试建立一个 rmi 连接。我遇到了许多安全问题,但无法找到解决所有这些问题的方法。我执行我的 jar 文件:
我用来创建它的代码是:
我收到的错误跟踪是:
我尝试了不同的方法来解决这个问题,任何人都可以在这里看到问题吗?
谢谢
java - RMI 连接错误客户端
尝试连接到 RMI 服务时出现错误:
我正在使用以下命令执行客户端代码:
我正在使用的代码是:
我收到的错误是:
有谁知道这里有什么问题?