RMI与Hession发布与调用
这里的RMI是基于spring的
1.1,RMI的发布
<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="serviceName" value="*Service"/>
<property name="service" ref="*Service"/>
<property name="serviceInterface" value="*.*.api.*Service"/>
</bean>
1.2,RMI的调用
<bean id="rmiProxyFactoryBean" class="org.springframework.remoting.rmi.RmiProxyFactoryBean" abstract="true">
<property name="lookupStubOnStartup" value="false"/>
<property name="refreshStubOnConnectFailure" value="true"/>
</bean>
<bean id="**Service" parent="rmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://${rmi.host}/remoteService" />
<property name="serviceInterface" value="*.*.*.api.service.*Service" />
</bean>
默认的端口是1099,可以通过属性registryPort进行设置
2.1 ,Hession的发布
web.xml添加
<!--Add hessian servlet -->
<servlet>
<servlet-name>remote</servlet-name>
<!-- 使用Spring的代理Servlet -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>namespace</param-name>
<param-value>/remote-servlet</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remote</servlet-name>
<url-pattern>/remote/*</url-pattern>
</servlet-mapping>
创建对应的remote-servlet.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- 使用Spring的HessianServie做代理 -->
<bean name="/hessianARemoteService"
class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service" ref="*Service" />
<property name="serviceInterface" value="*.*.*.api.*.AService" />
</bean>
<bean name="/hessianBRemoteService"
class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service" ref="*Service" />
<property name="serviceInterface" value="*.*.*.api.*.BService" />
</bean>
</beans>
2.2调用Hession
<bean id="HessianAService"
class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="readTimeout" value="10000"/>
<property name="serviceUrl" value="${url}/remote/hessianARemoteService" />
<property name="serviceInterface" value="*.*.*.api.*.AService" />
</bean>
<bean id="HessianBService"
class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="readTimeout" value="10000"/>
<property name="serviceUrl" value="${url}/remote/hessianBRemoteService" />
<property name="serviceInterface" value="*.*.*.api.*.BService" />
</bean>