`
小蛋蛋
  • 浏览: 80615 次
  • 性别: 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());
          }
    }
}








分享到:
评论

相关推荐

    RMI远程方法调用

    1、 一个服务器生成时间,并在多个不同节点的客户端上显示。 2、 客户端有多种时间显示方式,如模拟时钟、数字时钟。 1.2 作业要求 下面是设计时需要满足的四个要求: 1、 打破客户端和服务器开发过程中的紧耦合...

    RMI可执行的简单源码

    简单的一个java RMI的实例,可以把代码在不同的机器上运行,一台启动server,一台运行Client,需要修改代码IP。也可以直接一台机器运行。结果只是简单的打印字符。

    RMI开发实例源码 动态注册和静态注册

    这是RMI开发的实例,动态注册和静态注册,已经在两台不同的机器上运行过

    Eclipse环境下RMI应用实例

    java RMI的一个实例,利用Eclipse开发的简单的银行存取款小程序,运行时需要启动java注册服务rmiregister,然后在两个命令行窗口分别运行服务器类和客户端类,支持局域网内不同机器间的访问

    第一个RMI的网络应用编程示例--帮助理解EJB的生命周期

    也就是你的windows系列机器如果之前没有运行过RMI服务端应用,那么当你第一次运行之后,如果你关闭它,那么可能再也不能注册运行了。我还不知道rmi API为什么为这样。不过,成功一次之后,对于理解EJB应用的生命是...

    Java RMI 远程调用实例.rar

    Java RMI 远程调用实例,各个文件的作用:  DISPLAYPERFECTTIME.JAVA|:向rmiregistry查找PerfectTime对象,定义调用远程对象的方法。  PERFECTTIME.JAVA:向RMI注册服务,以便客户端查找,创建提供注册服务的本地...

    Isola_Game:使用 Java RMI 实现的 2 人游戏

    运行代码: 如果在同一台机器上运行您将需要 3 个终端(1 个用于服务器,2 个用于玩家#1 和玩家#2) 对于服务器: 提示$ rmiregistry & prompt$ java ServerImplementation 对于玩家#1: prompt$ java ...

    jmeter运行(本地运行+远程运行)

    jmeter运行(本地运行+远程运行)远程运行是用一台Jmeter控制机控制远程的多台机器来产生负载。控制机与负载机之间通过RMI方式来完成通信

    java_RMI1Java远程方法调用

    Java远程方法调用是一种分布式系统技术。它允许一个java虚拟机调用运行在网络中另一个地方的JVM上的对象方法. 这种技术对开发大型系统尤为重要,因为它使得在多台机器上分布资源和处理负载的想法成为可能。

    RemObjects SDK

    而且你要在你的机器上使用基于HTTP的COM对象就必须为RPC-通讯打开防火墙的几个端口. 对于RMI,RMI是针对Java的. Borland从来没有提供和RMI通讯的工具.就算有这种工具,你还是不能和COM对象通讯. 而SOAP呢?它是唯一的...

    JMeter分布式原理,远程启动配置,jmeter在Linux上分布式压测环境搭建配置,命令行运行+问题集合,修改jvm值

    1 slave机器的自定义端口号配置; 2 负载机(Slave)找不到参数文; 3 无数据,依赖文件报错的问题; 4 Server failed to start: java.rmi.server.ExportException: Listen failed on port…找不到指定文件; 5 ...

    NETFramework-v4.8.zip

    要做到这一点,应用程序开发人员必须使用如微 软的分布式组件对象模型(DCOM),通用对象请求代理体系结构(CORBA),Java远程方法调用(RMI)等技术。然而,这些分布的技术通过已开发的应用程序编程语言非常紧密地...

    JMETER 分布测试完整实践过程

    1. 我的jmeter版本是 apache-jmeter-5.1,在 agent 机器上需要修改配置 jmeter.properties,修改以下两处配置:1)找到 server_port 去掉 #,设置端口 。 2)找到server.rmi.ssl.disable=false 改成 true

    CS290B-H1:作业1

    ant runComputer(在服务器机器上) ant runEClient(或 runMClient,在客户端机器上运行) 要使客户端连接到 'localhost' 以外的服务器,请在如下所示的行中修改 'build.xml' 参数值=“本地主机” 将服务器的 ...

    【文献综述】基于JAVA的俄罗斯方块游戏设计与实现.pdf

    2.2 跨平台性 Java 语言的第二个特性就是跨平台性[4],也就是说使用 Java 语言编写的程序可以在编 2 译后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为"一次编 译,到处运行" 。执行 Java ...

    电脑闹钟3.0(delphi)源代码

    如果在你的机器上出现某种声音格式不能播放的情景(有的机器对于MP3文件会出现这种情况),请打开你的Windows Media Player,设置与相应的文件格式关联(其实就是更改一下注册表中的文件关联),然后就可以在闹钟中...

    jrds:另一个监控应用程序,旨在简单易用且可扩展

    但它打算更容易使用,并能够在很短的时间内收集大量机器。 它完全用java编写,避免调用外部进程来提高性能。 它使用 ,它是用 java 编写的的克隆。 该网站是 这个怎么运作? JRDS 是一个 Java Web 应用程序,可以...

    超爽的自学课件(java)

    名字的可见度以及使用来自其他库的组件;static关键字;注释和嵌入文档等等。 &lt;br&gt;(3) 第3章:控制程序流程 本章开始介绍起源于C和C++,由Java继承的所有运算符。除此以外,还要学习运算符一些不易使人注意的...

    java windows 计时工具

    当前处于运行状态的数据保存在内存中,机器只对内存供电,而硬盘、屏幕和CPU等部件则停止供电。 由于数据存储在速度快的内存中,因此进入等待状态和唤醒的速度比较快。 不过这些数据是保存在内存中,如果断电则会...

Global site tag (gtag.js) - Google Analytics