还有使用JAVA的RMI实现客户端和服务器端通信的方法吗?

简介: JAVA的RMI实现样例

不知道现在还有多少人在使用仅限于JAVA语言的RMI远程调用方式,在此写一个小demo,供大家了解或者回顾一下这种感觉被遗弃方式。

packagecom.rmi;
importlombok.AllArgsConstructor;
importlombok.Data;
importjava.io.Serializable;
@Data@AllArgsConstructorpublicclassUserimplementsSerializable {
privatestaticfinallongserialVersionUID=2159427410483687648L;
privateIntegerid;
privateStringusername;
}
packagecom.rmi;
importjava.rmi.Remote;
importjava.rmi.RemoteException;
publicinterfaceUserServiceextendsRemote {
UserselectUserById(IntegeruserId) throwsRemoteException;
}
packagecom.rmi;
importjava.rmi.RemoteException;
importjava.rmi.server.UnicastRemoteObject;
publicclassUserServiceImplextendsUnicastRemoteObjectimplementsUserService {
publicUserServiceImpl() throwsRemoteException {
    }
@OverridepublicUserselectUserById(IntegeruserId) throwsRemoteException {
System.out.println("用户管理服务接收到客户端请求,请求参数 userId = "+userId);
// 模拟假数据返回returnnewUser(userId, "张三");
    }
}
packagecom.rmi;
importjava.net.MalformedURLException;
importjava.rmi.AlreadyBoundException;
importjava.rmi.Naming;
importjava.rmi.RemoteException;
importjava.rmi.registry.LocateRegistry;
publicclassPublish {
publicstaticvoidmain(String[] args) throwsRemoteException {
UserServiceuserService=newUserServiceImpl();
try {
// 对外暴露的服务端口LocateRegistry.createRegistry(8888);
// 对外暴露的服务地址Naming.bind("rmi://localhost:8888/userService", userService);
System.out.println("服务发布成功!");
        } catch (AlreadyBoundExceptione) {
e.printStackTrace();
        } catch (MalformedURLExceptione) {
e.printStackTrace();
        }
    }
}
packagecom.rmi;
importjava.net.MalformedURLException;
importjava.rmi.Naming;
importjava.rmi.NotBoundException;
importjava.rmi.RemoteException;
publicclassUserController {
publicstaticvoidmain(String[] args) {
try {
UserServiceuserService= (UserService) Naming.lookup("rmi://localhost:8888/userService");
Useruser=userService.selectUserById(1);
System.out.println("远程服务调用成功,返回值信息为:"+user);
        } catch (NotBoundExceptione) {
e.printStackTrace();
        } catch (MalformedURLExceptione) {
e.printStackTrace();
        } catch (RemoteExceptione) {
e.printStackTrace();
        }
    }
}

Publish即RMI的服务器端启动程序,UserController是RMI的客户端调用程序,可以运行看到客户端输出结果为:远程服务调用成功,返回值信息为:User(id=1, username=张三)

主要是定义接口和接口的实现类,然后是发布一个RMI服务。

目录
相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
19天前
|
SQL 存储 关系型数据库
MySQL/SqlServer跨服务器增删改查(CRUD)的一种方法
通过上述方法,MySQL和SQL Server均能够实现跨服务器的增删改查操作。MySQL通过联邦存储引擎提供了直接的跨服务器表访问,而SQL Server通过链接服务器和分布式查询实现了灵活的跨服务器数据操作。这些技术为分布式数据库管理提供了强大的支持,能够满足复杂的数据操作需求。
62 12
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
57 4
|
2月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
76 4
|
2月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
30 1
|
3天前
|
弹性计算 数据挖掘 应用服务中间件
阿里云轻量应用服务器68元与云服务器99元和199元区别及选择参考
目前阿里云有三款特惠云服务器,第一款轻量云服务器2核2G68元一年,第二款经济型云服务器2核2G3M带宽99元1年,第三款通用算力型2核4G5M带宽199元一年。有的新手用户并不是很清楚他们之间的区别,因此不知道如何选择。本文来介绍一下它们之间的区别以及选择参考。
146 84
|
13天前
|
机器学习/深度学习 人工智能 PyTorch
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
阿里云GPU云服务器怎么样?阿里云GPU结合了GPU计算力与CPU计算力,主要应用于于深度学习、科学计算、图形可视化、视频处理多种应用场景,本文为您详细介绍阿里云GPU云服务器产品优势、应用场景以及最新活动价格。
阿里云GPU云服务器怎么样?产品优势、应用场景介绍与最新活动价格参考
|
12天前
|
存储 运维 安全
阿里云弹性裸金属服务器是什么?产品规格及适用场景介绍
阿里云服务器ECS包括众多产品,其中弹性裸金属服务器(ECS Bare Metal Server)是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。分钟级的交付周期将提供给您实时的业务响应能力,助力您的核心业务飞速成长。本文为大家详细介绍弹性裸金属服务器的特点、优势以及与云服务器的对比等内容。
|
20天前
|
人工智能 JSON Linux
利用阿里云GPU加速服务器实现pdf转换为markdown格式
随着AI模型的发展,GPU需求日益增长,尤其是个人学习和研究。直接购置硬件成本高且更新快,建议选择阿里云等提供的GPU加速型服务器。
利用阿里云GPU加速服务器实现pdf转换为markdown格式
|
4天前
|
存储 人工智能 网络协议
浅聊阿里云倚天云服务器:c8y、g8y、r8y实例性能详解与活动价格参考
选择一款高性能、高性价比的云服务器对于企业而言至关重要,阿里云推出的倚天云服务器——c8y、g8y、r8y三款实例,它们基于ARM架构,采用阿里自研的倚天710处理器,并基于新一代CIPU架构,通过芯片快速路径加速手段,实现了计算、存储、网络性能的大幅提升。2025年,计算型c8y云服务器活动价格860.65元一年起,通用型g8y云服务器活动价格1187.40元一年起,内存型r8y云服务器活动价格1454.32元一年起。本文将为大家详细解析这三款实例的性能特点、应用场景以及最新的活动价格情况,帮助大家更好地了解阿里云倚天云服务器。