初学rmi

 

 一直都不太清楚rmi是什么,今天花了点点时间初步照着个例子做了,有了个大致的了解,还有待继续学习。测试的例子如下:

1.创建了个maven的工程

 

 

2.创建I_Hello 接口:

 

package com.rmi;

 

import java.rmi.Remote;

import java.rmi.RemoteException;

 

public interface I_Hello extends Remote {

 public String SayHello() throws RemoteException;   //需要抛出remote异常

 

}

3.创建实现类Hello.java:
package com.rmi;

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

public class Hello extends UnicastRemoteObject implements I_Hello {

 public Hello() throws RemoteException     //需要一个抛出Remote异常的默认初始化方法
      {
      }

      public String SayHello()     //这个是实现I_Hello接口的方法
      {
         return "Hello world !!";
      }
      
      public static void main(String args[])
      {
     System.out.println("hello");
      }
}
4.执行mvn clean install命令编译,生成对应的Hello.class文件。
在改文件路径下执行dos命令:
(1)临时增加classpath路径,否则会出现找不到Hello类错误
D:\WebApp\rmi.test\target\rmi.test\WEB-INF\classes>set classpath=%classpath%;D:\WebApp\rmi.test\target\rmi.test\WEB-INF\classes

ps:1.可以使用echo %classpath%来查看当前类路径。
     2.也可直接在环境变量中修改classpath增加类路径(永久)

(2) 用RMIC命令来生成残根Stub
D:\WebApp\rmi.test\target\rmi.test\WEB-INF\classes>rmic com.rmi.Hello
执行完改命令会在D:\WebApp\rmi.test\target\rmi.test\WEB-INF\classes路径下生成Hello_Stub.class文件。
5.创建一个服务用于发布服务
package com.rmi;

import java.rmi.Naming;

public class RMI_Server {

/**
* @param args
*/
public static void main(String[] args) {
try
       {
           Hello hello = new Hello();                //实例化要发布的类
           Naming.rebind("RMI_Hello", hello);      //绑定RMI名称 进行发布
           System.out.println("=== Hello server Ready === ");
       }
       catch(Exception exception)
       {
           exception.printStackTrace();
       }
}

}
6.创建客户端调用rmi服务
package com.rmi;

import java.rmi.Naming;

public class RMI_Client {

/**
* @param args
*/
public static void main(String[] args) {
 try
       {
          I_Hello hello = (I_Hello) Naming.lookup("RMI_Hello");  //通过RMI名称查找远程对象
           System.out.println(hello.SayHello());                        //调用远程对象的方法
       } catch (Exception e)
       {
         e.printStackTrace();
       }
}

}
到此 我们 所有的代码编写都完成了,不过不要急着去运行,请跟随第7点去运行
7.
1)服务器的运行

 

    先在DOS下运行 rmiregistry     这个命令是开启RMI的注册服务,开启以后我们的server程序才能调用rebing方法发布我们的类
 
    然后,运行我们的server程序  RMI_Server 

 

2) 客户端的运行
     运行RMI_Client  打印:Hello world !!  即可,调用服务成功。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值