業務場景:兩個系統之間可能存在通訊(方法的調用),這時用httpinvoker能夠實現輕量級的解決方案web
分爲服務端和客戶端,客戶端調用服務端提供的接口;spring
客戶端配置:api
<bean id="OpenApi4SoaService" class="cn.com.agree.open.mvc.service.impl.openapi.OpenApi4SoaServiceImpl"/> <bean id="httpServiceServer" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="service"> <ref bean="OpenApi4SoaService"/> </property> <property name="serviceInterface" value="cn.com.agree.open.mvc.service.api.openapi.OpenApi4SoaService"/> </bean>
服務端配置:mvc
<description>http invoker客戶端代理配置</description> <context:property-placeholder location="classpath:../config/application.properties"/> <bean id="httpService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl"> <value>${soa.httpinvoker.server.url}</value> <!-- <value>http://10.128.81.131:8090/esb-soa/httpService</value> --> </property> <property name="serviceInterface" value="cn.com.agree.soa.web.service.soa.OpenService"></property> </bean> <!-- 2010-10-24 新的治理平臺同步接口 --> <bean id="httpServiceNew" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl"> <value>http://192.9.200.237:8090/aweb_soa/httpService</value> </property> <property name="serviceInterface" value="awb.aweb_soa.httpService.service.GovernmentService"></property> </bean>
可存在多個互相的調用。app
web.xml配置:eclipse
<servlet> <servlet-name>httpServiceServer</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/httpinvoker-server-config.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>httpServiceServer</servlet-name> <url-pattern>/httpServiceServer</url-pattern> </servlet-mapping>
而後,服務端提供給客戶端一個jar包,該jar包裏面包含了客戶端須要調用的接口的類。eclipse中右鍵export,選擇JAR file。url
以上spa
實現原理見https://blog.csdn.net/zstu_cc/article/details/54743920.net