生产者的spring配置:

<!-- 提供方应用信息,用于计算依赖关系 -->

<dubbo:application name="项目名" />
<dubbo:registry protocol="zookeeper" address="${zookeeper.address}" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol id="dubbo" name="dubbo" port="${dubbo.port}" />
<dubbo:protocol id="hessian" name="hessian" port="${hessian.port}"
server="jetty"/>
<!-- 声明需要暴露的服务接口 -->

<dubbo:service protocol="hessian" interface="com.test.service.TestService" ref="testServiceImpl" path="dubbo/testService" />

我使用的hessian是通过jetty启动的。

消费者的spring配置:

        <dubbo:application name="test-web" />
        <dubbo:registry protocol="zookeeper" address="${zookeeper.address}" />
        <dubbo:reference interface="com.test.service.TestService"
id="testService" timeout="60000" url="${hession.address}/dubbo/testService"/>

由于hessian是基于http协议的,hessian的访问于dubbo不同,dubbo直接访问注册中心就可以,而hessian需要直接访问项目发布服务所在服务器的地址,如我的生产者服务器地址是192.168.1.6,zookeeper所在服务器地址是192.168.1.69,hessian发布的接口是20879,所以消费者中hessian.address=192.168.1.6:20879而不是192.168.1.69,这个一定要配置正确,不然访问不到正确的资源。

注意:

1.hessian发布的接口,流一定是最后一个参数

2.hessian与dubbo结合使用的时候,所有的接口发布,最后全使用hessian发布,不然会有问题,会造成hessian与dubbo接口调用的混乱,所以设计流问题的接口,最好都整合到一个子项目中去,而且其他业务接口,分到其他子项目中

3.hessian不是很稳定,如果公司有能力搭建文件服务器比如fastDFS服务器,还是用文件服务器好

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐