`
yan.dev
  • 浏览: 16594 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

RMI入门

    博客分类:
  • RMI
阅读更多

不考虑使用RMI plugin for eclipse插件。

1. 环境:

eclipse 3.6.2

jdk 1.6.0.24

2.一个简单的demo设计:

2.1



2.2

2.2.1 IHello.java

注意:接口 extends Remote;方法throws RemoteException

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.rmi.server.service;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * Comment for IHello.java
 * 
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-21 下午04:10:44
 */
public interface IHello extends Remote {
	public void sayHello()throws RemoteException;

}

 

2.2.2 HelloImpl.java

注意:extends UnicastRemoteObject;无参构造函数

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.rmi.server.service.impl;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import com.yan.dev.rmi.server.service.IHello;

/**
 * Comment for HelloImpl.java
 * 
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-21 下午04:13:28
 */
public class HelloImpl extends UnicastRemoteObject implements IHello {
	/**
	 * @throws RemoteException
	 */
	public HelloImpl() throws RemoteException {
		super();
	}

	@Override
	public void sayHello() {
		System.out.println("ok");
	}

}

2.2.3 Server.java

注意:localhost可以替换为server的ip地址

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.rmi.server;

import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

import com.yan.dev.rmi.server.service.IHello;
import com.yan.dev.rmi.server.service.impl.HelloImpl;

/**
 * Comment for Server.java
 * 
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-21 下午04:11:34
 */
public class Server {
	public static void main(String[] args) {
		int port =1234;
		try {
			LocateRegistry.createRegistry(port);
			// 创建一个远程对象
			IHello hello = new HelloImpl();
			Naming.bind("//localhost:"+port+"/hello", hello);
			System.out.println("Server start succeed, listening...");
		} catch (RemoteException e) { 
			e.printStackTrace();
		} catch (MalformedURLException e) { 
			e.printStackTrace();
		} catch (AlreadyBoundException e) { 
			e.printStackTrace();
		}
	}
}

2.2.4 Client.java

注意:loalhost与server的ip地址一致

 

/**
 *  Copyright(c) 2010-2011 Yan.Dev. All Rights Reserved.
 */
package com.yan.dev.rmi.client;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import com.yan.dev.rmi.server.service.IHello;

/**
 * Comment for Client.java
 *
 * @author <a href="mailto:yan.dev@hotmail.com">yan.dev</a>
 * 
 * @blog:<a href="http://yan-dev.iteye.com"><b>yan.dev's Blog</b></a>
 * @version 1.0
 * @time 2011-3-21 下午04:17:12
 */
public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) { 
		try {
			IHello hello = (IHello) Naming.lookup("rmi://localhost:1234/hello");
			hello.sayHello();
		} catch (MalformedURLException e) { 
			e.printStackTrace();
		} catch (RemoteException e) { 
			e.printStackTrace();
		} catch (NotBoundException e) { 
			e.printStackTrace();
		}
	}

}

3运行

运行Server,



 运行Client



 

 

 

3.1本机

 

 

3.2远程

注意:修改ip地址

eclipse中export server.jar,启动main类选择Server

命令行中运行java -jar server.jar。

运行client连接server。

 

 

 

 

  • 大小: 26.7 KB
  • 大小: 3.8 KB
  • 大小: 3.9 KB
分享到:
评论
1 楼 yan.dev 2011-03-22  
Server.java 中
1.
Naming.bind("//localhost:"+port+"/hello", hello);
可以改为
Naming.rebind("rmi://localhost:"+port+"/hello", hello);

Naming.rebind("//localhost:"+port+"/hello", hello);
2.
如果没有
LocateRegistry.createRegistry(port);
那么需要在类目录下运行,如(.../bin/)
  rmiregistry 1234
此时最好用rebind,否则多次运行server会提示已经banding对象异常

相关推荐

    RMI入门好例子

    这个“RMI入门好例子”旨在帮助初学者理解并实践RMI的基本原理和操作流程。 首先,RMI的核心思想是通过接口实现远程对象的透明调用。在示例中,`rmidemo`可能包含了服务器端的代码,它会定义一个接口,例如`...

    JAVA RMI入门教程

    【JAVA RMI入门教程】 Java Remote Method Invocation (RMI) 是Java平台中用于构建分布式应用程序的一个关键技术。RMI使得不同Java虚拟机(JVM)之间的对象可以相互通信,从而共享资源和处理能力,实现分布式计算。其...

    java Spring+RMI入门程序源代码

    本项目提供了一个入门级的源代码示例,帮助开发者理解如何在 Spring 环境下集成 RMI 技术。以下是关于这两个技术及其整合的详细知识点: **Spring 框架** 1. **Spring 概述**:Spring 是一个开源的 Java 应用开发...

    RMI入门小结

    这篇博客“RMI入门小结”主要探讨了RMI的基础概念、实现步骤以及常见问题。 1. RMI的基本原理: RMI的核心是通过接口定义服务,服务端实现接口,并将实现类注册到RMI注册表中。客户端通过引用远程接口,即可调用...

    RMI入门例子和教程,分初级、进阶,还有与Spring整合的

    自己收集了一些跑得通的教程,并自己整理给出了,入门例子。包括:最原生的使用javac和rmic的例子;还有进一步的,使用IDM,用代码代理原生rmic编译的例子;还有RMI和Spring整合的例子。 另外附有:例子说明 和 一些...

    java RMI入门例子

    这个"java RMI入门例子"将带你深入理解RMI的工作原理和主要组件。 RMI的核心概念包括: 1. **远程接口**:这是定义远程方法的接口,通常继承自java.rmi.Remote。这些方法声明抛出java.rmi.RemoteException,表示...

    rmi入门

    【标题】:“RMI入门” 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种用于在分布式环境中实现对象间通信的技术。RMI允许一个Java对象调用网络另一端的Java对象的方法,就像调用本地对象...

    rmi入门(带源码)

    这个“rmi入门(带源码)”的资源可能是一个教学资料或实践项目,帮助初学者理解和应用RMI技术。 首先,我们来详细了解一下RMI的基本概念: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口。它继承了...

    《EJB-RMI入门》

    《EJB-RMI入门》是一本专注于讲解Java企业级应用开发技术的书籍,特别是针对RMI(Remote Method Invocation,远程方法调用)的使用。RMI是Java平台中用于构建分布式应用程序的关键技术,它允许Java对象在不同的Java...

    rmi入门学习,实用的小例子

    ### RMI基础知识与实践 #### 一、Java RMI简介 Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,允许开发者在不同Java虚拟机(JVM)之间调用远程对象的方法,从而实现分布式应用程序的...

    JAVA之RMI入门

    简约而不简单的描述了RMI技术,希望对大家有所帮助。

    RMI 入门学习资料

    RMI(Remote Method Invocation)是Java提供的一种用于构建分布式应用程序的机制,它允许Java对象在不同的网络环境中相互调用方法,实现了远程对象间的无缝通信。RMI是在JDK1.1版本中引入的,它是纯Java实现的,遵循...

    RMI入门(二)实例 --- 亲自将代码调试成功

    在本文中,我们将深入探讨Java Remote Method Invocation (RMI)技术,通过一个具体的实例来学习如何设置、构建和调试RMI应用。RMI是Java提供的一种远程对象调用机制,它允许Java对象在不同的JVM之间进行通信。在这个...

    编程语言JavaRMI入门教程.pdf

    本文档是关于Java远程方法调用(Java RMI)的入门教程,适用于JDK 1.1版本。文档首次发布于1997年2月10日,由Sun Microsystems公司版权所有。Sun Microsystems公司授予用户一个全球性的、非独家的、不可转让的、无...

    RMI入门教程

    RMI,远程方法调用(Remote Method Invocation)是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。

    rmi学习资料

    "RMI基础教程 - 深海有约 - BlogJava.files"和"rmi入门教程,简单明了(转).files"可能包含了相关的源代码或者图片资源,帮助读者更好地理解和实践RMI编程。 通过深入阅读这些资料,你可以了解如何设置RMI环境,...

    JavaRMI快速入门

    Java Remote Method Invocation(Java RMI)是Java编程语言中用于在网络间进行远程对象调用的技术。它是Java平台的标准部分,允许程序员在分布式环境中调用对象的方法,就像它们在同一台计算机上一样。Java RMI对于...

Global site tag (gtag.js) - Google Analytics