标签:远程调用 egit proxy image 模式 而不是 skeleton idt 不同
——为另一个对象提供一个替身或占位符来访问这个对象。
要点:
为上一章的糖果机建立一个糖果监视器,在远程监控糖果机。
远程方法:
Java RMI:Remote Method Invocation 远程方法调用。
原语(primitive)类型
可序列化(Serializable)类型
制作远程服务:
步骤1:制作远程接口。远程接口定义出可以让客户远程调用的方法。客户将用它作为服务的类类型。Stub和实际的服务都实现此接口。
步骤2:制作远程的实现。这是做实际工作的类,为远程接口中定义的远程方法提供了真正的实现。这就是客户真正想要调用的方法的对象(例如,我们的GumballMachine)。
步骤3:利用rmic产生的stub和skeleton。这就是客户和服务的辅助类。你不需要自己创建这些类,甚至连生辰它们的代码都不用看,因为当你运行rmic工具时,这都会自动处理。你可以在JDK中找到rmic。
步骤4:启动RMI Registry(rmiregistry)。rmiregistry就像是电话簿,客户可以从中查到代理的位置(也就是客户的stub helper对象)。
步骤5:开始远程服务。你必须让服务对象开始运行。你的服务实现类会去实例化一个服务的实例,并将这个服务注册到RMI registry。注册之后,这个服务就可以供客户调用了。
注意:对于RMI,程序员最常犯的三个错误
1、忘了在启动远程服务之前先启动rmiregistry(要用Naming.rebind()注册服务,rmiregitry必须是运行的)。
2、忘了让变量和返回值的类型成为可序列化的类型(这种错误无法在编译期返现,只会在运行时发现)。
3、忘了给客户端提供stub类。
代理模式:
远程代理
虚拟代理 :虚拟代理控制访问实例化开销大的对象。
标签:远程调用 egit proxy image 模式 而不是 skeleton idt 不同
原文地址:http://www.cnblogs.com/-1307/p/6444917.html