Java rmi开发实例 泽0715 新浪博…
2016-01-21 10:21
447 查看
个人官方网站 :点击进入
下载项目:http://pan.baidu.com/s/1T6eEq
RMI的开发步骤
先创建远程接口及声明远程方法,注意这是实现双方通讯的接口,需要继承Remote
开发一个类来实现远程接口及远程方法,值得注意的是实现类需要继承UnicastRemoteObject
通过javac命令编译文件,通过java
-server 命令注册服务,启动远程对象
最后客户端查找远程对象,并调用远程方法
简单实例
首先为服务建立一个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();
}
}
}
下载项目:http://pan.baidu.com/s/1T6eEq
RMI的开发步骤
先创建远程接口及声明远程方法,注意这是实现双方通讯的接口,需要继承Remote
开发一个类来实现远程接口及远程方法,值得注意的是实现类需要继承UnicastRemoteObject
通过javac命令编译文件,通过java
-server 命令注册服务,启动远程对象
最后客户端查找远程对象,并调用远程方法
简单实例
首先为服务建立一个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();
}
}
}
相关文章推荐
- webService学习之schema生成java源…
- JAVA抓取网页的图片,JAVA利用正则…
- log4j+"maven"+"spring"中添加log4…
- MyEclipse怎么恢复默认视图的最全…
- MyEclipse中server报Could no…
- JFreeChart的使用 java …
- 一步一步教你用 java&n…
- MyEclipse启动后点击右键 提示未响…
- java发送邮件简单实现以及原理(亲…
- Spring中quartz的配置及使用(企业…
- maven安装以及MyEclipse配置maven…
- myeclipse常用快捷键(泽0715)新…
- java满天星系列之(二)JFrame实现满天星效果 泽0715
- java满天星系列之(三)JFrame实现满天星一闪一闪动态效果 泽0715
- 在spring中使用SqlMapClientTemplate操作数据库
- java满天星系列之(四)动态星星结合内存效果 泽0715
- java.util.Properties读取properties文件
- 使用Arrays类操作Java中的数组
- Java堆
- Java7中的switch支持String的实现细节