原创

Java rmi开发实例  泽0715 新浪博…

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lyp0715/article/details/50553352

下载项目:http://pan.baidu.com/s/1T6eEq

RMI的开发步骤

  1. 先创建远程接口及声明远程方法,注意这是实现双方通讯的接口,需要继承Remote
  2. 开发一个类来实现远程接口及远程方法,值得注意的是实现类需要继承UnicastRemoteObject
  3. 通过javac命令编译文件,通过java -server 命令注册服务,启动远程对象
  4. 最后客户端查找远程对象,并调用远程方法

简单实例

首先为服务建立一个Model层,注意因为此对象需要现实进行远程传输,所以必须继承Serializable

复制代码
package rmi.model;

import java.io.Serializable;

//注意对象必须继承Serializable
publicclass PersonEntity implements Serializable {
privateint id;
private String name;
privateint age;

publicvoid setId(int id) {
this.id = id;
}

publicint getId() {
return id;
}

publicvoid setName(String name) {
this.name = name;
}

public String getName() {
return name;
}

publicvoid setAge(int age) {
this.age = age;
}

publicint getAge() {
return age;
}
}
复制代码

创建远程接口PersonService,注意远程接口需要继承Remote

复制代码
package rmi.service;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import rmi.model.*;

//此为远程对象调用的接口,必须继承Remote类
publicinterface PersonService extends Remote {
public List<</span>PersonEntity> GetList() throws RemoteException;
}
复制代码

建立PersonServiceImpl实现远程接口,注意此为远程对象实现类,需要继承UnicastRemoteObject

复制代码
package rmi.serviceImpl;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.LinkedList;
import java.util.List;

import rmi.model.PersonEntity;
import rmi.service.*;

//此为远程对象的实现类,须继承UnicastRemoteObject
publicclass PersonServiceImpl extends UnicastRemoteObject implements PersonService {

public PersonServiceImpl() throws RemoteException {
super();
// TODO Auto-generated constructor stub
}

@Override
public List<</span>PersonEntity> GetList() throws RemoteException {
// TODO Auto-generated method stub
System.out.println("Get Person Start!");
List
<</span>PersonEntity> personList=new LinkedList<</span>PersonEntity>();

PersonEntity person1
=new PersonEntity();
person1.setAge(
25);
person1.setId(
0);
person1.setName(
"Leslie");
personList.add(person1);

PersonEntity person2
=new PersonEntity();
person2.setAge(
25);
person2.setId(
1);
person2.setName(
"Rose");
personList.add(person2);

return personList;

}
复制代码

建立服务器端,在服务器端注册RMI通讯端口与通讯路径,然后通讯javac命令编译文件,通过java -server 命令注册服务。以下面代码为例,如果阁下将项目建立于D:\\RMI\RemotingService文件夹上时,则先输入D:\\RMI\RemotingService\src>javac rmi/remotingservice/Program.java获取Program.class(如何阁下使用的MyEclipse等开发工具,可跳过此步,直接在*/bin文件夹中直接调用已经生成的Program.class),然后输入D:\\RMI\RemotingService\src>java rmi/remotingservice/Program启动服务。

复制代码
package rmi.remotingservice;

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

import rmi.service.*;
import rmi.serviceImpl.*;

publicclass Program{

publicstaticvoid main(String[] args) {
try {
PersonService personService
=new PersonServiceImpl();
//注册通讯端口
LocateRegistry.createRegistry(6600);
//注册通讯路径
Naming.rebind("rmi://127.0.0.1:6600/PersonService", personService);
System.out.println(
"Service Start!");
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
复制代码

最后建立客户端进行测试,注意客户调用的RMI路径必须服务器配置一致

复制代码
package rmi.remotingclient;

import java.rmi.Naming;
import java.util.List;

import rmi.model.PersonEntity;
import rmi.service.*;

publicclass Program {
publicstaticvoid main(String[] args){
try{
//调用远程对象,注意RMI路径与接口必须与服务器配置一致
PersonService personService=(PersonService)Naming.lookup("rmi://127.0.0.1:6600/PersonService");
List
<</span>PersonEntity> personList=personService.GetList();
for(PersonEntity person:personList){
System.out.println(
"ID:"+person.getId()+" Age:"+person.getAge()+" Name:"+person.getName());
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
文章最后发布于: 2016-01-21 10:21:27
展开阅读全文
0 个人打赏

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览