dubbo简单集成spring
来源:互联网 发布:三大男高音 知乎 编辑:程序博客网 时间:2024/05/17 06:12
使用maven构建 core-inteface(接口定义),core(服务提供实现),comsumer(服务消费)
1 ,建立core- interface公共api
2 建立服务提供者项目,core 实现interface中接口
pom.xml中引入dubbo ,和 core-interface 使用zookeeper,还需要引入zk的jar
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version></dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> </dependency> <dependency> <groupId>com.cn.web</groupId> <artifactId>core-interface</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
dubbo-provider.xml 配置 ,( 相关更详细参数配置说明 http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%3Cdubbo%3Aservice%2F%3E)
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 使用Annotation自动注册Bean,解决事物失效问题:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解。 --><!-- <context:component-scan base-package="com.cn.core">base-package 如果多个,用“,”分隔<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan> --> <!-- 当前应用信息配置 --> <dubbo:application name="dubbo-core-service" /> <!-- 使用multicast广播注册中心暴露服务地址 --> <!-- <dubbo:registry address="multicast://224.1.1.1:1234" /> --> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://192.168.1.21:2181" /> <!-- 用dubbo协议在20880端口暴露服务 访问日志路径--> <dubbo:protocol name="dubbo" port="20880" accesslog="D:/bar.log"/> <!-- 用rmi协议在20881端口暴露服务 --> <dubbo:protocol name="rmi" port="20881" /> <!-- 声明需要暴露的服务接口 --><!-- 相关更详细参数配置说明 http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%3Cdubbo%3Aservice%2F%3E--> <dubbo:service interface="com.cn.service.UserService" ref="userService" protocol="dubbo" delay="-1" timeout="6000" retries="0"/> <!-- 和本地bean一样实现服务 也可直接在UserServiceImpl上@Service("userService")--> <!-- <bean id="userService" class="com.cn.core.service.impl.UserServiceImpl" /> --></beans>
接着启动core,提供服务,启动方式 有基本常见一下三种:
1,服务容器是一个standalone的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加载服务提供方,增加复杂性,也浪费资源。
web.xml中加载 dubbo-provider.xml配置 或者引入到其他applicationContext.xml中,反正能加载到容器即可
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:/dubbo-provider.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
2,服务容器只是一个简单的Main方法,并加载一个简单的Spring容器,用于暴露服务。
package com.cn.core;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;public class CoreLauncher {private static Logger logger = LoggerFactory.getLogger(CoreLauncher.class); /** * @param args */ public static void main(String[] args) { logger.info("开始启动asset");// 通过自定义main函数ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:dubbo-provider.xml");context.start();synchronized (CoreLauncher.class) { while (true) { try { CoreLauncher.class.wait(); } catch (Throwable e) { } } } }}java应用项目可以打包成一个jar,指定一个拥有main函数的CoreLauncher作为你这个jar包的程序入口。
tips:eclipse打成可执行jar方式,制定项目鼠标右键-->exoport-->java-->Runable JAR file-->launcher configuration选择项目中的包含main函数的CoreLauncher类,选择export destination路径并设置名字core.jar ,library handling可选择是否包含其他依赖包,这里测试用,所以选择包含其他依赖包,package required lib.........-->Finish
执行jar 命令, Java -jar core.jar运行。
3,服务容器的加载内容可以扩展,内置了spring, jetty, log4j等加载,可通过Container扩展点进行扩展
在classpath目录下配置 dubbo.properties 相关配置
dubbo.container=log4j,spring dubbo.application.name=ore-service dubbo.application.owner=core_sdubbo.registry.address=zookeeper://127.0.0.1:2181 dubbo.protocol.name=dubbo dubbo.protocol.port=56432 dubbo.service.loadbalance=roundrobin dubbo.spring.config=classpath:dubbo-provider.xml dubbo.log4j.level=DEBUG dubbo.log4j.level=INFO
package com.cn.core;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;public class CoreLauncher {private static Logger logger = LoggerFactory.getLogger(CoreLauncher.class); /** * @param args */ public static void main(String[] args) { logger.info("开始启动asset");//第三种 在classpath目录下配置 dubbo.properties 相关配置com.alibaba.dubbo.container.Main.main(args); }}
java应用项目可以打包成一个jar,指定一个拥有main函数的CoreLauncher作为你这个jar包的程序入口。
3 建立项目 consumer 消费服务
同样引入 core-interface和 dubbo ,zk的jar,注意下dubbo的jar
<dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version><exclusions><exclusion><artifactId>spring</artifactId><groupId>org.springframework</groupId></exclusion></exclusions></dependency>
配置 dubbo-consumer.xml,详细配置说明,参见:http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%3Cdubbo%3Areference%2F%3E
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名 --> <dubbo:application name="consumer-app"/> <!-- 使用multicast广播注册中心暴露发现服务地址 --> <!-- <dubbo:registry address="multicast://224.1.1.1:1234" /> --> <dubbo:registry address="zookeeper://192.168.1.21:2181" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService check 启动是否检查服务可用 false不检查--> <dubbo:reference id="userService" interface="com.cn.service.UserService" check="false"> <!-- <dubbo:method name="selectUsers" timeout="3000" retries="2000"></dubbo:method> --> </dubbo:reference> </beans>
启动consumer服务,访问userController中的getTest1测试
- dubbo简单集成spring
- 集成Dubbo服务(Spring)
- 集成Dubbo服务(Spring)
- 集成Dubbo服务(Spring)
- 集成Dubbo服务(Spring)
- 集成Dubbo服务(Spring)
- 集成Dubbo服务(Spring)
- 集成Dubbo服务(Spring)
- Dubbo集成到Spring
- Spring集成Dubbo服务
- Spring集成Dubbo
- 集成Dubbo服务(Spring)
- Spring 集成 Dubbo
- spring boot集成dubbo
- Spring 集成 Dubbo
- 集成Dubbo服务(Spring)
- 集成Dubbo服务(Spring)
- Dubbo和Spring集成Demo
- hdu 5919 Sequence II (可持久化线段树)
- POI读取Excel
- linux系统记录用户操作实现方法
- Swift
- 名不副实的getchar()
- dubbo简单集成spring
- 线程安全
- J2EE系列之Struts2学习笔记(四)---使用javabean方式给类对象赋值
- WPF 选择treeview子节点获取父节点
- ArrayList和LinkedList的区别
- ZOJ 3952 Fibonacci Sequence Chicken Edition 模拟
- web前端性能优化
- SylixOS音频驱动移植
- 利用SpringCloud搭建一个最简单的微服务框架