新建工程server
Bean
public class User implements Serializable,Cloneable{
/**
*
*/
private String account;
private String username;
private String password;
private int userType;
private String domain;
//get and set
}
接口
public interface RMIUser extends Remote {
/**注册用户
* @author JQW
* @createTime 2017年4月10日 下午3:23:05
* @param map
* @return
* @throws RemoteException
*/
public HashMap addUser(User user) throws RemoteException;
}
实现类
package com.eversafe.common.rmi.impl;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RMIUserImpl extends UnicastRemoteObject implements RMIUser {
private static final long serialVersionUID = 1L;
/**
* 因为UnicastRemoteObject的构造方法抛出了RemoteException异常,因此这里默认的构造方法必须写,必须声明抛出RemoteException异常
*
* @throws RemoteException
*/
public RMIUserImpl() throws RemoteException {}
@Override
public HashMap addUser(User user) throws RemoteException {
HashMap rmap = new HashMap<>();
boolean flag = false;
try{
if(user!=null){
flag =true;
}
}catch (NullPointerException e) {
//有信息为空
rmap.put("msg", "异常了");
}
rmap.put("flag", flag);
return rmap;
}
}
启动RMI
public class RMIServer {
public static void initRMI(){
try {
//创建一个远程对象
RMIUser user = new RMIUserImpl();
LocateRegistry.createRegistry(3348);
Naming.bind("rmi://localhost:3348/user",user);
System.out.println("-----------绑定成功!");
} catch (RemoteException e) {
System.out.println("创建远程对象发生异常!");
e.printStackTrace();
} catch (AlreadyBoundException e) {
System.out.println("发生重复绑定对象异常!");
e.printStackTrace();
} catch (MalformedURLException e) {
System.out.println("发生URL畸形异常!");
e.printStackTrace();
}
}
public static void main(String args[]) {
initRMI();
}
}
---------------------------------------------------------------------------------------------------------
新建工程Client
该工程需要server端的接口类 和 bean 导出的jar
eclipse:右键要导出的文件-export-JAR file-勾选文件-
客户端
发送消息
public class Client {
public static void addUser(User user){
try {
//在RMI服务注册表中查找名称为user的对象,并调用其上的方法
RMIUser ru =(RMIUser) Naming.lookup("rmi://101.200.129.238:3348/user");
HashMap map = ru.addUser(user);
System.out.println(map.get("flag"));
} catch (NotBoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
User user = new User();
user.setAccount("333");
user.setPassword("12345678");
user.setUsername("测试333");
user.setUserType(0);
addUser(user);
}
}