此文檔針對初學者。 html
廢話很少說,先上源碼: http://git.oschina.net/alexgaoyh/Dubbo-parent java
http://git.oschina.net/alexgaoyh/Dubbo-parent/attach_files git
Maven項目,只須要注意下圖中紅色箭頭標註的三個模塊便可; spring
Dubbo-api: API接口,被 Dubbo-test-provider(服務提供者),Dubbo-test-consumer(服務消費者)依賴; sql
Dubbo-api 模塊沒什麼多說的,只是須要的interface接口和實體類……; apache
Dubbo-test-consumer 模塊一樣沒有什麼多說的,講服務提供者發佈的接口依賴到項目中便可,注意 consumerAll.xml 便可。 api
Dubbo-test-provider: tomcat
服務提供者,Dubbo整合mybatis spring druid,實現事務控制,druid監控數據的log4j日誌記錄(sql輸出); 服務器
下圖中,須要注意兩個單元測試的文件, mybatis
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" />
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