`
hash
  • 浏览: 1973 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

JAVA RMI 学习一

阅读更多
 

       

         Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 相对于cxf等Web Service的实现,rmi显得相对轻巧,RMI也是最简单的,在一些小的应用中是最合适的。

缺点:1.RMI对服务器的IP地址和端口依赖很紧密,但是在开发的时候不知道将来的服务器IP和端口如何,但是客户端程序依赖这个IP和端口。 这个问题有两种解决途径:一是通过DNS来解决,二是通过封装将IP暴露到程序代码之外。

2.RMI是Java语言的远程调用,两端的程序语言必须是Java实现。
    开始第一个demo:
第一步:定义接口
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import java.util.Map;
import com.Rmi.Model.Student;
import com.Rmi.Model.StudentResponse;

/**
 * 构造一个返回各种复杂对象的测试
 * 1. List
 * 2.Map
 * 3.Array
 * 3.Object
 * @author Administrator
 *
 */
public interface IStudentMsg  extends Remote  {

  /**
   * 获得student 的list集合
   * @return
   */
 public List<Student> findStudents()  throws RemoteException; ;
 /**
  * 获得student相关的map类型
  * @return
  */
 public Map<String,String> findStudentMap()  throws RemoteException; ;
 
 /**
  * 返回数组形式
  * @return
  */
 public Student[] findStudentArray()  throws RemoteException; ;
 
 /**
  * 返回一个比较复杂的类型
  * @return
  */
 public StudentResponse findStudentClassMates()  throws RemoteException; ;
 
}


 
 第二步,实现类
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.Rmi.Imp.IStudentMsg;
import com.Rmi.Model.Student;
import com.Rmi.Model.StudentResponse;

public class StudentMsg extends UnicastRemoteObject implements IStudentMsg{
	
	public StudentMsg() throws RemoteException {
		super();
	}

	private static final long serialVersionUID = 449315607221300521L;

	@Override
	public List<Student> findStudents() {
		List<Student> list = new ArrayList<Student>();
		list.add(new Student("tABCD","高二"));
		list.add(new Student("ABCD","高二"));
		return list;
	}

	@Override
	public Map<String, String> findStudentMap() {
		Map<String,String> map = new HashMap<String ,String>();
		map.put("1", "tssss");
		map.put("2", "ddddd");
		return map;
	}

	@Override
	public Student[] findStudentArray() {
		Student[] students = new Student[3];
		students[0]=new Student("ABCD","构思");
		students[1]=new Student("ABCD","gaosan");
		return students;
	}

	@Override
	public StudentResponse findStudentClassMates() {
		StudentResponse  respon = new StudentResponse();
		respon.setName("ABCD");
		List<Student> list = new ArrayList<Student>();
		list.add(new Student("ABCD","高二"));
		list.add(new Student("涂ABCD","高二"));
		respon.setClassMates(list);
		return respon;
	}

}
 
第三步:发布服务
IStudentMsg rstudent = new  StudentMsg();
  //本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上 
 LocateRegistry.createRegistry(8888); 
 //把远程对象注册到RMI注册服务器上,并命名为rstudent
//绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略) 
 Naming.bind("rmi://localhost:8888/RStudentMsg",rstudent); 
 System.out.println(">>>>>INFO:远程rstudent对象绑定成功!");
 
 
第四步:客户端
public class RmiClient{

 public  static void main(String args[]){

 try {
   IStudentMsg studentMsg =(IStudentMsg) Naming.lookup("rmi://localhost:8888/RStudentMsg"); 
   System.out.println(studentMsg.findStudentArray()[0].getClassName());
   System.out.println(studentMsg.findStudentClassMates().name);
   System.out.println(studentMsg.findStudentMap().get("1"));
 } catch (NotBoundException e) { 
    e.printStackTrace(); 
    } catch (MalformedURLException e) { 
      e.printStackTrace(); 
   } catch (RemoteException e) { 
      e.printStackTrace();   
   }
}

}
 
 

    

分享到:
评论

相关推荐

    java RMI技术实现的网络聊天室

    1. **RMI概念**:RMI是一种基于对象的远程调用机制,它允许Java对象像调用本地方法一样调用远程对象的方法。RMI系统包括客户端和服务器两部分,客户端通过接口与服务器交互,服务器则提供具体实现。 2. **RMI架构**...

    java_rmi.rar_RMI java_java.rmi

    学习和理解Java RMI对于开发分布式Java应用至关重要,它可以帮助你构建可扩展、高性能的应用程序,尤其适用于服务器集群和云环境。通过实践提供的"rmi"代码示例,你可以深入理解RMI的工作原理,并掌握如何在实际项目...

    RMI.rar_Java RMI_java.rmi_java.rmi.Remot_remote

    1. **定义远程接口**:首先,你需要创建一个继承自`java.rmi.Remote`的接口,声明你想在远程对象上调用的方法。这些方法通常抛出`java.rmi.RemoteException`,因为网络通信中可能出现的各种问题。 2. **实现远程...

    Java RMI学习资料

    Java Remote Method Invocation (RMI) 是Java平台提供的一种强大的分布式计算技术,允许在不同网络节点上的Java对象之间进行远程调用。RMI是构建分布式Java应用程序的基础,它简化了跨网络通信的过程,使得开发者...

    java rmi HelloWorld版(源码)

    这个"java rmi HelloWorld版(源码)"的压缩包文件提供了一个简单的RMI应用示例,帮助开发者了解和学习RMI的基本原理和使用。 RMI的核心概念包括: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口...

    java rmi远程调用

    最近在学习代理模式,用到了java rmi远程调用,包含服务端和客户端,之前一直没有接触过,学习了java rmi远程调用,一方面可以了解代理模式,一方面熟悉java低层的远程

    Java RMI 可运行实例

    通过分析这些文件,你可以学习到如何创建、配置和运行一个完整的RMI应用程序,这对于理解和应用Java的分布式计算能力非常有帮助。同时,这也是一个很好的实践项目,可以帮助你加深对RMI工作原理的理解。

    Rmi.rar_Java RMI_RMI java_java RMI 线程_rmi

    Java RMI(Remote Method Invocation)是Java平台提供的一种分布式计算技术,它允许一个Java对象调用网络另一端的Java对象的方法,仿佛它们在同一个进程中执行。这个教程“Rmi.rar”显然包含了关于如何使用Java RMI...

    JAVARMI实例[文].pdf

    Java RMI,全称为Java Remote Method Invocation,是Java平台中用于远程对象调用的技术。它允许Java对象在不同的Java虚拟机之间进行通信,仿佛它们在同一个...尽管如此,了解RMI仍然是学习Java分布式计算的重要一环。

    rmi.rar_Java RMI_RMI java_RMI policy.all_rmi

    描述中提到的"java rmi例子"表明其中可能包含了一个或多个实际的RMI应用实例,这对于学习和理解RMI的工作原理非常有帮助。 首先,让我们详细了解Java RMI的核心概念和组件: 1. **远程接口(Remote Interface)**...

    rmi.rar_Java RMI_RMI source code_java RMI simple_rmi

    1. **远程接口(Remote Interface)**:这是定义远程方法的Java接口,它标记为`java.rmi.Remote`的子接口。这些接口声明了可以在远程对象上执行的操作。 2. **远程实现(Remote Implementation)**:实现了远程接口...

    rmi.zip_Java RMI_java rmi网络_java源代码 RMI

    学习和理解Java RMI,你需要掌握如何创建远程接口和实现,如何启动RMI服务器,如何在客户端进行远程对象的查找和调用,以及如何处理可能出现的网络异常。此外,对于序列化和网络通信的基础知识也是必不可少的。通过...

    分布式程序java 实验名称 基于Java RMI的C/S编程实验

    Java RMI是一种高级的通信机制,它允许在Java应用之间调用远程对象的方法,就像调用本地对象一样。RMI简化了分布式系统的设计,因为它抽象出了网络细节,使得开发者可以专注于业务逻辑。`java.rmi` 包提供了必要的...

    java_rmi.zip

    Java RMI(Remote Method Invocation,远程...使用这个“java_rmi.zip”中的资源,你可以学习如何设置RMI环境,编写远程接口和实现,以及创建和调用远程对象。同时,了解相关的最佳实践和安全注意事项也是十分重要的。

    java RMI demo

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间进行方法调用,仿佛对象就在本地一样。RMI是Java在网络编程中的一个重要组成部分,尤其在...

    java 远程方法调用(java rmi)

    Java 远程方法调用(Java RMI,Remote Method Invocation)是Java平台提供的一种用于构建分布式应用程序的...学习和理解Java RMI,可以帮助开发者构建可扩展的、跨网络的分布式应用程序,是Java开发者必备的一项技能。

    一个完整的Java RMI通讯的例子

    通过这个完整的Java RMI通信例子,我们可以学习如何在实际项目中利用RMI来构建分布式系统,提升应用的可扩展性和灵活性。同时,理解RMI的工作原理也有助于我们更好地设计和实现其他分布式技术,如EJB、Web服务等。

    JavaRMI

    Java Remote Method Invocation(Java RMI)是Java平台中用于实现分布式计算的一种技术。它允许Java对象在不同的Java虚拟机(JVMs)之间进行通信,仿佛它们是在同一个进程中执行一样。RMI使得开发者能够构建分布式...

    分布式Java RMI实现的学生成绩管理系统

    1. **RMI机制**:RMI的核心是远程对象,它是一个在远程JVM上运行的Java对象,可以被本地对象像调用本地方法一样调用。RMI包括两部分:服务器端提供远程对象的实现,客户端通过 stub(代理)访问远程对象。 stub 负责...

    java_in_rmi.rar_Java RMI_RMI java_rmi _精通rmi

    这个"java_in_rmi.rar"压缩包包含了学习和精通RMI的基础资料,非常适合初学者深入理解这一主题。 首先,RMI的核心概念是远程方法调用,它允许一个Java对象调用位于另一台计算机上的对象的方法。这种机制依赖于Java...

Global site tag (gtag.js) - Google Analytics