使用dubbo开发我们默认都是使用dubbo协议的,但是对于项目中的异构系统可能需要调用rpc接口,例如python写的web系统,我们就可以使用基于hession协议的dubbo接口做服务端,python做为客户端进行系统通信。
如果是原有的接口使用dubbo协议,新接口使用hession协议,那就是二者共存,我们需要做好兼容性。
1.<dubbo:application name="xxx"/> 应用名称是服务提供方和接受方都需要配置的
2.做为服务提供者需要提供以下信息:
接口bean信息 <bean id="aaa" class="com.xxx.XXXService"/>
hession协议:<dubbo:protocol name="hession" port="8080" server="servlet"/> 此处使用tomcat
接口service显示指定协议类型:<dubbo:service protocol="hession" interface="com.xxx.XXXService" ref="aaa" path="bbb"
3.由于本质上hession dubbo是一个servlet,且使用的是容器jetty或者tomcat,我们需要在web.xml配置servlet处理器:
com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet 并且指定处理的路径/bbb
并且需要Listener启动一个上下文,如果本身是web工程我们只需要复用org.springframework.web.context.ContextLoaderListener即可,否则需要自定义listener
这样客户端就可以把服务接口通过host+端口+path暴露出去,客户端就可以来请求服务了
4.客户端调用
StringserviceUrl ="http://localhost:8080/bbb";
HessianProxyFactory factory =newHessianProxyFactory();
XXXService xxxService = (XXXService) factory.create(XXXService.class,serviceUrl);
这样就可以请求服务端的接口了。
当然如果是python客户端,也是有对应hession sdk包的,只需要下载接口调用。