大数据全系列 教程
1869个小节阅读:466.7k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
发布 RMI 服务,我们需要告诉 JNDI 三个基本信息:
它们构成了 RMI 协议的 URL(或称为“RMI 地址”):
rmi://
如果我们是在本地发布 RMI 服务,那么 host 就是“localhost”。此外,RMI 默认的 port 是“1099”,我们也可以自行设置 port 的值(只要不与其它端口冲突即可)。service 实际上是一个基于同一 host 与 port 下唯一的服务名,我们不妨使用 Java 完全类名来表示吧,这样也比较容易保证 RMI 地址的唯一性。
对于我们的示例而言,RMI 地址为:
rmi://localhost:1099/com.itbaizhan.zookeeper.rmi.server.HelloServiceImpl
我们只需简单提供一个 main() 方法就能发布 RMI 服务,就像下面这样:
xxxxxxxxxx
package com.itbaizhan.zookeeper.rmi.server;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class RmiServer {
public static void main(String[] args) throws Exception {
System.out.println("rmi server running...");
//定义发布RMI服务时使用的端口
int port = 1099;
//定义url
String url = "rmi://localhost:1099/com.itbaizhan.zookeeper.rmi.server.HelloServiceImpl";
//注册服务:在JNDI中创建了一个注册表
LocateRegistry.createRegistry(port);
//绑定服务:将RMI服务的实现类对象与url绑定
Naming.rebind(url,new HelloServiceImpl());
}
}
需要注意的是,我们通过 LocateRegistry.createRegistry() 方法在 JNDI 中创建一个注册表,只需提供一个 RMI 端口号即可。此外,通过 Naming.rebind() 方法绑定 RMI 地址与 RMI 服务实现类,这里使用了 rebind() 方法,它相当于先后调用 Naming 的 unbind() 与 bind() 方法,只是使用 rebind() 方法来得更加痛快而已,所以我们选择了它。
运行这个 main() 方法,RMI 服务就会自动发布,剩下要做的就是写一个 RMI 客户端来调用已发布的 RMI 服务。