还有使用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服务。

目录
相关文章
|
5天前
|
缓存 小程序 前端开发
Java服务器端技术探秘:Servlet与JSP的核心原理
【6月更文挑战第23天】Java Web开发中的Servlet和JSP详解:Servlet是服务器端的Java小程序,处理HTTP请求并响应。生命周期含初始化、服务和销毁。创建Servlet示例代码展示了`doGet()`方法的覆盖。JSP则侧重视图,动态HTML生成,通过JSP脚本元素、声明和表达式嵌入Java代码。Servlet常作为控制器,JSP处理视图,遵循MVC模式。优化策略涉及缓存、分页和安全措施。这些技术是Java服务器端开发的基础。
|
5天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
|
5天前
|
前端开发 安全 Java
Java服务器端开发实战:利用Servlet和JSP构建动态网站
【6月更文挑战第23天】**Servlet和JSP在Java Web开发中扮演关键角色。Servlet处理业务逻辑,管理会话,JSP则结合HTML生成动态页面。两者协同工作,形成动态网站的核心。通过Servlet的doGet()方法响应请求,JSP利用嵌入式Java代码创建动态内容。实战中,Servlet处理数据后转发给JSP展示,共同构建高效、稳定的网站。虽然新技术涌现,Servlet与JSP仍为Java Web开发的基石,提供灵活且成熟的解决方案。**
|
5天前
|
存储 缓存 安全
Servlet与JSP在Java服务器端开发中的实践与优化
【6月更文挑战第23天】本文探讨了Java中Servlet与JSP在在线书店系统开发中的应用,强调了它们在动态网站构建和Web效率中的作用。通过实例,展示了Servlet如何作为控制器处理用户登录,JSP则利用EL表达式呈现数据。此外,文章提及了性能优化如分页和缓存,以及安全措施如防止SQL注入和XSS攻击,强调了全面掌握和应用这些技术的重要性,以创建高效、安全的Web应用。
|
5天前
|
前端开发 小程序 Java
深入解析Java Servlet与JSP:构建高效服务器端应用
【6月更文挑战第23天】Java Servlet和JSP是Web开发的关键技术,用于构建高效服务器端应用。Servlet处理HTTP请求,执行业务逻辑,而JSP专注于动态HTML生成。两者结合,借助MVC架构,实现逻辑与视图分离,提高代码可读性和性能。尽管有新框架出现,Servlet和JSP仍是许多项目的基础。
|
5天前
|
Java Android开发
Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。
【6月更文挑战第23天】 Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。客户端连接服务器,发送"Hello, Server!"后关闭。注意Android中需避免主线程进行网络操作。
28 4
|
1天前
|
数据采集 Java API
Java HTTP客户端工具的演变之路
Java HTTP客户端工具的演变之路
7 0
|
3天前
|
Java
java使用多线程编写服务端与客户端文件上传程序
java使用多线程编写服务端与客户端文件上传程序
6 0
|
3天前
|
Java
java使用ServerSocket和Socket实现客户端与服务端通讯
java使用ServerSocket和Socket实现客户端与服务端通讯
12 0
|
6天前
|
网络协议 Java Linux
探索Java Socket编程:实现跨平台客户端-服务器通信的奥秘
【6月更文挑战第21天】Java Socket编程示例展示了如何构建跨平台聊天应用。服务器端使用`ServerSocket`监听客户端连接,每个连接启动新线程处理。客户端连接服务器,发送并接收消息。Java的跨平台能力确保代码在不同操作系统上无需修改即可运行,简化开发与维护。