首先dubbo 和spring 是无缝整合的,先看下配置文件 提供端的,
<!-- 具体的实现bean --> <bean id="testService" class="com.dubbo.provider.impl.TetsServiceImpl" /> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="xixi_provider" /> <!-- 使用multicast广播注册中心暴露服务地址 <dubbo:registry address="multicast://224.5.6.7:1234" /> --> <!-- 使用zookeeper注册中心暴露服务地址 --> <!--<dubbo:registry address="zookeeper://10.28.53.83:2181" /> --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.dubbo.provider.TetsService" ref="testService" />
大概就是这样,一些标签 和bean实例 接口service层 注意zookeeper ip和端口配置
在看消费端
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> <dubbo:application name="test_consumer" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> --> <!-- <dubbo:registry address="zookeeper://10.28.53.83:2181" /> --> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 生成远程服务代理,可以像使用本地bean一样使用demoService --> <dubbo:reference id="testService" interface="com.dubbo.provider.testService" />
注意的问题:在消费端要引入提供端的一些依赖,实体 服务层等等, zookeeper服务启动正常,
最后再通过单例dubbo和spring整合, 如下
public class DubboService { /** 单例对象 **/ public static final DubboService me = new DubboService(); /** spring上下文 **/ private ClassPathXmlApplicationContext context = null; private final static String providerConfig = "applicationContext-mybatis.xml"; public DubboService() { loadRpcConfig(); } /** * 加载RPC服务 */ protected void loadRpcConfig(){ context = new ClassPathXmlApplicationContext(new String[] {providerConfig}); context.start(); } /** * 通过引用id获取远程服务对象实例 * @param referenceId * @return 返回远程服务对象实例 */ public Object getRpcService(String referenceId){ return context.getBean(referenceId); } }
最后 可以在项目中调用别的服务接口了, 待续...........