dubbo服务端使用druid怎么开启druid配置数据监控的目的是什么?

博客分类:
最近在项目中采用dubbo来管理服务,但是数据库连接池这一块采用druid,网上配置druid
sql监控的都是基于web.xml配置,需要servlet容器支持,但是dubbo项目服务端这边一般不是web项目,所以启动这一块用不到servlet容器,一般dubbo项目启动都是采用shell脚本,java命令行,eclipse开发时直接main函数启动。出现了这问题后网上找方案,比较少,庆幸前辈记录的好,通俗易懂,依葫芦画瓢搞出来了,在此也特别记录下。
解决思想:
dubbo提供的容器有SpringContainer、Log4jContainer、JettyContainer、JavaConfigContainer、LogbackContainer
其中jetty大家都熟悉,更轻量级的servlet容器。dubbo里面内置了JettyContainer,可以提供汇报一些dubbo的执行状态。但是我们无法直接配置druid的sql监听器,所以必须借助于dubbo启动jetty容器的形式,自己进行JettyContainer扩展,而同时dubbo启动服务时可以指定多个容器,所以我们启动时指定启动spring容器与我们扩展的JettyContainer容器,完成druid监控。
1.添加jetty依赖
&dependency&
&groupId&org.mortbay.jetty&/groupId&
&artifactId&jetty&/artifactId&
&version&6.1.26&/version&
&/dependency&
2.更改JettyContainer
先下载JettyContainer代码下来,或者拷贝我的
下载路径:
将下载下来的JettyContainer添加到项目/src/main/java/自定义包下,再添加druid监听servlet代码
public class JettyContainer implements Container {
private static final Logger logger = LoggerFactory.getLogger(JettyContainer.class);
public static final String JETTY_PORT = "dubbo.jetty.port";
public static final String JETTY_DIRECTORY = "dubbo.jetty.directory";
public static final String JETTY_PAGES = "dubbo.jetty.page";
public static final int DEFAULT_JETTY_PORT = 8090; //jetty容器端口
SelectChannelC
public void start() {
String serverPort = ConfigUtils.getProperty(JETTY_PORT);
if (serverPort == null || serverPort.length() == 0) {
port = DEFAULT_JETTY_PORT;
port = Integer.parseInt(serverPort);
connector = new SelectChannelConnector();
connector.setPort(port);
ServletHandler handler = new ServletHandler();
String resources = ConfigUtils.getProperty(JETTY_DIRECTORY);
if (resources != null && resources.length() & 0) {
FilterHolder resourceHolder = handler.addFilterWithMapping(ResourceFilter.class, "/*", Handler.DEFAULT);
resourceHolder.setInitParameter("resources", resources);
ServletHolder pageHolder = handler.addServletWithMapping(PageServlet.class, "/*");
pageHolder.setInitParameter("pages", ConfigUtils.getProperty(JETTY_PAGES));
pageHolder.setInitOrder(2);
//这里是新添加的,作用于druid日志监控系统的
handler.addServletWithMapping(StatViewServlet.class, "/druid/*");
Server server = new Server();
server.addConnector(connector);
server.addHandler(handler);
server.start();
} catch (Exception e) {
throw new IllegalStateException("Failed to start jetty server on " + NetUtils.getLocalHost() + ":" + port
+ ", cause: " + e.getMessage(), e);
public void stop() {
if (connector != null) {
connector.close();
connector =
} catch (Throwable e) {
logger.error(e.getMessage(), e);
3.更改duboo启动时加载容器配置
在src/main/resources/META-INF
下面创建dubbo文件夹,再添加文件com.alibaba.dubbo.container.Container
myjetty=自定义包.JettyContainer
4.更改或添加dubbo.properties内容
说明:dubbo加载spring容器时,默认加载src/main/resources/META-INF/spring 文件夹里面的配置文件。
此处更改内容也是更改spring配置加载位置,指定dubbo加载哪些容器,配置日志
#配置spring配置加载位置
dubbo.spring.config=classpath*:spring-*.xml
#配置传入要加载的容器
dubbo.container=spring,myjetty,log4j
#配置日志文件路径
dubbo.log4j.file=/logs/dubbo-jzy-provider.log
#配置日志级别
dubbo.log4j.level=WARN
#配置日志子目录,用于多进程启动,避免冲突
dubbo.log4j.subdirectory=20880
5.启动发布服务
com.alibaba.dubbo.container.Main 是dubbo服务启动的主类,指定启动spring容器和修改后的myjetty 容器。
public class JettyContainerStart {
public static void main(String[] args) {
args = new String[] { "spring", "myjetty" };
com.alibaba.dubbo.container.Main.main(args);
6.druid sql监控页面
参考网上解决方案,感谢
kuangbinhua
浏览: 1729 次
来自: 深圳
ServletHolder statViewHolder
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'如果dubbo使用注解,并且spring也使用注解,如使用事务,则dubbo加过注解的类无法发布。
&?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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
&!-- 配置数据源 --&
&bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close"&
&property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /&
&property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:ORCL" /&
&property name="username" value="test1" /&
&property name="password" value="123456" /&
&property name="filters" value="wall" /&
&property name="initialSize" value="2" /&
&property name="minIdle" value="2" /&
&property name="maxActive" value="200" /&
&property name="maxWait" value="60000" /&
&property name="minEvictableIdleTimeMillis" value="300000" /&
&property name="validationQuery" value="select 1 from dual" /&
&property name="testWhileIdle" value="true" /&
&property name="testOnBorrow" value="false" /&
&property name="testOnReturn" value="false" /&
&property name="timeBetweenEvictionRunsMillis" value="60000" /&
&property name="poolPreparedStatements" value="true" /&
&property name="maxOpenPreparedStatements" value="100" /&
&!-- 配置hibernate SessionFactory --&
&bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"&
&property name="dataSource" ref="dataSource" /&
&property name="hibernateProperties"&
&prop key="hibernate.dialect"&org.hibernate.dialect.Oracle10gDialect&/prop&
&prop key="hibernate.show_sql"&true&/prop&
&prop key="hiberante.format_sql"&true&/prop&
&prop key="hibernate.autoReconnect"&true&/prop&
&/property&
&!-- 扫描hibernate的注解 --&
&property name="packagesToScan" value="com.br.model" /&
&!-- 事务管理器 --&
&bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager"&
&property name="sessionFactory" ref="sessionFactory" /&
&!--启动注解用注解来管理事务 --&
&tx:annotation-driven transaction-manager="transactionManager" /&
阅读(...) 评论()花间一壶酒,独酌无相亲,举杯邀明月,对影成三人。
Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建
Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建
1.开发工具使用:
MyEclipse或Eclipse,数据库使用Oracle。需要用到的软件有Zookeeper(注册中心),Tomcat(Web容器)和Maven(包管理)。
2.初始环境配置:
解压zookeeper-3.4.6到自己的安装目录(安装目录中最好不要出现中文)。
解压apache-maven-3.3.3到自己的安装目录。
解压apache-tomcat-7.0.63到自己的安装目录。
3. zookeeper-3.4.6安装与配置
1)下载zookeeper,
下载地址:http://zookeeper.apache.org/releases.html
(该实例使用版本是zookeeper-3.4.6)
2)修改zookeeper-3.4.6\conf\zoo.cfg
例如windows下;
dataDir=E:\\wordDubbo\\zookeeper-3.4.6\\data
dataLogDir=E:\\wordDubbo\\zookeeper-3.4.6\\log
预先创建文件夹data和log
3)启动zookeeper
例如windows下:zookeeper-3.4.6\bin\zkServer.cmd
4 . apache-maven-3.3.3安装与配置
1) MAVEN 下载地址:
选择 Maven 3.3.3 (Binary tar.gz)
或 Maven 3.3.3 (Binary zip)
2) 配置系统环境:
解压:将下载MAVEN (apache-maven-3.3.3)压缩包进行解压放置在 D盘根目录下。
设置环境变量:计算机环境变量(系统变量部分) -& 新建变量名" MAVEN_HOME ",变量值:" D:\apache-maven-3.3.3 "
确定(保存),更改path: 在末尾追加 ” %MAVEN_HOME%\“。
打开cmd 命令输入 ”
MVN -V “ 命令行出现, MAVEN 3.3.3 版本号,系统环境配置成功。
3)更改maven 的仓库默认存放地址
修改D:\apache-maven-3.3.3 下的 conf 文件夹下的 settings.xml 文件
更改localRepository 配置节 :
&localRepository&E:/workspace/maven/repo&/localRepository&
4)下载相关包
在 cmd 中敲并回车执行:mvn help:system
5) 在Myeclipse 中使用Maven
打开myeclipse2014 选择 window -& prefences -& MyEclipse 下的-& Maven4MyEclipse
(1)修改 " Maven4MyEclipse" 下的Installations 点击 ” Add “ 选择目录 ” D:\apache-maven-3.3.3“
Global settings from installationdirectory( open file) 选择D:\apache-maven-3.3.3\conf\settings.xml
(2)修改 " Maven4MyEclipse" 下的 User Settings
下的 User Settings 属性” D:\apache-maven-3.3.3\conf\settings.xml“ ,保存确认。
5 . apache-tomcat-7.0.63安装与配置
1)安装好java的JDK
2)下载好tomcat:版本为apache-tomcat-7.0.63,并解压到硬盘中。
配置步骤:
(1)新建变量名:JAVA_HOME,
变量值:D:\Program Files\Java\jdk1.7.0_25
(2)打开PATH,添加变量值:
%JAVA_HOME%\%JAVA_HOME%\jre\bin
(3)新建变量名:CLASSPATH,变量值:
%JAVA_HOME%\lib\dt.%JAVA_HOME%\lib\tools.
(1).表示当前路径,%JAVA_HOME%就是引用前面指定的JAVA_HOME;
(2)JAVA_HOME指明JDK安装路径,此路径下包括lib,bin,jre等文件夹,tomcat,eclipse等的运行都需要依靠此变量。
(3)PATH使得系统可以在任何路径下识别java命令。
(4)CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。
2)配置Tomcat环境变量
(1)新建变量名:CATALINA_BASE,变量值:apache-tomcat-7.0.63
(2)新建变量名:CATALINA_HOME,变量值:apache-tomcat-7.0.63
(3)打开PATH,添加变量值:
%CATALINA_HOME%\%CATALINA_HOME%\bin
6. 新建Maven工程:(注:直接导工程请跳过此步骤)
File-&New-&Maven Project
添加本地Maven环境依赖:
Windows-&Preferences-&MyEclipse-&Maven4MyEclipse-&Installations-&add-&选择本地apache-maven-3.3.3安装路径-&apply-&UseSetting修改为本地。
7.工程结构:
8. Maven pom.xml文件配置:
备注:搭建中如果报错,引入dubbo.xsd离线文件,
不能识别:dubbo:application标签
下载dubbo.xsd
windows-&preferences-&MyEclicpse-&XML-&XMLCatalog
Add-&UserSpecified Entries-&
9.Spring配置:Spring.Xml
&?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:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"&
&aop:aspectj-autoproxy/&
&!-- 自动扫描含有@Service将其注入为bean --&
&context:component-scan base-package="com.ouc.service"/&
&context:component-scan base-package="com.ouc.service.impl"/&
&import resource="spring-mvc.xml"/&
&import resource="spring-mybatis.xml"/&
&context:annotation-config /&
&!--引入配置属性文件
&context:property-placeholder location="classpath:jdbc.properties"/&
10. Spring-mybatis配置:Spring-mybatis.Xml
&pre name="code" class="html"&&?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"&
&!-- JNDI方式配置数据源 --&
&!-- &bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"& &property name="jndiName" value="${jndiName}"&&/property& &/bean& --&
&!-- ========================================配置数据源========================================= --&
&!-- 配置数据源,使用的是alibaba的Druid(德鲁伊)数据源 --&
&bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"&
&property name="driverClassName" value="${jdbc.driverClassName}" /&
&property name="url" value="${jdbc.url}" /&
&property name="username" value="${jdbc.username}" /&
&property name="password" value="${jdbc.password}" /&
&!-- 初始化连接大小 --&
&property name="initialSize" value="${jdbc.initialSize}" /&
&!-- 连接池最大使用连接数量 --&
&property name="maxActive" value="${jdbc.maxActive}" /&
&!-- 连接池最小空闲 --&
&property name="minIdle" value="${jdbc.minIdle}" /&
&!-- 获取连接最大等待时间 --&
&property name="maxWait" value="${jdbc.maxWait}" /&
&property name="validationQuery" value="${jdbc.validationQuery}" /&
&property name="testOnBorrow" value="${jdbc.testOnBorrow}" /&
&property name="testOnReturn" value="${jdbc.testOnReturn}" /&
&property name="testWhileIdle" value="${jdbc.testWhileIdle}" /&
&!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --&
&property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /&
&!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --&
&property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /&
&!-- 打开removeAbandoned功能 --&
&property name="removeAbandoned" value="${jdbc.removeAbandoned}" /&
&!-- 1800秒,也就是30分钟 --&
&property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" /&
&!-- 关闭abanded连接时输出错误日志 --&
&property name="logAbandoned" value="${jdbc.logAbandoned}" /&
&!-- 监控数据库 --&
&property name="filters" value="${jdbc.filters}" /&
&!-- ========================================分隔线============================ --&
&!-- =================================针对myBatis的配置项======================= --&
&!-- 配置 sqlSessionFactory--&
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&!-- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL映射文件 --&
&property name="dataSource" ref="dataSource" /&
&!-- 自动扫描com/ouc/mapping/目录下的所有SQL映射的xml文件, 省掉Configuration.xml里的手工配置
value="classpath:com/ouc/mapping/*.xml"指的是classpath(类路径)下com.ouc.mapping包中的所有xml文件
UserMapper.xml位于com.ouc.mapping包下,这样UserMapper.xml就可以被自动扫描
&property name="mapperLocations" value="classpath:com/ouc/mapping/*.xml" /&
&property name="typeAliasesPackage" value="com.ouc.model" /&
&property name="configLocation" value="classpath:mybatis-configure.xml" /&
&!-- 配置 扫描器--&
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&!-- 扫描com.ouc.dao这个包以及它的子包下的所有映射接口类 --&
&property name="basePackage" value="com.ouc.dao" /&
&property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /&
&!-- ========================================分隔线============================ --&
&!-- 配置Spring的事务管理 --&
&bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dataSource" /&
&!-- 注解方式配置事物 --&
&!-- &tx:annotation-driven transaction-manager="transactionManager" /& --&
&!-- 拦截器方式配置事物 --&
&tx:advice id="transactionAdvice" transaction-manager="transactionManager"&
&tx:attributes&
&tx:method name="add*" propagation="REQUIRED" /&
&tx:method name="append*" propagation="REQUIRED" /&
&tx:method name="insert*" propagation="REQUIRED" /&
&tx:method name="save*" propagation="REQUIRED" /&
&tx:method name="update*" propagation="REQUIRED" /&
&tx:method name="modify*" propagation="REQUIRED" /&
&tx:method name="edit*" propagation="REQUIRED" /&
&tx:method name="delete*" propagation="REQUIRED" /&
&tx:method name="remove*" propagation="REQUIRED" /&
&tx:method name="repair" propagation="REQUIRED" /&
&tx:method name="delAndRepair" propagation="REQUIRED" /&
&tx:method name="get*" propagation="SUPPORTS" /&
&tx:method name="find*" propagation="SUPPORTS" /&
&tx:method name="load*" propagation="SUPPORTS" /&
&tx:method name="search*" propagation="SUPPORTS" /&
&tx:method name="datagrid*" propagation="SUPPORTS" /&
&tx:method name="*" propagation="SUPPORTS" /&
&:attributes&
&aop:config&
&aop:pointcut id="transactionPointcut" expression="execution(* com.ouc.service..*Impl.*(..))" /&
&aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" /&
&/aop:config&
&!-- 配置druid监控spring jdbc --&
&bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor"&
&bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype"&
&property name="patterns"&
&value&com.ouc.service.*&alue&
&/property&
&aop:config&
&aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" /&
&/aop:config&
11.Spring-druid配置:Spring-druid.Xml
&pre name="code" class="html"&&?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:cache="http://www.springframework.org/schema/cache"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"&
&!-- 配置druid监控spring jdbc --&
&bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor" /&
&bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype"&
&property name="patterns"&
&value&com.ouc.service.*&/value&
&/property&
&aop:config&
&aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" /&
&/aop:config&
12.Spring-dubbo配置:Spring-dubbo.Xml (备注:提供者的配置)
&?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: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://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd"&
&!-- 提供方应用信息,用于计算依赖关系 --&
&dubbo:application name="U-LabProvider" /&
&!-- 使用multicast广播注册中心暴露服务地址 &dubbo:registry address="multicast://224.5.6.7:1234" /& --&
&dubbo:registry address="zookeeper://127.0.0.1:2181"&&/dubbo:registry&
&!-- 用dubbo协议在20880端口暴露服务 --&
&dubbo:protocol name="dubbo" port="20880" /&
&!-- 声明需要暴露的服务接口 --&
&dubbo:service interface="com.ouc.service.BranchCompanyService" ref="braComService"/&
13. jdbc.properties配置:jdbc.properties
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc\:oracle\:thin\:@222.195.151.239\:1521\:orcl
jdbc.username=ULab
jdbc.password=ouccs
jdbc.initialSize=2
jdbc.maxActive=300
jdbc.minIdle=0
jdbc.maxWait=60000
jdbc.validationQuery=SELECT 1 FROM DUAL
jdbc.testOnBorrow=false
jdbc.testOnReturn=false
jdbc.testWhileIdle=true
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.minEvictableIdleTimeMillis=
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=1800
jdbc.logAbandoned=true
jdbc.poolPreparedStatements=true
jdbc.maxOpenPreparedStatements=200
jdbc.filters=stat
jdbc.driverClassName:数据库驱动程序名称
jdbc.url:连接字符串
14. log4j.properties配置:log4j.properties,该文件无需修改,直接拷贝即可。
log4j.rootLogger=INFO,stdout,logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=/U-Lab/local/log/maven
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %-5p [%t] %c.%M(%L) - %m%n
log4j.logger.com.ibatis=debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout
log4j.logger.jdbc.sqlonly=OFF
log4j.logger.jdbc.sqltiming=OFF
log4j.logger.jdbc.audit=OFF
log4j.logger.jdbc.resultset=OFF
log4j.logger.jdbc.connection=OFF
15.新建src/main/java资源文件,新建src/main/resources资源文件,新建src/test/java资源文件,新建src/test/resources资源文件.
在src/main/java资源文件下新建如下包:
com.ouc.model
com.ouc.service
com.ouc.service.impl
com.ouc.dao
com.ouc.mapping
com.ouc.controller
com.ouc.test
com.ouc.main
类的示例:例子中只用到与BranchCompany有关的类,其他类不需新建,我新建是项目所需。
16. 例子中只用到与BranchCompany有关的类
(1)model数据实体类:BranchCompany
package com.ouc.
import java.io.S
/* ----模块商分公司------------
public class BranchCompany implements Serializable {
private static final long serialVersionUID = 1L;
//分公司ID
//分公司名称
private String telN
//联系方式
private String moduleNo;
//模块商编号
private Integer labId;
//实验室ID
public Integer getId() {
public void setId(Integer id) {
public String getName() {
public void setName(String name) {
this.name =
public String getAddress() {
public void setAddress(String address) {
this.address =
public String getTelNumber() {
return telN
public void setTelNumber(String telNumber) {
this.telNumber = telN
public String getModuleNo() {
return moduleNo;
public void setModuleNo(String moduleNo) {
this.moduleNo = moduleNo;
public Integer getLabId() {
return labId;
public void setLabId(Integer labId) {
this.labId = labId;
public String getRemark() {
public void setRemark(String remark) {
this.remark =
(2)服务接口类:BranchCompanyService
package com.ouc.
importjava.util.L
importcom.ouc.model.BranchC
public interface BranchCompanyService {
public List&BranchCompany& getBranchCompanys();
public int saveBranchCompany(BranchCompanybranchCompany);
(3)服务接口实现类:BranchCompanySerImpl
package com.ouc.service.
importcom.ouc.dao.BranchCompanyM
import com.ouc.model.BranchC
importcom.ouc.service.BranchCompanyS
importjava.util.L
importjavax.annotation.R
importorg.springframework.stereotype.S
@Service("braComService")
/* 此处注解在Spring-Dubbo.xml文件中用到:
&!--声明需要暴露的服务接口 --&
&dubbo:serviceinterface="com.ouc.service.BranchCompanyService"ref="braComService"/&
public class BranchCompanySerImplimplements BranchCompanyService{
BranchCompanyMapperbranchCompanyM
public List&BranchCompany& getBranchCompanys()
return branchCompanyMapper.getBraComsFromDataBase();
public int saveBranchCompany(BranchCompanybranchCompany)
return branchCompanyMapper.insertBranchCompany(branchCompany);
(4)数据库操作接口dao类:BranchCompanyMapper
package com.ouc.
importjava.util.L
importcom.ouc.model.BranchC
public interface BranchCompanyMapper {
int insertBranchCompany(BranchCompanybranchCompany);
public List&BranchCompany& getBraComsFromDataBase();
(5)数据库SQL语句XML:BranchCompanyMapper.Xml
&?xmlversion="1.0"encoding="UTF-8"?&
&!DOCTYPEmapperPUBLIC "-//mybatis.org//DTDMapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"&
&mappernamespace="com.ouc.dao.BranchCompanyMapper"&
&resultMapid="BraComResultMap" type="com.ouc.model.BranchCompany"&
&id column="id"property="id" jdbcType="INTEGER" /&
&result column="name"property="name" jdbcType="VARCHAR" /&
&result column="address"property="address" jdbcType="VARCHAR" /&
&result column="telNumber"property="telNumber" jdbcType="VARCHAR" /&
&result column="moduleNo"property="moduleNo" jdbcType="VARCHAR" /&
&result column="labId"property="labId" jdbcType="INTEGER" /&
&result column="remark"property="remark" jdbcType="VARCHAR" /&
&/resultMap&
&cachetype="org.mybatis.caches.ehcache.LoggingEhcache"&
&propertyname="timeToIdleSeconds"value="3600"/&
&propertyname="timeToLiveSeconds"value="3600"/&
&propertyname="maxEntriesLocalHeap"value="1000"/&
&propertyname="maxEntriesLocalDisk"value=""/&
&propertyname="memoryStoreEvictionPolicy"value="LRU"/&
&insertid="insertBranchCompany"parameterType="com.ouc.model.BranchCompany"useGeneratedKeys="true"keyProperty="id"flushCache="true"&
insert into BranchCompany (
id,name,address,telNumber,moduleNo,labId,remark)
#{address},
#{telNumber},
#{moduleNo},
&selectid="getBraComsFromDataBase"resultType="com.ouc.model.BranchCompany"&
select * from BranchCompany
(6)运行控制类:BranchCompanyController
package com.ouc.
importjavax.annotation.R
importjava.util.L
importorg.springframework.stereotype.C
importorg.springframework.web.bind.annotation.RequestM
importorg.springframework.web.bind.annotation.ResponseB
importcom.ouc.service.BranchCompanyS
importcom.ouc.model.BranchC
@Controller
@RequestMapping("/BranchCompanyController")
public classBranchCompanyController {
private BranchCompanyService braComS
@RequestMapping(value ="/BraCom_view")
public @ResponseBody ObjectGetBranchCompany(){
List&BranchCompany&braComs=braComService.getBranchCompanys();
returnbraC
17.测试类:Provider
package com.ouc.
importorg.springframework.context.support.ClassPathXmlApplicationC
importcom.ouc.model.*;
import com.ouc.service.*;
public classProvider {
private static BranchCompanyServicebraComS
public static void main(String[] args) throwsException {
ClassPathXmlApplicationContext cxt = newClassPathXmlApplicationContext(
newString[]{"classpath:spring.xml","classpath:spring-mybatis.xml","classpath:spring-dubbo.xml"},true);
cxt.start();
/*braComService =(BranchCompanyService)cxt.getBean("braComService");
BranchCompany braCom = newBranchCompany();
braCom.setName("Hai");
braCom.setId(1);
braCom.setLabId(2);
braCom.setAddress("SSdsg");
braCom.setModuleNo("SSS2000");
braCom.setTelNumber("125604");
braCom.setRemark(" ");
braComService.saveBranchCompany(braCom);
运行 D:\Java\zookeeper-3.4.6\bin下的zkServer
zookeeper-3.4.6 ,apache-maven-3.3.3 ,apache-tomcat-7.0.63三个软件需要配置,请自行网上百度。
安装配置dubbo-admin-2.5.4
示例路径如下:
D:\Java\apache-tomcat-7.0.63\webapps\dubbo-admin-2.5.4
运行Provider,浏览器输入::8090/ dubbo-admin-2.5.4查看服务发布结果。
我修改了tomcat的端口,未修改的上面端口为8080.
Maven编译时主要是包的导入问题,如果无法在线下载包,请手动添加到对应路径。
相关学习网址:
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
没有更多推荐了,

我要回帖

更多关于 大数据 监控 个人 的文章

 

随机推荐