package com.danny.rim;
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class AppEntry {
public static void main(String[] args) throws AlreadyBoundException, RemoteException {
UserInfoImpl userInfoImpl = new UserInfoImpl();
//使用提供的特定端口导出远程对象,以便能够接收传入的调用。
UserInfoInterface userInfoInterface = (UserInfoInterface)UnicastRemoteObject.exportObject(userInfoImpl,0);
//创建并导出接受指定 port 请求的本地主机上的 Registry 实例
Registry registry = LocateRegistry.createRegistry(8080);
//绑定对此注册表中指定 name 的远程引用。
registry.rebind("UserInfo", userInfoInterface);
System.out.println("服务器已经准备就绪,可随时调用。");
}
}
package com.danny.rim;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UserInfoImpl implements UserInfoInterface {
public UserInfo getUserInfo() throws RemoteException {
UserInfo userInfo = new UserInfo();
userInfo.setUser_id("admin");
userInfo.setUser_name("系统管理员");
userInfo.setUser_password("888888");
userInfo.setUser_email("admin@zyujie.com");
userInfo.setUser_dept("信息化建议中心");
return userInfo;
}
public String getUserName() throws RemoteException {
return "系统管理员";
}
public String getUserPassword() throws RemoteException {
return "888888";
}
/*
* 获取用户基本信息,此方法返回值是一个map
*/
public Map<String,String> getUserInfoMap() throws RemoteException{
Map<String,String> map = new HashMap<String, String>();
map.put("UserId", "admin");
map.put("UserPassword", "888888");
return map;
}
/*
* 获取用户基本信息,此方法返回值是一个List套javabean
*/
public List<UserInfo> getUserInfoListBean() throws RemoteException{
List<UserInfo> list = new ArrayList<UserInfo>();
UserInfo userOne = new UserInfo();
userOne.setUser_id("userOne");
userOne.setUser_name("用户111");
userOne.setUser_password("111111");
userOne.setUser_email("userOne@zyujie.com");
userOne.setUser_dept("行政部");
list.add(userOne);
UserInfo userTwo = new UserInfo();
userTwo.setUser_id("userTwo");
userTwo.setUser_name("用户222");
userTwo.setUser_password("222222");
userTwo.setUser_email("userTwo@zyujie.com");
userTwo.setUser_dept("人力资源部");
list.add(userTwo);
UserInfo userThree = new UserInfo();
userThree.setUser_id("userThree");
userThree.setUser_name("用户333");
userThree.setUser_password("333333");
userThree.setUser_email("userThree@zyujie.com");
userThree.setUser_dept("销售部");
list.add(userThree);
return list;
}
/*
* 获取用户基本信息,此方法返回值是一个List套map的方式
*/
public List<Map<String,String>> getCityInfoListMap() throws RemoteException{
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Map<String,String> mapSY = new HashMap<String, String>();
mapSY.put("cityName", "沈阳");
mapSY.put("cityArea", "东北");
list.add(mapSY);
Map<String,String> mapBJ = new HashMap<String, String>();
mapBJ.put("cityName", "北京");
mapBJ.put("cityArea", "华北");
list.add(mapBJ);
Map<String,String> mapSH = new HashMap<String, String>();
mapSH.put("cityName", "上海");
mapSH.put("cityArea", "华东");
list.add(mapSH);
Map<String,String> mapGZ = new HashMap<String, String>();
mapGZ.put("cityName", "广州");
mapGZ.put("cityArea", "华南");
list.add(mapGZ);
Map<String,String> mapXA = new HashMap<String, String>();
mapXA.put("cityName", "西安");
mapXA.put("cityArea", "西北");
list.add(mapXA);
Map<String,String> mapCD = new HashMap<String, String>();
mapCD.put("cityName", "成都");
mapCD.put("cityArea", "西南");
list.add(mapCD);
return list;
}
}
package com.danny.rim;
import java.io.Serializable;
public class UserInfo implements Serializable{
private static final long serialVersionUID = 1L;
private String user_id;
private String user_name;
private String user_password;
private String user_email;
private String user_dept;
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password;
}
public String getUser_email() {
return user_email;
}
public void setUser_email(String user_email) {
this.user_email = user_email;
}
public String getUser_dept() {
return user_dept;
}
public void setUser_dept(String user_dept) {
this.user_dept = user_dept;
}
}
package com.danny.rim;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import java.util.Map;
public interface UserInfoInterface extends Remote{
/*
* 获取用户名称
*/
public String getUserName() throws RemoteException;
/*
* 获取用户密码
*/
public String getUserPassword() throws RemoteException;
/*
* 获取用户基本信息,此方法返回值是一个JavaBean
*/
public UserInfo getUserInfo() throws RemoteException;
/*
* 获取用户基本信息,此方法返回值是一个map
*/
public Map<String,String> getUserInfoMap() throws RemoteException;
/*
* 获取用户基本信息,此方法返回值是一个List套javabean
*/
public List<UserInfo> getUserInfoListBean() throws RemoteException;
/*
* 获取用户基本信息,此方法返回值是一个List套map的方式
*/
public List<Map<String,String>> getCityInfoListMap() throws RemoteException;
}
package com.danny.rim;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.List;
import java.util.Map;
public class AppTest {
public static void main(String[] args) {
try {
//返回指定的 host 和 port 上对远程对象 Registry 的引用。如果 host 为 null,则使用本地主机。
Registry registry = LocateRegistry.getRegistry("127.0.0.1", 8080);
//返回注册表中绑定到指定 name 的远程引用
UserInfoInterface userInfoInterface = (UserInfoInterface) registry.lookup("UserInfo");
System.out.println("/*****************RMI String 返回********************/");
System.out.println("用户名称:" + userInfoInterface.getUserName());
System.out.println("用户密码:" + userInfoInterface.getUserPassword());
System.out.println("/*****************RMI JavaBean 返回********************/");
UserInfo userInfo = userInfoInterface.getUserInfo();
System.out.println("用户部门:" + userInfo.getUser_dept());
System.out.println("用户邮箱号:" + userInfo.getUser_email());
System.out.println("/*****************RMI Map 返回********************/");
Map<String,String> map = userInfoInterface.getUserInfoMap();
System.out.println("Map用户编号:" + map.get("UserId"));
System.out.println("Map用户密码:" + map.get("UserPassword"));
System.out.println("/*****************RMI List<Object> List套JavaBean 返回********************/");
List<UserInfo> userList = userInfoInterface.getUserInfoListBean();
for (int i = 0; i < userList.size(); i++) {
UserInfo users = (UserInfo)userList.get(i);
System.out.println("用户名称:" + users.getUser_name() + "--部门:" + users.getUser_dept() + "--邮箱:" + users.getUser_email());
}
System.out.println("/*****************RMI List套Map 返回********************/");
List<Map<String,String>> cityList = userInfoInterface.getCityInfoListMap();
for (int i = 0; i < cityList.size(); i++) {
Map<String,String> mapCity = (Map<String,String>)cityList.get(i);
System.out.println("城市名称:" + mapCity.get("cityName") + "----区域:" + mapCity.get("cityArea"));
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
这个"RMI例子"很可能是为了演示如何在Java应用中利用RMI进行跨JVM的交互。 在RMI中,一个JVM上的对象被称为服务端,它可以提供一些远程方法供其他JVM上的客户端调用。服务端需要将远程对象注册到RMI注册表中,这样...
通过学习和实践这个RMI例子,我们可以深入理解Java的分布式编程能力,这对于开发大型企业级应用或者分布式系统来说是非常有价值的。同时,了解RMI的工作原理也有助于我们更好地掌握其他类似技术,如JDBC、JNDI等。
这个"一个简单的RMI例子Java源代码"是为了帮助开发者更好地理解和应用RMI。 RMI的核心概念包括: 1. **远程接口(Remote Interface)**:这是定义远程方法的Java接口。它声明了客户端可以调用的那些方法,这些方法...
在这个"分布式调用RMI例子程序"中,我们主要关注的是如何使用RMI技术来创建和运行一个简单的分布式应用。 RMI的核心概念包括远程接口、远程对象和RMI注册表。首先,远程接口定义了可以在远程服务器上执行的方法,...
在这个"一个可以运行的RMI例子"中,我们可以深入理解RMI的工作原理以及如何在实践中应用。 RMI的核心概念包括远程接口、远程对象和RMI注册表。首先,远程接口定义了可以在远程服务器上执行的方法,这些接口需要继承...
在这个"rmi 例子和详细介绍的ppt"中,我们将会深入探讨RMI的概念、工作原理以及如何在Web应用程序中使用它。 首先,RMI的核心思想是将对象的方法调用跨越网络边界,使得一台机器上的客户端程序可以像调用本地对象...
Java EDNA RMI示例是将Java编程语言与EDNA数据库、JNative库以及远程方法调用(RMI)技术相结合的应用。这个项目的核心目的是演示如何从EDNA数据库中检索数据,然后通过RMI服务暴露这些数据,以便在不同的网络环境中...
Java Remote Method Invocation(RMI)是Java平台中用于...通过这个简单的例子,你可以了解到如何创建一个基本的RMI应用程序。在实际项目中,RMI可以与其他技术(如EJB、Spring框架)结合,构建更复杂的分布式系统。
Spring Remote Method Invocation (RMI) 是Java平台上的一个远程对象调用框架,它允许你在分布式环境中调用对象...通过理解并实践这个小例子,你将能够更好地掌握Spring RMI的用法,为构建更复杂的分布式系统打下基础。
根据提供的文件信息,本文将详细解释RMI(远程方法调用)的概念、工作原理以及一个简单的RMI示例。RMI是一种Java技术,允许在不同的Java虚拟机(JVM)之间进行远程过程调用。 ### RMI简介 RMI是Java平台提供的一种...
在这个例子中,我们将深入理解RMI的基本概念、工作原理以及如何创建一个完整的RMI通信系统。 首先,我们要知道RMI的核心思想是将对象的接口和其实现分开,接口在客户端,实现则在服务器端。当客户端调用接口方法时...
### Java RMI基础知识与示例解析 #### 一、RMI简介 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种用于实现分布式应用的技术。它允许对象在不同的JVM之间通过网络相互调用对方的方法,就...
NULL 博文链接:https://7wolfs.iteye.com/blog/916844
远程方法调用(Remote Method Invocation, RMI)是Java平台上的一个核心特性,它允许Java对象在不同的JVM之间进行通信,实现分布式计算。RMI是Java开发分布式应用的重要工具,尤其是在企业级应用中,如Spring框架就...
一个简单的RMI例子可能会包括一个`Product`类,它实现了远程接口,例如`IProductService`,提供产品相关的操作,如查询、添加或更新产品信息。服务器端会创建`Product`的实例,并将其导出和注册到RMI注册表。客户端...
RMI(Remote Method ...通过这个复杂的RMI例子,你可以深入理解远程方法调用的概念,以及如何在Java中实现分布式应用程序。同时,它也是一个很好的学习和实践平台,帮助开发者熟悉网络编程、异常处理和多层架构设计。
这个"JAVA RMI简单例子"旨在帮助我们深入理解RMI的基本原理和实现步骤。 RMI的核心概念包括远程接口、远程对象和RMIC编译器。首先,我们需要定义一个远程接口,该接口声明了可以在远程服务器上执行的方法。这些方法...
在这个简单的RMI例子中,我们将探讨以下几个关键知识点: 1. **注册表(Registry)**:RMI系统的核心组件,它就像是一个电话簿,保存了远程对象的引用。客户端通过注册表查找并获取远程对象的引用,然后就可以调用...