`
<冫茖>
  • 浏览: 35543 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java RMI的例子(可以运行)

    博客分类:
  • j2se
阅读更多
0
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
分享到:
评论

相关推荐

    Java RMI 可运行实例

    这是一个java远程调用的例子,可运行。

    java rmi 简单易懂的实例

    java rmi 完整的简单例子 包含详细的文档说明

    JAVA RMI 实例

    java rmi小例子源代码 ,运行Reg.java ,再执行Client客户端代码就能看效果。如果在不同jvm下执行,注意接口定义包路径客服端和服务端必须保持一致。 客服端包含文件有服务端接口的定义文件。

    rmi实现例子

    java远程调用rmi 实现小例子,将imp.zip包放到myeclipse工程里,即可运行客户端以及服务端

    Java项目开发与毕业设计指导

    安装JDK、配置环境变量,编译java源文件(可以用eclipse自动编译也可以手动命令行下编译),然后命令行下运行如下命令启动服务器端: java rmi.NetS 2000 (端口号为2000) 键入如下命令启动客户端: java...

    java教程.rar

    1.本书第2~21章所附代码的运行环境 操作系统:Windows 2003、Windows XP Professional或者Windows 2000 开发工具:JCreator 4.5 JAVA平台:JDK 1.6 Servlet:Tomcat 5.5 数据库:Access数据库(仅数据库章节...

    清华大学JAVA教程

    这是清华大学的一套JAVA教程,包括详尽的例子、课后习题与解答、相关计算机英语词汇,就课程本身的内容来说也非常丰富,囊括了以下章节: ★ 第一讲 Java语言概述 ◇课前索引 ◇1.1 java语言的发展史 ◇1.2 java...

    java 编程入门思考

    7.6.7 内部类可以覆盖吗? 7.6.8 内部类标识符 7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和finalize() 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行设计 ...

    Java初学者入门教学

    7.6.7 内部类可以覆盖吗? 7.6.8 内部类标识符 7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和finalize() 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行设计 ...

    java联想(中文)

    7.6.7 内部类可以覆盖吗? 7.6.8 内部类标识符 7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和finalize() 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行设计 ...

    rmi分布式管理初步

    java实现分布式管理的例子程序,从如何使用开始讲起,到最终运行,分布式管理程序的基础

    JAVA_Thinking in Java

    7.6.7 内部类可以覆盖吗? 7.6.8 内部类标识符 7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和finalize() 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行设计 ...

    Thinking in Java简体中文(全)

    7.6.7 内部类可以覆盖吗? 7.6.8 内部类标识符 7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和finalize() 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行设计 ...

    Java服务器程序设计

    3.1.6 结束java serve的运行[/font] 3.1.7 删除java server[/font] 3.1.8 显示缺省主页[/font] 3.1.9 使用随机文档[/font] 3.2 servlet的加载和调用[/font] 3.2.1 加载servlet[/font] 3.2.2 servlet的标识[/font] ...

    Thinking in Java 中文第四版+习题答案

    7.6.7 内部类可以覆盖吗? 7.6.8 内部类标识符 7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行设计 7.8.1 纯继承...

    超爽的自学课件(java)

    也讲述了与Java 1.1的“Java数据库连接”(JDBC)和“远程方法调用”(RMI)有关的问题。 &lt;br&gt;(16) 第16章 设计范式 本章将讨论非常重要、但同时也是非传统的“范式”程序设计概念。大家会学习设计进展过程的...

    xmemcached1.3.5源码-附带自己写的RMI调用它的JMX服务

    xmemcached1.3.5源码-附带自己写的RMI调用它的JMX服务,使用RMI调用JMX服务的详细过程,完整的eclipse工程,直接导入即可用。还用一些运行截图,很有用。 自己写的例子,类名是BaseExample 和RMITest.

    Think in Java(中文版)chm格式

    7.6.7 内部类可以覆盖吗? 7.6.8 内部类标识符 7.6.9 为什么要用内部类:控制框架 7.7 构建器和多形性 7.7.1 构建器的调用顺序 7.7.2 继承和finalize() 7.7.3 构建器内部的多形性方法的行为 7.8 通过继承进行...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...

Global site tag (gtag.js) - Google Analytics