`
小蛋蛋
  • 浏览: 81786 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

RMI在自己的机器上的运行以及使用

阅读更多
/********************************************************************************
     * 运行RMI的基本步骤以及注意事项
     * 1. 最好是所有的Java文件都在一个包里面,
     * 2. 在对Java文件进行编译的时候最好要把里面的包名去掉
     * 3. 先生成.class文件
     * 4. 对于实现服务器端的接口的文件,我们在它所在的目录中用 “rmic 文件名” 来生成stub文件
     * 5. 下面的步骤我们开始正式运行: (1) .先加入Java的策略文件: 在cmd中使用如下命令:
     *                                  rmiregistry -J-Djava.security.policy=java.policy启动注册表
     *                             (2) .在DOS下运行 rmiregistry     这个命令是开启RMI的注册服务
     *                             (3) .运行服务端的程序 ,使用Java命令,如果这个时候出现了错误的话那就絮语奥用下面的命令来制定stub文件的位置:
     *                                   java.exe -Djava.rmi.server.codebase=file:/stub文件的目录/  服务器端主程序
     *                                   例如“ java.exe -Djava.rmi.server.codebase=file:/E:\MIS_Interface\momo\TestEasy\classes/  RMI_Server”
     *                             (4). 使用Java命令启动客户端的主程序
     * 这样就OK了
     *
     *其中客户端要有接口和stub文件的.class文件
     *例如:服务器端的接口类是Product,它扩展了Remote接口
     *      其中的接口的实现类是ProductImpl。它实现了Product中定义的方法
     *      其中服务器端的主程序是ProductServer,它用来启动和注册上面的实现类
     *      而客户端的主程序是ProductClient,
     * 这个时候服务器端目录下面应该有的文件是: Product.class    ProductImpl.class    ProductServer.class 以及  ProductImpl_stub.class
     * 而客户端目录下面应该有的文件是: Product.class     ProductClient.class 以及  ProductImpl_stub.class
     * 这里,上面的rmic 名利生成stub文件就是:  rmic ProductImpl,这样就可以生成ProductImpl_stub.class文件了
     * 下面的是四个文件的实现程序代码:
     ***********************************************************************************/





/**************************************************************
Product.java:
**************************************************************/
import java.rmi.*;

public interface Product extends Remote{

    String getDescription() throws RemoteException;

}




/*************************************************************
ProductImpl.java
*************************************************************/
import java.rmi.*;
import java.rmi.server.*;
public class ProductImpl extends UnicastRemoteObject implements Product{
    public ProductImpl(String s) throws RemoteException
    {
        name=s;
    }
    public String getDescription()
    {
        return "I am a "+name+"  buy me";
    }

    private String name;
}




/**************************************************************
ProductServer.java
***************************************************************/
import java.rmi.*;
import java.rmi.server.*;
public class ProductServer {
    public static void main(String[] args) {
      //  if(System.getSecurityManager()==null)
            System.setSecurityManager(new RMISecurityManager());

        System.out.println("construction server implementation...............");

         try
         {
         ProductImpl p1=new ProductImpl("tomato");
         ProductImpl p2=new ProductImpl("tudou");
         System.out.println("Binding server implementations to registry.........");
//         Naming.rebind("tomato1",p1);
//         Naming.rebind("tudou1",p2);
         /*****************************
          * 在这里,我们需要先用Windows命令行的形式输入rmiregistry -J-Djava.security.policy=java.policy启动注册表
          * 否则的话程序就会出现错误
          */

         Naming.bind("//121.250.216.101:1099/toma",p1);
         Naming.bind("//121.250.216.101:1099/tud",p2);
         System.out.println("waiting for invacations from clients...............");
         System.out.println("----------------------------------");
//         String[] name=Naming.list("");
//         for(int i=0;i<name.length;i++)
//         {
//             System.out.println(name[i]);
//         }

         }
         catch(Exception e)
         {
             System.out.println("You have an error :"+e.getMessage());
         }
    }
}








/***************************************************************
ProductClient.java
****************************************************************/
import java.rmi.*;
import java.rmi.server.*;
public class ProductClient {
    public static void main(String[] args) {
          System.setSecurityManager(new RMISecurityManager());
         String url="rmi://121.250.216.101:1099/";
          try
          {
              Product c1=(Product)Naming.lookup(url+"toma");
              Product c2=(Product)Naming.lookup(url+"tud");
              System.out.println(c1.getDescription());
              System.out.println(c2.getDescription());
          }
          catch(Exception e)
          {
              System.out.println("客户端程序出现了错误: "+e.getMessage());
          }
    }
}








分享到:
评论

相关推荐

    Java RMI 可运行实例

    - **运行客户端**:在另一台机器或同一台机器的不同终端上运行客户端程序,通过RMI注册表找到并调用远程对象的方法。 4. **注意事项** - **异常处理**:RMI调用可能会抛出`RemoteException`和其他与网络通信相关...

    java rmi 参考文档

    在运行使用RMI的程序时,涉及三个主要实体: 1. **客户端(Client)**:这是您编写的程序,用于访问远程方法。 2. **服务器(Server)**:这是您编写的程序,用于实现远程方法。客户端连接到服务器,并请求执行某个方法...

    JAVA RMI 传输 SSL加密

    - 在服务器(Server)和客户端(Client)上,我们需要创建并导出使用自定义的SSL套接字工厂的Registry实例。这可以通过在创建RMI Registry时指定`SslRMIClientSocketFactory`和`SslRMIServerSocketFactory`来实现。...

    SpringRMI小例子

    Spring Remote Method Invocation(RMI)是Java平台上的一个远程对象调用框架,它允许一个Java对象在一台机器上执行,并且被另一台机器上的客户端调用。在这个"SpringRMI小例子"中,我们将深入探讨如何利用Spring...

    web服务器 RMI meeting

    它允许一个Java对象调用另一个在不同JVM上运行的对象的方法,仿佛它们都在同一台机器上。RMI过程涉及两个主要步骤:导出远程对象(使得其方法可供远程调用)和注册该对象到一个远程命名服务,这样其他客户端就可以...

    RMI

    **远程方法调用(Remote Method Invocation...总的来说,RMI是Java实现分布式系统的重要工具,它提供了简单、直观的方式来构建跨越多台机器的应用程序。了解其工作原理和最佳实践对于任何Java开发者来说都是有价值的。

    基于RMI分布计算实例

    这种技术在开发跨网络的分布式应用程序时非常有用,因为它使得对象可以在一台计算机上创建并在另一台计算机上执行,就像它们在同一台机器上一样。 在“基于RMI分布计算实例”中,我们可能涉及到以下几个关键知识点...

    RMI原理及应用详解

    远程对象可以在一台机器上创建,然后在其他机器上使用。 2. **远程接口(Remote Interface)**: 定义了远程对象可以被调用的方法,所有方法必须声明抛出RemoteException。 3. **注册表(Registry)**: RMI系统中的...

    RMI商品管理系统.zip

    RMI允许Java对象在不同的Java虚拟机(JVM)之间进行通信,仿佛它们是在同一台机器上运行。这种机制使得开发者可以构建跨越网络的分布式应用程序,极大地扩展了Java应用的潜力。在本项目中,商品管理系统的服务器端和...

    RMI会议管理系统代码

    它允许Java对象在不同的Java虚拟机(JVM)之间进行通信,仿佛它们是在同一台机器上运行一样。RMI在企业级应用,特别是需要跨网络协同工作的系统中扮演着重要角色。东北大学的这个"RMI会议管理系统"项目,正是对这一...

    spring RMI简单例子

    RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一台机器上。它通过序列化和反序列化来传输对象,使得远程方法调用就像本地调用一样高效。Spring RMI在此基础上提供了更高级别的抽象,通过Spring的依赖注入...

    Java RMI demo多对象

    Java Remote Method Invocation(RMI)是Java平台上的一个特性,它允许在分布式环境中进行对象间的交互,即在一台机器上的对象可以调用另一台机器上对象的方法,仿佛它们是在同一台机器上一样。这个特性使得Java成为...

    RMI+EHCACHE Demo

    通过RMI,一个Java对象可以在一台机器上执行,其方法调用可以在另一台机器上处理。这对于构建分布式应用,尤其是在处理分布式计算或服务时非常有用。RMI的核心组件包括远程接口、远程对象、注册表和客户机。在...

    RMI 零基础入门与实例

    在Java中,RMI允许一个Java对象在一台机器上调用另一台机器上的对象的方法,使得开发者能够构建跨越多台计算机的分布式应用程序。RMI是Java企业级应用开发中的重要组成部分,尤其在构建分布式服务、服务器端组件交互...

    java 简单RMI 会议功能实现

    Java RMI(Remote Method Invocation,远程方法调用)是一种在Java平台上实现分布式计算的技术,它允许对象在不同的网络节点上进行交互,仿佛它们都在同一台机器上运行。在这个"java简单RMI会议功能实现"的例子中,...

    JAVA RMI实现程序实例

    在这个"JAVA RMI实现程序实例"中,我们将会探讨如何使用RMI实现一个简单的“Hello, World”示例,并已经在两台机器上进行了成功的测试。 首先,我们需要了解RMI的基本概念。RMI的核心思想是将对象的方法调用转化为...

    使用RMI和CORBA进行分布式java程序设计

    分布式程序设计是一种技术,允许不同计算机上的程序协同工作,仿佛它们都在同一台机器上运行。在Java世界中,RMI(Remote Method Invocation,远程方法调用)和CORBA(Common Object Request Broker Architecture,...

    RMI的简单完整例子

    远程方法调用(Remote Method Invocation,RMI)是Java平台上的一个重要特性,它允许一个Java对象在一台机器上执行另一个网络中的Java对象的方法。RMI是分布式计算的基础,使得Java程序能够跨越网络边界,实现组件...

    RMI.rar_gui with rmi in ja_rmi _rmi gui_simple rmi with GUI

    RMI允许一个Java对象在一台机器上(客户端)调用另一台机器上(服务器端)的对象的方法,仿佛它们是在同一台机器上运行。RMI系统包括了序列化、远程接口定义、远程对象实现和注册表服务等组件。在这个项目中,...

    JAVA RMI 调查报告

    4. 它扩展了Java编程模型,使得代码能够在不同的机器和JVM之间无缝运行,无需特殊语法。 5. RMI允许在远程方法调用中同时传输数据和行为(代码),增强了功能的灵活性。 相较于CORBA(Common Object Request Broker...

Global site tag (gtag.js) - Google Analytics