Spring HttpInvoker一種JAVA遠程方法調用框架實現,使用的是HTTP協議,允許穿透防火牆,使用JAVA系列化方式,但僅限於Spring應用之間使用,即調用者與被調用者都必須是使用Spring框架的應用。基本原理如下:
在server端,springAOC管理着controller(bean),並暴露出遠程調用的接口。在Client端,借助spring產生一個代理對象,通過代理對象實現與服務端的交互。
-
服務器端配置
1. 加入jar包
2. 在.xml中配置spring遠程調用的servlet:
<servlet> <servlet-name>service</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>service</servlet-name> <url-pattern>*.service</url-pattern> </servlet-mapping>
3.在spring配置文件中配置並發布遠程調用端口:
<!-- service導出器,將pojo轉換成Spring所需的controller對象 --> <bean name="ss.service" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="serviceInterface"> <value>com.spring.service.HelloService</value> </property> <property name="service" ref="HelloService"></property> </bean>
-
客戶端配置
1.加入jar包,將服務器端service接口(並不需要實現類)和所用bean代碼導入過來;
2. 在spring.xml中配置代理對象:
<!-- 配置代理 -->
<bean class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceInterface"> <value>com.spring.service.HelloService</value> </property> <property name="serviceUrl" >
<!-- tomcat訪問服務器的地址 --> <value>http://localhost:8989/springservice/ss.service</value> </property> </bean>
配置好以后測試調用即可,注意:此遠程調用方法傳輸的是序列化的對象,若需要傳輸自定義對象時,對應的類需要序列化,即實現Serializable接口。