使用Spring對RMI的支持,可以非常容易地構建你的分佈式應用。在服務端,可以通過Spring的org.springframework.remoting.rmi.RmiServiceExporter可以暴露你的服務;在客戶端,通過org.springframework.remoting.rmi.RmiProxyFactoryBean可以使用服務端暴露的服務,非常方便。這種C/S模型的訪問方式,可以屏蔽掉RMI本身的複雜性,如服務端Skeleton和客戶端Stub等的處理細節,這些對於服務開發和服務使用的人員來說,都是透明的,無需過度關注,而集中精力開發你的商業邏輯。
下面通過一個例子,說明如何通過Spring集成RMI。
服務端發佈服務
我們定義了服務接口,服務端實現該服務接口來完成其複雜的邏輯,客戶端可以通過該接口調用服務端暴露的服務,如下所示:
服務實現,示例如下所示:
服務端發佈服務,供客戶端進行(遠程方法)調用,Spring配置server.xml如下所示:
上面配置,指定了暴露的服務的名稱,通過serviceName屬性注入到RmiServiceExporter中,服務名稱爲MobileAccountService,客戶端通過該服務名稱就能夠進行調用。
下面啓動服務端,發佈服務,如下所示:
客戶端調用服務
客戶端配置client.xml如下所示:
配置中,將一個serviceUrl和serviceInterface注入給RmiProxyFactoryBean,即可進行遠程方法調用。調用示例如下所示:
可見,實現遠程訪問變得非常容易。