javaRMI写法记录

服务器

必须针对端口开启注册服务器LocateRegistry.createRegistry(port),上述方法会返回一个注册服务器registry

1. 开启rmi的方法可以使用全局的方法
  Naming.rebind("rmi://127.0.0.1:2222/testClass", testClass);
  会自动向端口为2222的注册服务器注册服务,所以执行之前必须开启注册服务器
2. 也可以调用注册服务器自己的绑定服务的方法
  registry.rebind("testClass", testClass);
3. 也可以新建命名空间,默认是绑定到1099端口号的,之前开启端口1099的注册服务器
  Context nameContext = new InitialContext();
  nameContext.bind("rmi:testClass", testClass);
  此方法没有找到改变注册到不同的端口的方法

上述三种方法同样会影响此端口的注册服务器,调用注册服务器registry的list方法,可以查看此端口上的服务名字。

 

客户端

1. ITestClass testClass = (ITestClass)          
  Naming.lookup("rmi://127.0.0.1:2222/testClass"); 2. 新建命名空间   Context namecContext = new InitialContext();   ITestClass testClass = (ITestClass) namecContext.lookup("rmi://127.0.0.1:2222/testClass");

当然推荐第一种写法。官方提供的静态方法。并不知道第二种方法存在的意义。

 

测试中的错误记录

    描述:报错ClassNotFound

    原因:客户端和服务器的两个Interface的包的路径不一致,导致在类型强制转换的时候报错ClassNotFound。

    修改:在客户端配置构建路径,添加服务器。在实战中,应该将接口单独写成一个项目,客户端和服务器同时引用此项目,发布的时候将接口打包成jar包,放进客户端和服务器中。

posted @ 2016-01-04 16:50  MarshR  阅读(624)  评论(0编辑  收藏  举报