最近在看《JAVA网络编程精解》到第十章突然迷糊了,怎么都看不懂怎么部署的,特别是在服务器与客户程序分布不同机器上的时候,java.rmi.server.codebase的时候,总是出现ClassNotFoundException。下面说说RMI应用程序的部署过程。
RMI应用由3部分组成,服务器、客户端和注册表程序,这三个程序部署由三种方式部
1.服务器、客户端和注册表程序在同一台的机器上,一般实验的时候可以使用,教材上都采用这种模式。
2.服务器与注册表程序运行在一台机器,而客户端运行在另一台机器上。下面讲的就是这种方式
3.服务器、注册表、客户端程序运行于三个不同的机器,这时就需要设置java.rmi.server.codebase=path,来让注册表程序能够通过path找到远程对象的接口类,并完成注册。实际上jdk5以后,采用动态代理生成stub类,客户端和(服务器-注册表分离时),通过java.rmi.server.codebase=path指名stub类的地址
关于java.rmi.server.codebase具体可以参考官方文档https://docs.oracle.com/javase/6/docs/technotes/guides/rmi/hello/hello-world.html
对于第二种部署方式,可以参考:https://segmentfault.com/a/1190000004494341#articleHeader22这里详细说明了两台机器上的不熟方式:关于上面链接程里有些不清楚的,我给出我的理解:
首先客户与服务器分离,分别创建java项目作为服务器和客户端