对实现出的类(不是remote接口)执行rmic

  伴随JDK而来的rmic工具会以服务的实现产生2个心的类stub和skeleton.它会按照命名规则在远程实现名称后面加上_Stub或_Skeleton。rmic有几个选项,包括了不产生skeleton、观察产生出类的源代码或使用IIOP作为通讯协议等.产生出的类会放在当前目录下,要记住rmic必须能够找到所实现的类,因此可能要从实现所在的目录执行rmic(实际中可能需要考虑到包目录结构和完整名称,为了简便这里没有运用到包)

  调用命令行来启动rmiregistry,要确定是从可以存取到该类的目录来启动,简单的方法是从类这个目录来运行.

  运行截图如下

  注意:

  客户端是使用接口来调用stub上的方法,客户端的Java虚拟机必须要有stub类,但客户端不会在程序代码中引用到stub类,客户端总是通过接口来操作真正的远程对象

  服务器上必须要有stub和skeleton,以及服务与远程的接口,它会需要stub类是因为stub会被代换成连接在RMIRegistry上真正的服务。

  使用RMI时常犯的错误:

  1、忘记在启动远程服务钱启动rmiregistry(使用Naming。rebind()注册服务前rmiregistry必须启动)

  2、忘记把参数和返回类型做成可序列化(编译不会检测到,执行时才会发现)

  3、忘记将stub类交给客户端

  RMI很适合编写并运行远程服务,但我们不会单独使用RMI来执行网站服务,对大型的企业级应用程序来说,我们需要更多更好的功能。像交易管理、大量并发处理、安全性和数据库管理等。这需要用到Enterprise Application Server。

  JavaEE服务器包括了Web服务器和Enterprise JavaBeans(EJB)服务器。 EJB服务器作用于RMI调用和服务层之间。