最近一个项目中数据更改时需要使更改后的数据同步到另一个项目中,最后我们是用Spring的Http Invoker来实现的。
1.Test.java
public interface Test { /** * 自动从数据库同步公共信息或从传入参数同步公共信息 * @param commConfigMap * @return */ public boolean syncCommConfig(Map<String, Integer> commConfigMap); }
TestImpl.java是Test.java的实现类
public class TestImpl implements CacheCommConfigService { /** * 自动从数据库同步公共信息或从传入参数同步公共信息 * @param commConfigMap * @return */ public boolean syncCommConfig(Map<String, Integer> commConfigMap) {...}
2.Spring的配置文件中增加以下内容:
<bean id="test" class="com.test.util.impl.TestImpl"> </bean> <bean id="testService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <property name="service" ref="test"></property> <property name="serviceInterface"> <value>com.test.util.Test</value> </property> </bean>
增加一个新的配置文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/testSync.service">testService</prop> </props> </property> </bean> </beans>
在web.xml文件中增加如下内容:
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>101</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.service</url-pattern> </servlet-mapping>
3.另一个系统调用时在Spring的配置文件中加入如下XML:
<bean id="testSync" class= "org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl"> <value>http://hostName:port/testSync.service</value> </property> <property name="serviceInterface"> <value>com.test.util.Test</value> </property> </bean>
调用时,哪个bean需要的话,将"testSync"这个bean注入给它即可。