`
jiangzhen1984
  • 浏览: 98866 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java RMI的例子

    博客分类:
  • java
阅读更多
参考别人的程序后写了个自己的RMI程序

RMI,远程方法调用(Remote Method Invocation)是Enterprise
     JavaBeans的支柱,是建立分布式Java应用程序的方便途径。RMI是非常容易使用的,但是它非常的强大。
    RMI的基础是接口,RMI构架基于一个重要的原理:定义接口和定义接口的具体实现是分开的。

    java 代码
 
  1. package org.itrun.remote;  
  2.   
  3. import java.rmi.Remote;  
  4. import java.rmi.RemoteException;  
  5.   
  6.   
  7. /** 
  8.  * 远程接口 
  9.  * @author jiangzhen 
  10.  * 
  11.  */  
  12. public interface TestInterfactRemote extends Remote{  
  13.   
  14.     public String add(String a,String b) throws RemoteException;  
  15.       
  16.     public String add() throws RemoteException;  
  17.       
  18. }  
  19.   
  20.   
  21.   
  22.   
  23.   
  24. package org.itrun.remote;  
  25.   
  26. import java.rmi.RemoteException;  
  27. import java.rmi.server.UnicastRemoteObject;  
  28.   
  29.   
  30. /** 
  31.  * 接口的实现 
  32.  * @author jiangzhen 
  33.  * 
  34.  */  
  35. public class TestInterfaceRemoteImpl extends UnicastRemoteObject implements  
  36.         TestInterfactRemote {  
  37.   
  38.       
  39.       
  40.       
  41.     public TestInterfaceRemoteImpl() throws RemoteException {  
  42.         super();  
  43.     }  
  44.   
  45.     public String add(String a, String b) throws RemoteException {  
  46.         return a+b;  
  47.     }  
  48.   
  49.     public String add() throws RemoteException {  
  50.         return "Hello Word";  
  51.     }  
  52.   
  53. }  
  54.   
  55.   
  56.   
  57.   
  58.   
  59. package org.itrun.server;  
  60.   
  61. import java.rmi.Naming;  
  62.   
  63. import org.itrun.remote.TestInterfaceRemoteImpl;  
  64. import org.itrun.remote.TestInterfactRemote;  
  65.   
  66.   
  67. /** 
  68.  * 服务器端 
  69.  * @author jiangzhen 
  70.  * 
  71.  */  
  72. public class Server{  
  73.       
  74.       
  75.     public Server() {  
  76.         try {  
  77.             TestInterfactRemote testInterfactRemote = new TestInterfaceRemoteImpl();  
  78.             Naming.rebind("rmi://10.0.0.123/server", testInterfactRemote);  
  79.         } catch (Exception e) {  
  80.             e.printStackTrace();  
  81.         }  
  82.     }  
  83.   
  84.     public static void main(String args[]) {  
  85.         new Server();  
  86.     }  
  87. }  
  88.   
  89.   
  90.   
  91.   
  92. package org.itrun.client;  
  93.   
  94. import java.rmi.Naming;  
  95.   
  96. import org.itrun.remote.TestInterfactRemote;  
  97.   
  98.   
  99.   
  100. /** 
  101.  * 客户端程序 
  102.  * @author jiangzhen 
  103.  * 
  104.  */  
  105. public class Client {  
  106.     public static void main(String args[]) {  
  107.         try {  
  108.             TestInterfactRemote testInterfactRemote = (TestInterfactRemote) Naming  
  109.                     .lookup("rmi://10.0.0.123/server");  
  110.             System.out.println(testInterfactRemote.add("rmi a ""rmib"));  
  111.         } catch (Exception e) {  
  112.             e.printStackTrace();  
  113.         }  
  114.     }  
  115. }  



程序完成后

运行RMI系统

     现在我们建立了所有运行这个简单RMI系统所需的文件,现在我们终于可以运行这个RMI系统啦!来享受吧。

     我们是在命令控制台下运行这个系统的,你必须开启三个控制台窗口,一个运行服务器,一个运行客户端,还有一个运行RMIRegistry。

    首先运行注册程序RMIRegistry,你必须在包含你刚写的类的那么目录下运行这个注册程序。

    >rmiregistry(linux) start rmiregistry(windows)

   运行程序首先需要修改下RMI的安全策略策略文件在 JDK 目录下的jre/lib/security/java.policy 的最后面加上下面这句话

grant{
        permission java.security.AllPermission "","";
};
这条命令表示允许任何人作任何事情,

修改完后运行命令 rmiregistry ,然后就不用管他了

然后运行 server 端的代码 运行后也不用管他了
java org.itrun.server.Server

最后运行 client 端代码
java org.itrun.server.Client

运行结果 rmi a rmib

分享到:
评论
9 楼 gongpengllpp 2013-09-26  
[/img][/img][/img][/img][/img][/img][/img]" target="_blank">[url][url][/img][/img][/img][/img][/img][/img][/img][/url][/url]" />[/img][/img][/img][/img][/img][/img][/img]" target="_blank">[url][url][/img][/img][/img][/img][/img][/img][/img][/url][/url]" wmode="" quality="high" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="200" height="200">[/flash][/flash]
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||
||||||||||||||||||||||||||||
||||||||||||||||||||||||||||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||
||||||||||||||||||||||||||
||||||||||||||||||||||||||
|||||||||||||||||||||||||
|||||||||||||||||||||||||
||||||||||||||||||||||||
||||||||||||||||||||||||
||||||||||||||||||||||
||||||||||||||||||||||
|||||||||||||||||||||
|||||||||||||||||||||
||||||||||||||||||||
||||||||||||||||||||
|||||||||||||||||||
|||||||||||||||||||
||||||||||||||||||
||||||||||||||||||
|||||||||||||||||
|||||||||||||||||
||||||||||||||||
||||||||||||||||
|||||||||||||||
|||||||||||||||
||||||||||||||
||||||||||||||
|||||||||||||
|||||||||||||
||||||||||||
||||||||||||
|||||||||||
|||||||||||
||||||||||
||||||||||
|||||||||
|||||||||
||||||||
||||||||
|||||||
|||||||
||||||
||||||
|||||
|||||
||||
||||
|||
|||
||
||
|
|

8 楼 SMCwwh 2011-10-14  
[img][/img]
引用
引用
引用
[img][/img]
引用
[url][/url]
[flash=200,200][/flash][align=left][/align][/size][size=x-large][/color][color=white]
7 楼 ariestiger 2010-09-20  
讲得挺清楚的, 挺好的, 谢谢, 项目中需要用用这个, 但这些很久以前的java核心技术现在已经很少看到了, 哈哈, 后面再看点和spring的集成。
6 楼 zhaixf2001 2010-03-25  
挺清晰的一个例子!

要是能把API中的文字以自己的理解,用注释的方式表达出来就完美了。
5 楼 steeven 2010-01-12  
JDK1.6.0.18下测试通过。
不通过的同学可以让server继承UnicastObject, registry.bind("server", new ServerImpl());
4 楼 steeven 2010-01-12  
最简单用法,不用另外起JNDI进程

package org.steeven.remote;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

public class ServerImpl implements Hello {

	public String add(String a, String b) throws RemoteException {
		return a + b;
	}

	public static void main(String[] args) throws Exception {
		Registry registry = LocateRegistry.createRegistry(18888);
		registry.bind("server", UnicastRemoteObject.exportObject(
				new ServerImpl(), 0));
		System.err.println("Server ready");
	}
}


package org.steeven.client;

import java.rmi.Naming;

import org.steeven.remote.Hello;

public class Client {
	public static void main(String args[]) throws Exception {
		Hello server = (Hello) Naming.lookup("rmi://localhost:18888/server");
		System.out.println(server.add("hello ", "steeven"));
	}
}
3 楼 foolfisher 2008-05-29  
客户端可以调用服务器端的类,不过我想实现客户端和服务器端交互怎么实现呢?最近也在学RMI
2 楼 pan19849529 2007-09-18  
那添到到web里面是怎么个添加步骤。简单的说是怎么运用吧。能说明一下吗?
1 楼 pan19849529 2007-09-18  
那添加到web里面怎么添加是什么步骤呢。能说明一下吗?

相关推荐

    java RMI 例子

    通过学习和实践这个RMI例子,我们可以深入理解Java的分布式编程能力,这对于开发大型企业级应用或者分布式系统来说是非常有价值的。同时,了解RMI的工作原理也有助于我们更好地掌握其他类似技术,如JDBC、JNDI等。

    Java RMI 例子 和一些常见问题

    Java Remote Method Invocation(RMI)是Java平台中用于...通过这个简单的例子,你可以了解到如何创建一个基本的RMI应用程序。在实际项目中,RMI可以与其他技术(如EJB、Spring框架)结合,构建更复杂的分布式系统。

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

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

    JAVA RMI简单例子

    这个"JAVA RMI简单例子"旨在帮助我们深入理解RMI的基本原理和实现步骤。 RMI的核心概念包括远程接口、远程对象和RMIC编译器。首先,我们需要定义一个远程接口,该接口声明了可以在远程服务器上执行的方法。这些方法...

    rmi.rar_Java RMI_RMI java_RMI policy.all_rmi

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

    Java RMI的简单例子

    ### Java RMI基础知识与示例解析 #### 一、RMI简介 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种用于实现分布式应用的技术。它允许对象在不同的JVM之间通过网络相互调用对方的方法,就...

    java rmi java rmi

    根据提供的文件信息,我们可以深入探讨Java RMI(Java Remote Method Invocation)的相关知识点,包括其概念、原理、体系结构以及一个具体的示例。...这个例子展示了如何利用RMI技术来构建分布式应用程序。

    通过Java RMI实现远程调用的一个简单例子

    这个简单的例子将引导我们了解如何利用Java RMI实现远程调用。 首先,我们要创建远程接口。在Java RMI中,远程接口是一个实现了`java.rmi.Remote`接口的Java接口。接口中声明的方法将在客户端调用,实际上会在...

    java RMI简单例子

    以下是对"java RMI简单例子"的详细解释: 1. **RMI的基本概念**: - **远程对象**:在RMI中,一个对象如果可以在不同的JVM上执行其方法,那么就被称为远程对象。 - **远程接口**:定义远程对象需要实现的接口,...

    JavaRMI.pdf

    Java RMI(Remote Method Invocation)是Java编程语言中用于实现远程过程调用的一种技术。它允许运行在客户机上的程序调用位于远程服务器上的对象的方法,从而实现分布式计算。RMI的核心思想是通过接口隐藏底层网络...

    Java RMI 简单示例

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于分布式计算的技术,它允许一个Java对象调用另一个在不同 JVM(Java虚拟机)上的对象的方法。这个简单的示例展示了如何创建一个基本的...

    一个简单的RMI例子Java源代码,用于学习理解RMI

    这个"一个简单的RMI例子Java源代码"是为了帮助开发者更好地理解和应用RMI。 RMI的核心概念包括: 1. **远程接口(Remote Interface)**:这是定义远程方法的Java接口。它声明了客户端可以调用的那些方法,这些方法...

    java RMI入门例子

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

    java rmi HelloWorld版(源码)

    Java RMI,全称为Remote Method Invocation,是Java平台上的一个标准API,用于实现分布式计算,使得在不同Java虚拟机(JVM)上的...通过这个简单的例子,你可以理解RMI的工作机制,并为更复杂的分布式系统打下基础。

    JavaRMI示例程序

    我的博客《Java中的RMI(远程方法调用)》的示例代码

    JAVA RMI 传输 SSL加密

    Java RMI (Remote Method Invocation) 是一种用于在Java应用程序之间进行远程通信的技术。为了提高RMI通信的安全性,我们可以使用SSL (Secure Sockets Layer) 或其后继者TLS (Transport Layer Security) 进行加密。...

    Java RMI远程方法调用详解-例子代码

    这个简单的例子展示了RMI的基本使用方式。实际应用中,可能会涉及到更复杂的网络交互、多线程、安全性控制等话题。理解RMI的工作原理和实践,对于开发分布式Java应用至关重要。同时,由于RMI依赖于Java序列化,因此...

    RMI例子

    这个"RMI例子"很可能是为了演示如何在Java应用中利用RMI进行跨JVM的交互。 在RMI中,一个JVM上的对象被称为服务端,它可以提供一些远程方法供其他JVM上的客户端调用。服务端需要将远程对象注册到RMI注册表中,这样...

    java 简单RMI 会议功能实现

    在这个"java简单RMI会议功能实现"的例子中,我们将探讨如何构建一个基于RMI的分布式会议议程服务,提供会议查询、增加和删除的接口。 首先,让我们了解RMI的基本组件和工作原理: 1. **远程接口(Remote Interface...

    java edna jnative rmi 例子

    Java EDNA RMI示例是将Java编程语言与EDNA数据库、JNative库以及远程方法调用(RMI)技术相结合的应用。这个项目的核心目的是演示如何从EDNA数据库中检索数据,然后通过RMI服务暴露这些数据,以便在不同的网络环境中...

Global site tag (gtag.js) - Google Analytics