① java bbo配置文件中的$是哪个目录
是找不到schema文件,解决方法如下:
1、下载一个bbo.xsd文件;
2、在windows->preferrence->xml->xmlcatalogadd->catalog entry ->file system 选择刚刚下载的文件路径;
3、修改key值和配置文件的http://code.alibabatech.com/schema/bbo/bbo.xsd 相同保存。
4、在xml文件右键validate就可以k解决了。
② cmd命令bbo 消费者 怎么调用 提供者
现在很流行的Dubbo很多朋友都听说过吧,最近我也在看这方面的东西,分享先我的心得笔记。
先说说我们团队要做的项目框架,很简单重在实现基于zookeeper的bbo注册。
框架:springmvc+spring+zookeeper+bbo
项目分三层,model存放数据,view页面展示、controller下面具体逻辑实现。通过bbo消费方和供应方注册,供应方给消费方暴露接口,供消费方调用。
工程部署需要配置文件有:
applicationContext-bbo.xml
{--
<--
消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样
-->
<--
使用zookeeper注册中心暴露服务地址
-->
<--
生成远程服务代理,可以像使用本地bean一样使用demoService
-->
<bbo:reference
id="demoService"
interface="com.unj.bbotest.provider.DemoService"
/>
--}
bbo.properties
{--
<--基于ZooKeeper的Dubbo注册中心直接部署tomcat,修改WEB-INF下文件-->
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.admin.root.password=root
bbo.admin.guest.password=guest
--}
zoo_sample.cfg
{--
zookeeper/conf/下,修改zoo_sample.cfg为zoo.cfg,启动bin/下zkServer.cmd
--}
因为引入bbo,摒弃了原有Web
Service项目的wdls暴露,由于项目依赖关系严重,项目使用maven构建,通过Maven
pom.xml三维坐标引入jar包,调用bbo暴露接口开发。
性能测试工具:LoadRunner、jmeter
接口测试工具:LoadRunner、jmeter、soapUI、Spotlight
安全测试工具:NStalker-Web、AppScan、TamperIESetup
自动化工具
:BadboyInstaller、QTP
/**
*
@author
wonter
*
<b>描述:</b>
一天学一个模式
更新中,请关注我的博客!
*
<b>博客:</b>
http://www.cnblogs.com/javame
*
<b>邮件:</b>
[email protected]
③ 调用bbo服务时事务配置在哪
bbo实现了分布式远程调用框架,多运行节点既能提高可靠性,又能提升负载能力。bbo配置主要有注册中心(推荐zookeeper或redis)、提供者provider、消费者consumer,注册中心是第三方实现,所以主要配置好服务提供者和消费者就可以了。实际上服务接口和实现都是需要我们自己设计和实现的,bbo做的事情就是将服务实现发布到注册中心,然后消费者从注册中心订阅服务接口,之后对接口的调用就由bbo调度提供者去执行并返回结果。以下配置都有源码,见右侧“免费资源”。
提供者provider的配置:提供者是独立运行的节点,可以多实例运行,将服务注册到注册中心
必须要有application name,注册中心配置zookeeper,协议bbo,超时6秒失败不重试,提供者加载repository和service层bean,然后发布接口service。
<bbo:application name="ite-provider" />
<bbo:registry address="zookeeper://127.0.0.1:2181"/>
<bbo:protocol name="bbo" port="20880" />
<bbo:provider timeout="6000" retries="0"/>
<import resource="classpath:cache.xml"/>
<import resource="classpath:ite-repository.xml"/>
<import resource="classpath:ite-service.xml"/>
<import resource="classpath:ite-provider.xml"/>
ite-provider.xml,ref引用的bean是ite-service.xml已经定义好的接口实现,bbo:service就是把接口实现发布到注册中心
<bbo:service ref="codeListService" interface="com.itecheast.ite.domain.service.CodeListService" />
<bbo:service ref="idService" interface="com.itecheast.ite.domain.service.IdService" />
<bbo:service ref="passwordService" interface="com.itecheast.ite.domain.service.PasswordService" />
<bbo:service ref="rolePermissionService" interface="com.itecheast.ite.domain.service.RolePermissionService" />
provider是可以独立运行的,bbo.jar里面有assembly目录,运行mvn assembly:directory就可以生成能直接运行的provider目录
assembly.xml内容,可以切换dir或tar.gz两种格式
<assembly>
<id>assembly</id>
<formats>
<!-- <format>tar.gz</format> -->
<format>dir</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
<fileSet>
<directory>src/test/resources</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
bbo.properties,运行start.bat或start.sh时,将从属性文件读取bbo配置信息,provider节点可以多处复制并运行。
bbo.container=log4j,spring
bbo.application.name=ite-provider
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.monitor.protocol=registry
bbo.protocol.name=bbo
bbo.protocol.port=20880
bbo.spring.config=provider.xml
bbo.log4j.file=logs/ite-provider.log
bbo.log4j.level=WARN
消费者consumer的配置,使用bbo:reference订阅注册中心里的服务即可,然后就可以@Autowired注入服务接口了。
<bbo:application name="ite-consumer" />
<bbo:registry address="zookeeper://127.0.0.1:2181"/>
<bbo:reference id="codeListService" interface="com.itecheast.ite.domain.service.CodeListService" />
<bbo:reference id="idService" interface="com.itecheast.ite.domain.service.IdService" />
<bbo:reference id="passwordService" interface="com.itecheast.ite.domain.service.PasswordService" />
<bbo:reference id="rolePermissionService" interface="com.itecheast.ite.domain.service.RolePermissionService" />
如果前端项目是一个消费者,就可以在web.xml里直接加载consumer.xml订阅服务了。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:consumer.xml,classpath:cache.xml,classpath:shiro.xml,classpath:front.xml</param-value>
</context-param>
实际上本地调试开发时,可以不必启用分布式配置,只需要更改web.xml即可,所有的服务都已经是配置好了的。
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:ite-repository.xml,classpath:ite-service.xml,classpath:cache.xml,classpath:shiro.xml,classpath:front.xml</param-value>
</context-param>
zookeeper的配置很简单,
wget http://tool.xlongwei.com/softwares/zookeeper-3.4.6.tar.gz
tar -zxvf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg #配置zookeeper参数
单机配置(集群配置待研究)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/bbo/zookeeper-3.3.3/data
clientPort=2181
运行或停止zookeeper
sh zkServer.sh start | stop
④ bbo客户端和引用的服务端要配置在一个dobbu.xml文件中吗
直连加不发布服务DUBBO的配置属性里面对消费端提供了不从注册中心发现服务的机制,直接配置远程接口的地址,这样可以保证消费端连接到制定的环境接口。这样消费端是解决了问题,但是服务提供端呢?如上图的B1它即是消费端也是服务提供端,它提供A1所依赖的接口,那么如果B1将它的服务发布到注册中心里面(这里需要提醒,STABLE环境机制里面所有子环境公用一个注册中心),那么势必会导致stable环境里面的A会发现B1提供的服务?势必会导致stable环境的不稳定(stable环境的机制是stable环境只能进不能出,就是不能调用外部其他子环境的服务)?所以B1不能发布服务到注册中心,bbo也提供了相关的配置属性来支持这一点。下面我例举出通过哪些配置可以实现这种方案:服务消费端:DUBBO在消费端提供了一个url的属性来指定某个服务端的地址默认的方式是从注册中心发现接口为com.alibaba.bbo.demo.HelloWorldService的服务,但是如果需要直连,可以在bbo.properties下面配置bbo.reference.helloWorldService.url=bbo://ip:port/com.alibaba.bbo.demo.HelloWorldService可以通过配置bbo.reference.url=bbo://ip:port/来让某个消费者系统的服务都指向制定的服务器地址(关于配置信息可以参考《DUBBO配置规则详解》)
⑤ 怎么把mybatis的mapper接口通过bbo暴漏
项目分三层,model存放数据,view页面展示、controller下面具体逻辑实现。通过bbo消费方和供应方注册,供应方给消费方暴露接口,供消费方调用。
工程部署需要配置文件有:
applicationContext-bbo.xml
{--
<-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<-- 使用zookeeper注册中心暴露服务地址 -->
<-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
<bbo:reference id="demoService" interface="com.unj.bbotest.provider.DemoService" />
--}
bbo.properties
{--
<--基于ZooKeeper的Dubbo注册中心直接部署tomcat,修改WEB-INF下文件-->
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.admin.root.password=root
bbo.admin.guest.password=guest
--}
zoo_sample.cfg
{--
zookeeper/conf/下,修改zoo_sample.cfg为zoo.cfg,启动bin/下zkServer.cmd
--}
因为引入bbo,摒弃了原有Web Service项目的wdls暴露,由于项目依赖关系严重,项目使用maven构建,通过Maven pom.xml三维坐标引入jar包,调用bbo暴露接口开发。
性能测试工具:LoadRunner、jmeter
接口测试工具:LoadRunner、jmeter、soapUI、Spotlight
安全测试工具:NStalker-Web、AppScan、TamperIESetup
自动化工具 :BadboyInstaller、QTP
/**
* @author wonter
* <b>描述:</b> 一天学一个模式 更新中,请关注我的博客!<br>
* <b>博客:</b> http://www.cnblogs.com/javame <br>
* <b>邮件:</b> [email protected] <br>
敏捷测试团队,不再仅仅是在coding之后。而是和研发人员贯穿在需求分析、规格说明、自动化单元测试、自动化验收测试、静态代码分析、技术债等环节中。所以敏捷项目必定在将来效率的趋势下成为主流。
1. 使用阿里巴巴Druid连接池(高效、功能强大、可扩展性好的数据库连接池、监控数据库访问性能、支持Common-Logging、Log4j和JdkLog,监控数据库访问)
2. 提供高并发JMS消息处理机制
3. 所有功能模块化、所有模块服务化、所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机
4. 提供Wink Rest、Webservice服务,故可作为独立服务平台部署
框架整合:
Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC、IOS、Android)
框架简介:
项目Maven构建,真实大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供模块化、服务化、原子化的方案,将功能模块进行拆分,可以公用到所有的项目中。架构采用分布式部署架构,所有模块进行拆分,使项目做到绝对解耦,稳定压倒一切~~
⑥ 如何更好地学习bbo源代码
1、Dubbo与Spring的整合 Dubbo在使用上可以做到非常简单,不管是Provider还是Consumer都可以通过Spring的配置文件进行配置,配置完之后,就可以像使用 spring bean一样进行服务暴露和调用了,完全看不到bbo api的存在。这是因为bbo使用了spring提供的可扩展Schema自定义配置支持。在spring配置文件中,可以像、这样进行配置。 META-INF下的spring.handlers文件中指定了bbo的xml解析类:DubboNamespaceHandler。像前面的被解 析成ServiceConfig,被解析成ReferenceConfig等等。 2、jdk spi扩展 由于Dubbo是开源框架,必须要提供很多的可扩展点。Dubbo是通过扩展jdk spi机制来实现可扩展的。具体来说,就是在META-INF目录下,放置文件名为接口全称,文件中为key、value键值对,value为具体实现类 的全类名,key为标志值。由于bbo使用了url总线的设计,即很多参数通过URL对象来传递,在实际中,具体要用到哪个值,可以通过url中的参 数值来指定。 Dubbo对spi的扩展是通过ExtensionLoader来实现的,查看ExtensionLoader的源码,可以看到Dubbo对jdk spi做了三个方面的扩展:
(1)jdk spi仅仅通过接口类名获取所有实现,而ExtensionLoader则通过接口类名和key值获取一个实现;
(2)Adaptive实现,就是生成一个代理类,这样就可以根据实际调用时的一些参数动态决定要调用的类了。
(3)自动包装实现,这种实现的类一般是自动激活的,常用于包装类,比如Protocol的两个实现类:ProtocolFilterWrapper、ProtocolListenerWrapper。 3、url总线设计 Dubbo为了使得各层解耦,采用了url总线的设计。我们通常的设计会把层与层之间的交互参数做成Model,这样层与层之间沟通成本比较大,扩展起来也比较麻烦。因此,Dubbo把各层之间的通信都采用url的形式。比如,注册中心启动时,参数的url为: registry://0.0.0.0:9090?codec=registry&transporter=netty 这就表示当前是注册中心,绑定到所有ip,端口是9090,解析器类型是registry,使用的底层网络通信框架是netty。
二、Dubbo启动过程
Dubbo分为注册中心、服务提供者(provider)、服务消费者(consumer)三个部分。 1、注册中心启动过程 注册中心的启动过程,主要看两个类:RegistrySynchronizer、RegistryReceiver,两个类的初始化方法都是start。 RegistrySynchronizer的start方法:
(1)把所有配置信息load到内存;
(2)把当前注册中心信息保存到数据库;
(3)启动5个定时器。 5个定时器的功能是: (1)AutoRedirectTask,自动重定向定时器。默认1小时运行1次。如果当前注册中心的连接数高于平均值的1.2倍,则将多出来的连接数重定向到其他注册中心上,以达到注册中心集群的连接数均衡。 (2)DirtyCheckTask,脏数据检查定时器。作用是:分别检查缓存provider、数据库provider、缓存consumer、数据库 consumer的数据,清除脏数据;清理不存活的provider和consumer数据;对于缓存中的存在的provider或consumer而数 据库不存在,重新注册和订阅。 (3)ChangedClearTask,changes变更表的定时清理任务。作用是读取changes表,清除过期数据。 (4)AlivedCheckTask,注册中心存活状态定时检查,会定时更新registries表的expire字段,用以判断注册中心的存活状态。如果有新的注册中心,发送同步消息,将当前所有注册中心的地址通知到所有客户端。 (5)ChangedCheckTask,变更检查定时器。检查changes表的变更,检查类型包括:参数覆盖变更、路由变更、服务消费者变更、权重变更、负载均衡变更。
⑦ 怎么设置bbo的xml配置让maven加载进去
现在很流行的Dubbo很多朋友都听说过吧,最近我也在看这方面的东西,分享先我的心得笔记。
先说说我们团队要做的项目框架,很简单重在实现基于zookeeper的bbo注册。
框架:springmvc+spring+zookeeper+bbo
项目分三层,model存放数据,view页面展示、controller下面具体逻辑实现。通过bbo消费方和供应方注册,供应方给消费方暴露接口,供消费方调用。
工程部署需要配置文件有:
applicationContext-bbo.xml
{--
<-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<-- 使用zookeeper注册中心暴露服务地址 -->
<-- 生成远程服务代理,可以像使用本地bean一样使用demoService -->
<bbo:reference id="demoService" interface="com.unj.bbotest.provider.DemoService" />
--}
bbo.properties
{--
<--基于ZooKeeper的Dubbo注册中心直接部署tomcat,修改WEB-INF下文件-->
bbo.registry.address=zookeeper://127.0.0.1:2181
bbo.admin.root.password=root
bbo.admin.guest.password=guest
--}
zoo_sample.cfg
{--
zookeeper/conf/下,修改zoo_sample.cfg为zoo.cfg,启动bin/下zkServer.cmd
--}
因为引入bbo,摒弃了原有Web Service项目的wdls暴露,由于项目依赖关系严重,项目使用maven构建,通过Maven pom.xml三维坐标引入jar包,调用bbo暴露接口开发。
性能测试工具:LoadRunner、jmeter
接口测试工具:LoadRunner、jmeter、soapUI、Spotlight
安全测试工具:NStalker-Web、AppScan、TamperIESetup
自动化工具 :BadboyInstaller、QTP
/**
* @author wonter
* <b>描述:</b> 一天学一个模式 更新中,请关注我的博客!<br>
* <b>博客:</b> http://www.cnblogs.com/javame <br>
* <b>邮件:</b> [email protected] <br>
⑧ bbo 配置文件中怎么做声明
Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。
如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭check,否则服务临时不可用时,会抛出异常,拿到null引用,如果check=false,总是会返回引用,当服务恢复时,能自动连上。
可以通过check="false"关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。
1、关闭某个服务的启动时检查:(没有提供者时报错)
<bbo:reference interface="com.foo.BarService" check="false" />
2、关闭所有服务的启动时检查:(没有提供者时报错) 写在定义服务消费者一方
<bbo:consumer check="false" />
3、关闭注册中心启动时检查:(注册订阅失败时报错)
<bbo:registry check="false" />
⑨ 连接zookeeper时pom.xml怎么配置
在自己主机上面安装zookeeper,然后就可以写代码了,我们计划是将接口底层跟上层相互分离;
consumer.xml:
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beansgframework.org/schema/beans"
xmlns:xsi="httporg/20 www.cshangzj.com 01/XMLSchema-instance"
xmlns:bbo="httpbatech.com/schema/bbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http:/framework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/bbo
http://code.alibabatech.com/schema/bbo/bbo.xsd
">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<bbo:application name="consumer-of-helloworld-app" />
<bbo:registry
address="ip:port"
protocol="zookeeper" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<bbo:reference id="demoService" interface="net.datafans.exercise.bbo.DemoService" />
</beans>
复制代码
provider.xml
复制代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bbo="http://code.alibabatech.com/schema/bbo"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
a/beans/spring-beans.xsd
http:/om/schema/bbo
http://code.alibaba
<!-- 提供方应用信息,用于计算依赖关系 -->
<bbo:application name="zookeeper-registry" />
<!-- 当前应用信息配置 -->
⑩ springmvc+bbo配置问题
换个javassist包,比如javassist-3.18.2-GA.jar,一定是某些版本的包中少了相关的类导致类加载失败