业务场景:两个系统之间可能存在通信(方法的调用),这时用httpinvoker可以实现轻量级的解决方案
分为服务端和客户端,客户端调用服务端提供的接口;
客户端配置:
<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>
服务端配置:
<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>
可存在多个互相的调用。
web.xml配置:
<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。
以上
实现原理见https://blog.csdn.net/zstu_cc/article/details/54743920