此文档针对初学者。
废话不多说,先上源码: http://git.oschina.net/alexgaoyh/Dubbo-parent
http://git.oschina.net/alexgaoyh/Dubbo-parent/attach_files
Maven项目,只需要注意下图中红色箭头标注的三个模块即可;
Dubbo-api: API接口,被 Dubbo-test-provider(服务提供者),Dubbo-test-consumer(服务消费者)依赖;
Dubbo-api 模块没什么多说的,只是需要的interface接口和实体类……;
Dubbo-test-consumer 模块同样没有什么多说的,讲服务提供者发布的接口依赖到项目中即可,注意 consumerAll.xml 即可。
Dubbo-test-provider:
服务提供者,Dubbo整合mybatis spring druid,实现事务控制,druid监控数据的log4j日志记录(sql输出);
下图中,需要注意两个单元测试的文件,
DemoTest.java 文件是用来本地进行单元测试使用的,确保对外发布的服务接口都通过单元测试; DemoDubboTest.java 文件是直接对外发布dubbo服务接口的,相关的方法通过单元测试整合,即可对外发布接口,发布接口之后,服务消费者即可进行相关业务操作;
PS: 服务提供者的模块,后期可以打包为jar,在服务器上面运行,相关使用参见 ReadMe.md (mvn assembly:assembly), 这样,服务提供者的模块,就不需要形如tomcat的容器,直接运行jar文件,减少了服务器资源的消耗,形如如下类似的命令;
java -cp Dubbo-provider-0.0.1-RELEASE.jar com.Dubbo.provider.demo.main.DemoProviderMain
需要注意的是,上面的Dubbo-* 模块,使用了zookeeper注册中心,代码中需要修改注册中心的url配置;
<!-- 使用multicast广播注册中心暴露服务地址 --> <dubbo:registry protocol="zookeeper" address="192.168.1.76:2181" />
同时,建议使用
dubbo-admin-2.5.3.war 的dubbo监控中心,可以方便的对发布的服务接口进行进一步控制;
log4j 记录 druid 相关监控记录,下图为打印输出的sql语句:
其中log4j.properties 文件的配置如下,使用 log4j记录druid的日志,打印sql:
配置文件仅供参考,建议根据业务进行修改配置;
log4j.rootCategory=info,stdout # CONSOLE appender not used by default log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c{1} %M %L - %m%n log4j.logger.org.springframework=INFO,perf #log4j.logger.druid.sql=info,druid #log4j.logger.druid.sql.DataSource=info,druid #log4j.logger.druid.sql.Connection=info,druid log4j.logger.druid.sql.Statement=debug,druid #log4j.logger.druid.sql.ResultSet=info,druid # File appender log4j.appender.perf=org.apache.log4j.RollingFileAppender log4j.appender.perf.layout=org.apache.log4j.PatternLayout log4j.appender.perf.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n log4j.appender.perf.file=../druid-logs/perf.log log4j.appender.perf.MaxFileSize=1MB log4j.appender.perf.MaxBackupIndex=40 log4j.appender.perf.append=true log4j.appender.perf.ImmediateFlush=true log4j.appender.druid=org.apache.log4j.RollingFileAppender log4j.appender.druid.layout=org.apache.log4j.PatternLayout log4j.appender.druid.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n log4j.appender.druid.file=../druid-logs/druid.log log4j.appender.druid.MaxFileSize=1MB log4j.appender.druid.MaxBackupIndex=40 log4j.appender.druid.append=true log4j.appender.druid.ImmediateFlush=true