spring+dubbo实例

1、spring需要引入6个包:

(1)commons-logging-1.2.jar  //日志包
(2)spring-beans-3.2.3.RELEASE.jar   //bean包
(3)spring-context-3.2.3.RELEASE.jar  // 容器包
(4)spring-core-3.2.3.RELEASE.jar      //核心包
(5)spring-expression-3.2.3.RELEASE.jar //表达式包

(6) spring-aop-3.2.3.RELEASE.jar

备注:(1、经验证,spring最少需要引入5个包即标红的5个,和dubbo整合时需要引入 spring-aop包;2、使用ApplicationContext ctx=new ClassPathXmlApplicationContext("spring.xml");读取spring配置文件时就不需要在web.xml中配置监听<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>,二者二选一就行了,使用后者的话需要引入spring-web包)

2、使用dubbo需要引入8个包
(1)dubbo-2.5.3.jar
(2)javassist-3.18.0-GA.jar
(3)log4j-1.2.17.jar
(4)netty-3.2.5.Final.jar
(5)slf4j-api-1.7.12.jar
(6)zkclient-0.1.jar   
(7)zookeeper-3.4.13.jar

3、操作步骤

    备注:参考博客

(1)安装zookeeper

(2)关键代码

1、提供服务的接口
public interface DemoService {
	 String sayHello(String name);
}

2、接口实现类
public class DemoServiceImpl implements DemoService {

	@Override
	public String sayHello(String name) {
		 System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());
	        return "Hello " + name + ", response form provider: " + RpcContext.getContext().getLocalAddress();
	}

}

3、远程服务
public class Provider {
	 public static void main(String[] args) throws Exception {      
	    	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"dubbo-provider.xml"});
	        context.start();
	        System.out.println("----------------服务已启动,按任意键结束···········--------------------");
	        System.in.read(); // press any key to exit
	    }
}

4、用Spring配置声明暴露服务

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 
    <!-- provider's application name, used for tracing dependency relationship -->
    <dubbo:application name="demo-provider"/>
 
    <!-- use multicast registry center to export service 
    <dubbo:registry address="multicast://224.5.6.7:1234"/>-->
    
    <dubbo:registry address="zookeeper://localhost:2181"/>
 
    <!-- use dubbo protocol to export service on port 20880 -->
    <dubbo:protocol name="dubbo" port="20880"/>
 	    <!-- declare the service interface to be exported -->
    <dubbo:service interface="cn.it.jzl.dubbo.DemoService" ref="demoService"/>
 
    <!-- service implementation, as same as regular local bean -->
    <bean id="demoService" class="cn.it.jzl.dubbo.DemoServiceImpl"/>
 
</beans>

5、启动Consumer,调用远程服务
public class Consumer {

	public static void main(String[] args) {
		 //测试常规服务
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("dubbo-consumer.xml");
        context.start();
        System.out.println("consumer start");
        cn.it.jzl.dubbo.DemoService demoService =(cn.it.jzl.dubbo.DemoService) context.getBean(cn.it.jzl.dubbo.DemoService.class);
        if(demoService==null){
        	System.out.println("没获取到对象。。。。");
        }
        System.out.println("consumer");
        demoService.sayHello("二狗。。。。");
	}

}

6、通过Spring配置引用远程服务
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
       <dubbo:application name="demo-provider"/>
    <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--使用 dubbo 协议调用定义好的 api.PermissionService 接口-->
    <dubbo:reference id="permissionService" interface="cn.it.jzl.dubbo.DemoService"/>
</beans>

7、运行项目,先确保provider已被运行后再启动consumer模块

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值