Java RMI远程方法调用

参考:

利用java-RMI进行大文件传输

RMI远程方法调用的简单方法和实例

RMI是类似RPC的一种远程方法调用协议,比RPC类型的WebService更简单,也可以跨进程访问

先来创建一个model或者javaBean,注意,该类必须实现序列化Serializable 

public class Person implements Serializable {
    private int id;
    private String name;
    private int age;
	public void setId(int id) {
		this.id = id;
	}
	public int getId() {
		return id;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
}

调用接口

//此为远程对象调用的接口,必须继承Remote类
public interface PersonService extends Remote {
    public List<Person> GetList() throws RemoteException;
}

实现接口,注意必须继承UnicastRemoteObject

public class PersonServiceImpl extends UnicastRemoteObject implements PersonService {
	public PersonServiceImpl() throws RemoteException {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public List<Person> GetList() throws RemoteException {
		// TODO Auto-generated method stub
		System.out.println("Get Person Start!");
		List<Person> personList=new LinkedList<Person>();

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

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

		return personList;
	}

}

Server端

public class RMIServer{

	public static void 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();
		}
	}
}

客户端

public class RMIClient {
    public static void main(String[] args){
    	try{
    		//调用远程对象,注意RMI路径与接口必须与服务器配置一致
    		PersonService personService=(PersonService)Naming.lookup("rmi://127.0.0.1:6600/PersonService");
    		List<Person> personList=personService.GetList();
    		for(Person person:personList)
    		{
    			System.out.println("ID:"+person.getId()+" Age:"+person.getAge()+" Name:"+person.getName());
    		}
    	}catch(Exception ex){
    		ex.printStackTrace();
    	}
    }
}
时间: 2025-01-10 12:46:40

Java RMI远程方法调用的相关文章

RMI远程方法调用

RMI远程方法调用:适用于 客户端 调用 服务器 内的方法:(Kotlin 语言编写) 如果业务为二个服务器之间的通信,还是得用消息队列的形式,因为RMI 不适合 双向 调用 下面介绍RMI 的使用方法: 1,服务器端代码: 定义接口(此接口放入服务端和客户端公用的模块 或者打成jar给服务器/客户端使用) 1 interface RmiService { 2 3 /** 4 * 订单发货 5 * @param saleItemId BTB订单项 itemId 6 * @param shipme

Java学习笔记之RMI远程方法调用

RMI 应用通常有两个分开的程序组成,一个服务端程序和一个客户端程序.一个典型的服务端程序创建一些远程对象,使得对这些远程对象的引用可以被访问,等待客户端调用这些远程对象提供的方法.一个典型的客户端程序获取远程引用,指向一个或者多个服务端上的远程对象,然后调用这些远程对象所提供的方法.通常我们称这为分布式对象应用程序. 3.1 RMI的工作方式 分布式对象应用程序需要做的事情: l 查找(定位)远程对象. 应用程序可以使用各种不同的机制取得远程对象的引用.比如应用程序可以通过 RMI 提供的简单

转载:RMI 远程方法调用

Java 分布式处理技术 1.1 RMI 的基本概念 1.1.1 什么是RMI RMI(Remote Method Invocation) 远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样. 1.1.2 RMI 的用途 1. 分布式体系结构 我们为什么要使用分布式计算呢? ?         当我们想与多个用户或客户机共享一个中央资源(如一个数据

RMI - Java远程方法调用

一.入门篇 Java RMI指的是远程方法调用(Remote Method Invocation). 它是一种机制, 能够让不同操作系统之间程序实现方法调用. 比如: 一台电脑上的Java程序可以通过RMI调用另一台电脑上的方法(EJB底层就是使用RMI). 二.RMI和webservice RMI是在TCP协议上传递可序列化的Java对象, 只能用在Java虚拟机上, 客户端和服务端必须都是Java. webservice是在http协议上传递xml文件, 它与语言和平台无关, 可以在异构系统

spring整合RMI - Java远程方法调用

一. 开篇语 在上一篇RMI - Java远程方法调用博文中使用的是JDK原生类进行远程方法调用, 本篇文章使用spring提供的API对RMI进行整合, 希望能给您带来帮助. 二. 核心API 1. 客户端: 客户端的核心是RmiProxyFactoryBean, 它包含两个属性serviceUrl(远程调用地址), serviceInterface(远程调用接口) 2. 服务端: RmiServiceExporter把spring管理的Bean输出成一个RMI服务, 通过把Bean包装在一个

java rmi 使用方法

server package Server; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.registry.LocateRegistry; import Service.Calc; import ServiceImpl.CalcImpl; public class Server{ // 由于这里测试我们是最终用户,所以直接将异常抛给虚拟机 public static void main(S

XML-RPC远程方法调用

一.简介 XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用. 它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列的实现. 这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式. Xml-Rpc的定义尽可能的保持了简单,但同时能够传送.处理.返回复杂的数据结构. xml rpc使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据. 一个rpc系统,必然包括2个部分: 1

普通方法实现——远程方法调用RMI代码演示

1.spring_RMI01_server服务端 1 package com.wisezone.service; 2 3 import java.rmi.Remote; 4 import java.rmi.RemoteException; 5 6 public interface IHelloService extends Remote { 7 8 public String sayHello(String msg) throws RemoteException; 9 } 1 package c

JAVA RMI远程通讯

分布式计算系统要求运行在不同地址空间不同主机上的对象互相调用,在Java里提供了完整的sockets通讯接口,但sockets要求客户端和服务端必须进行应用级协议的编码交换数据,采用sockets是非常麻烦的. 一个代替Sockets的协议是RPC(Remote Procedure Call), 它抽象出了通讯接口用于过程调用,使得编程者调用一个远程过程和调用本地过程同样方便.RPC 系统采用XDR来编码远程调用的参数和返回值. 但RPC 并不支持对象,而EJB构造的是完全面向对象的分布式系统,