RM over SSL with single port on server(服务器上具有单端口的基于SSL的RM)
本文介绍了服务器上具有单端口的基于SSL的RM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
案例1-不带SSL
当我需要一个简单的RMI连接(没有SSL)时,我在服务器上使用以下代码
Registry registry = LocateRegistry.createRegistry(2004,rmiClientSocketFactory,rmiServerSocketFactory);
stub=UnicastRemoteObject.exportObject(someObj, 2004, rmiClientSocketFactory,rmiServerSocketFactory);
请注意,我在创建注册表和导出对象时都使用端口号。代码按预期运行,没有任何问题。
案例2-使用SSL
我使用与案例1相同的代码,只是两个工厂都是SSL工厂。结果-在服务器端,在端口2004上创建了一个套接字,但我的客户端无法连接到它-它抛出
java.rmi.ConnectIOException: non-JRMP server at remote endpoint
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:248)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:342)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at rmi.DateClient.perform(DateClient.java:48)
at rmi.DateClient.main(DateClient.java:38)
Exception occured: java.rmi.ConnectIOException: non-JRMP server at remote endpoint
要使其正常工作,我需要将服务器上的代码修改为
Registry registry = LocateRegistry.createRegistry(2004);
stub = UnicastRemoteObject.exportObject(someObj, 0, rmiClientSocketFactory, rmiServerSocketFactory);
此代码可以工作,但在服务器端创建了两个套接字,一个在端口2004上,一个在某个变量端口(例如45329)上。但我不想要两个插座。如何解释和修复?
推荐答案
要使其正常工作,我需要将服务器上的代码修改为
Registry registry = LocateRegistry.createRegistry(2004);
不。这是一个倒退的步骤:您正在从注册表中删除SSL。您需要修改客户端以在查找注册表时使用SSL。这意味着您必须使用Registry
类,而不是Naming
:
Registry registry = LocateRegistry.getRegistry(host, 2004, rmiClientSocketFactory);
MyRemoteInterface mri = (MyRemoteInterface)registry.lookup(...);
在任何情况下,您都不能在同一端口上拥有纯文本和SSL远程对象。
这篇关于服务器上具有单端口的基于SSL的RM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:服务器上具有单端口的基于SSL的RM
基础教程推荐
猜你喜欢
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 降序排序:Java Map 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01