一个简单的RMI程序



今天写了一个简单的RMI程序

一、开发工具 eclipse3.1
        JDK1.4

二、目录结构

 E:\SHIWEI\STUDY\RMI
│  .classpath
│  .project

├─bin
│  └─com
│      └─snoics
│          └─study
│              └─rmi
│                  └─information
│                          client.policy
│                          Information.class
│                          InformationClient.class
│                          InformationImpl.class
│                          InformationImpl_Stub.class
│                          InformationServer.class
│                          ShowBindingsName.class

└─src
    └─com
        └─snoics
            └─study
                └─rmi
                    └─information
                            client.policy
                            Information.java
                            InformationClient.java
                            InformationImpl.java
                            InformationServer.java
                            ShowBindingsName.java


首先创建一个接口:
/* 
 * FileName Information.java
 * Create Time 2005-10-14 13:43:28
 * Author shiwei
 * Descript 
 * Version 
 */

package com.snoics.study.rmi.information;

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

public interface Information extends Remote{
 String getDescript() throws RemoteException;
}


接口的实现:
/* 
 * FileName InformationImpl.java
 * Create Time 2005-10-14 13:44:59
 * Author shiwei
 * Descript 
 * Version 
 */

package com.snoics.study.rmi.information;

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

public class InformationImpl extends UnicastRemoteObject implements Information{
 private static final long serialVersionUID = -3493514659140991974L;
 private String descript="";
 
 public InformationImpl(String descript) throws RemoteException{
  this.descript=descript;
 }
 
    public String getDescript() throws RemoteException{
     return "show Descript: "+descript+"!";
    }
}


服务端的代码:
/* 
 * FileName InformationServer.java
 * Create Time 2005-10-14 13:48:36
 * Author shiwei
 * Descript 服务端
 * Version 
 */

package com.snoics.study.rmi.information;

import java.rmi.Naming;


public class InformationServer {
 public InformationServer() {
  
 }
 
 /**
  * 注册绑定服务
  *
  */
 public void bindServer() {
  try {
   System.out.println("创建服务");
   InformationImpl productImpl1=new InformationImpl("I'm a Person");
   InformationImpl productImpl2=new InformationImpl("I'm a Work");
   System.out.println("Binding Server to registry");
   Naming.rebind("person",productImpl1);
   Naming.rebind("work",productImpl2);
  }catch(Exception e) {
   e.printStackTrace() ;
  }
 }
 
 public static void main(String[] args) {
  InformationServer informationServer=new InformationServer();
  informationServer.bindServer();
  
  ShowBindingsName showBindingsName=new ShowBindingsName();
  showBindingsName.show();
 }
}

再创建一个ShowBindingsName.java显示服务器注册的名称:

/* 
 * FileName ShowBindingsName.java
 * Create Time 2005-10-14 13:53:50
 * Author shiwei
 * Descript 显示Naming List
 * Version 
 */

package com.snoics.study.rmi.information;

import java.rmi.Naming;

public class ShowBindingsName {
 /**
  * 显示Naming List
  *
  */
 public void show() {
  try {
   String[] bindings=Naming.list("");
   int length=bindings.length;
   for(int i=0;i    System.out.println(bindings[i]);
   }
  }catch(Exception e) {
   e.printStackTrace() ;
  }
 }
}

客户端的代码:

/* 
 * FileName InformationClient.java
 * Create Time 2005-10-14 13:56:39
 * Author shiwei
 * Descript 客户端
 * Version 
 */

package com.snoics.study.rmi.information;

import java.rmi.Naming;
import java.rmi.RMISecurityManager;


public class InformationClient {

 /**
  * 远程调用
  *
  */
 public void showInformation() {
  System.setProperty("java.security.policy", "E:/ShiWei/Study/RMI/bin/com/snoics/study/rmi/information/client.policy");
  System.setSecurityManager(new RMISecurityManager());
  
  String url="rmi://localhost/";
  try {
   Information information1=(Information)Naming.lookup(url+"person");
   Information information2=(Information)Naming.lookup(url+"work");
   System.out.println("information1.descript="+information1.getDescript());
   System.out.println("information2.descript="+information2.getDescript());
  }catch(Exception e) {
   e.printStackTrace();
  }
 }
 
 public static void main(String[] args) {
  InformationClient informationClient=new InformationClient();
  informationClient.showInformation();
 }
}

安全策略文件 client.policy

grant
{
  permission java.net.SocketPermission
     "*:1024-65535", "connect,accept";
  permission java.net.SocketPermission
     "*:80", "connect";
};
三、部署程序:

代码写完就该开始动手部署了,RMI的部署也是一个非常让人头疼的问题。

只要一步步的跟着我下面的操作进行,一定可以把这个程序部署起来的。

首先假设编译好的class放到 E:\ShiWei\Study\RMI\bin 路径下面。

打开DOS窗口
1、设置classpath  输入:  C:\>set classpath=E:\ShiWei\Study\RMI\bin

2、创建存根 输入: C:\>rmic -v1.2 -d E:\ShiWei\Study\RMI\bin com.snoics.study.rmi.information.InformationImpl

3、启动RMI注册表 输入: C:\>start rmiregistry

4、启动服务端程序 输入: C:\>start java com.snoics.study.rmi.information.InformationServer

5、执行客户端程序 输入:  C:\>java com.snoics.study.rmi.information.InformationClient

6、如果以上的步骤全部执行成功,将在控制台上看到以下的信息:
information1.descript=show Descript: I'm a Person!
information2.descript=show Descript: I'm a Work!


四、注意:
    
       如果在执行过程中,客户端执行失败,请检查是否有打开防火墙,请把防火墙关闭以后重新执行客户端程序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值