取决于什么wwWee141com谁知道,游戏登入时ee141显示连接服务器失效

404 Not Found
404 Not Found
The requested URL was not found on this server.
您要找的内容已被删除jafee141的百度个人主页
LOADING...16.4k 人阅读
标签:至少1个,最多5个
杂七杂的杂
作为程序员,开发工程中,一套利于测试或者监控的工具很重要,mybatis默认没有提供log4j的打印sql语句的配置。
这对于开发rest服务,提供接口的开发者而言,是在很不好做,再加上mybatis很灵活,使用脚本动态生成sql语句,因此,有时候真不知道运行的sql是不是我们所期望的,过滤的条件是否起作用。
所幸,德鲁伊监控平台是个不错的选择,在性能方面druid连接池也比spring原生的要好,因此也是很多企业开发的首选数据源配置。
在引言阶段,我们先看看目前我配置的结果是否是你想要的,如果不是你所期望的,就别浪费时间往下面看,毕竟大家都时间有限,没必要花费时间看一些对自己没用的东西。
控制台打印的日志,慎重的告诉你,这种大量打印信息不能用于生产坏境,生产环境中这些信息写到tomcat的日志文件中了{tomcat的目录}/logs/catalina.out,如果访问量很大的时候,一天产生几个GB的日志不是问题--慎用。
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Connection: {conn-10001} pool-connect
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} created.
select * from t_login_register_st
WHERE 1 = 1
and ltime &= ?
order by ltime desc limit ?, ?
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} Parameters : [, 0, 15]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} Types : [BIGINT, INTEGER, INTEGER]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} executed. 6.503031 millis.
select * from t_login_register_st
WHERE 1 = 1
and ltime &= ?
order by ltime desc limit ?, ?
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} open
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Header: [ltime, login_register, register, register_sent_code, register_edit, register_edit_publish, register_edit_succ, login, foget_passwd, foget_passwd_sent_code, login_succ, login_fail, login_succ_normal, login_succ_qq, login_succ_wx, login_succ_wb, login_succ_foget_passwd, login_fail_normal, login_fail_qq, login_fail_wx, login_fail_wb, login_fail_foget_passwd]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 604, 216, 117, 113, 109, 106, 931, 59, 9, 790, 150, 279, 148, 254, 93, 32, 117, 9, 26, 2, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 639, 241, 132, 125, 121, 114, 998, 40, 11, 844, 130, 312, 168, 268, 87, 24, 107, 5, 18, 2, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 674, 322, 175, 170, 160, 155, , 923, 143, 310, 164, 339, 96, 26, 114, 6, 25, 3, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 794, 371, 187, 182, 168, 162, , , 307, 257, 455, 120, 34, 137, 11, 25, 6, 3]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 670, 295, 169, 162, 154, 118, , 977, 229, 338, 185, 320, 120, 33, 135, 33, 54, 25, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 709, 308, 172, 163, 159, 120, , , 383, 196, 349, 122, 30, 148, 54, 78, 30, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 666, 285, 153, 148, 141, 139, , 970, 159, 328, 188, 294, 141, 38, 132, 11, 14, 3, 0]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 586, 254, 146, 141, 136, 132, , 884, 132, 307, 149, 295, 124, 31, 108, 3, 18, 3, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 548, 209, 110, 106, 106, 103, 910, 68, 13, 779, 135, 306, 123, 251, 87, 33, 120, 4, 14, 1, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 520, 197, 104, 100, 99, 94, 963, 46, 12, 827, 132, 289, 149, 261, 110, 26, 110, 4, 13, 5, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 627, 237, 142, 134, 129, 122, , 999, 173, 348, 182, 304, 137, 45, 137, 11, 22, 3, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 678, 280, 150, 144, 133, 128, , , 354, 187, 342, 126, 28, 153, 14, 16, 6, 1]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 564, 230, 138, 135, 131, 126, , 901, 122, 337, 161, 274, 116, 27, 102, 3, 15, 3, 4]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 552, 212, 119, 112, 108, 106, 986, 46, 6, 833, 134, 332, 146, 254, 92, 23, 122, 6, 5, 1, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} Result: [, 665, 234, 130, 124, 125, 121, , 979, 159, 409, 143, 303, 116, 33, 145, 4, 6, 3, 2]
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.ResultSet: {conn-10001, pstmt-20025, rs-50025} closed
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Statement: {conn-10001, pstmt-20025} closed
[03/06/16 11:56:03:003 CST] http-nio-8080-exec-2 DEBUG sql.Connection: {conn-10001} pool-recycle
德鲁伊监控平台的视图:
图一 SQL监控
图二 URI监控
重要的话,重复一遍,如果目前所写对现在的你没用,就算以后可能会用到,你也没必要细看下面所述,到此你已经花费了很多时间了,时间是金钱,伤不起。
如果你坚持要看到这里,请收藏吧!
spring加载properties键值对
其实与spring的配置基本没多大关系,但是因为其加载了数据库的基本信息,所以两个合在一起看一下。
spring-applicationContext.xml的部分配置:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
&task:annotation-driven/&
&context:annotation-config/&
&context:component-scan base-package="cn.test.*"/&
&bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&
&property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/&
&property name="ignoreResourceNotFound" value="true"/&
&property name="locations"&
&!-- 越靠后越有效,取到最后一个有效的未知 --&
&value&classpath:conf/properties/*.properties&/value&
&/property&
properties文件的部分配置:
mysql.host=127.0.0.1 #你的数据库主机
mysql.port=3306
mysql.database=test # 你的数据库
mysql.user=test # 数据库登录用户
mysql.pwd=123456 # 数据库登录密码
mybatis.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"
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-2.5.xsd"&
&!-- 开启事务注解驱动,管理事务--&
&tx:annotation-driven transaction-manager="txManager"/&
&!-- 在dao层可以使用@Trantional注解管理事务,spring会将注解了事务的类中的所有操作视为事务来管理 --&
&bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="datasource"/&
&!-- ******前面的这些都是今天的重点,下面是重点的开始,我们配置的数据源是德鲁伊druid数据源,这个才是重点****** --&
&!-- ========================================================--&
&!-- 使用druid作为数据源连接池--&
&bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close" &
&!-- 数据库的配置,host:主机名,port:端口,database:数据库 --&
&property name="url" value="jdbc:mysql://${mysql.host}:${mysql.port}/${mysql.database}?characterEncoding=utf8" /&
&!-- 连接数据的用户名--&
&property name="username" value="${mysql.user}" /&
&!-- 连接数据库的密码--&
&property name="password" value="${mysql.pwd}" /&
&!-- 配置初始化大小、最小、最大 --&
&property name="initialSize" value="1" /&
&property name="minIdle" value="1" /&
&property name="maxActive" value="20" /&
&!-- 配置获取连接等待超时的时间 --&
&property name="maxWait" value="30000" /&
&!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --&
&property name="timeBetweenEvictionRunsMillis" value="60000" /&
&!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --&
&property name="minEvictableIdleTimeMillis" value="300000" /&
&property name="testWhileIdle" value="true" /&
&!-- 这里建议配置为TRUE,防止取到的连接不可用 --&
&property name="testOnBorrow" value="true" /&
&property name="testOnReturn" value="false" /&
&!-- 打开PSCache,并且指定每个连接上PSCache的大小 --&
&property name="poolPreparedStatements" value="false" /&
&!-- 验证连接有效与否的SQL,不同的数据配置不同 --&
&property name="validationQuery" value="select 1 " /&
&!-- ******重要的配置:监控统计拦截的filters,日志记录 *start* ******--&
&!-- 并在filters属性中配置了log4j,ref中的bean是下面拦截器的配置 --&
&!-- proxyFilters和filters是组合关系,前者是根据bean配置,后者根据别名配置的--&
&!-- stat是statfilter的别名,log4j是logFilter的别名--&
&!-- 监控统计拦截的filters,日志记录,这里开启了stat,wall(sql翻过墙过滤监控),log4j(log4j的监控)配置 --&
&property name="proxyFilters"&
&ref bean="statfilter" /&
&ref bean="logFilter" /&
&/property&
&property name="filters" value="wall" /&
&!-- 慢SQL记录 *start* --&
&bean id="statfilter" class="com.alibaba.druid.filter.stat.StatFilter"&
&!-- 开启合并sql --&
&property name="mergeSql" value="true" /&
&!-- 开启慢查询语句,1秒 --&
&property name="slowSqlMillis" value="1000" /&
&property name="logSlowSql" value="true" /&
&bean id="logFilter" class="com.alibaba.druid.filter.logging.Log4jFilter"&
&!-- &property name="resultSetLogEnabled" value="false" /& --&
&!-- &property name="statementExecutableSqlLogEnable" value="true" /& --&
&!-- 慢SQL记录
&!-- ========================================================--&
&!-- 事务增强,这里用的是spring提供的特性--&
&tx:advice id="advice" transaction-manager="transactionManager"&
&tx:attributes&
&tx:method name="select*" read-only="true"/&
&tx:method name="find*" read-only="true"/&
&tx:method name="get*" read-only="true"/&
&tx:method name="has*" read-only="true"/&
&tx:method name="count*" read-only="true"/&
&tx:method name="search*" read-only="true"/&
&/tx:attributes&
&/tx:advice&
&bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource"&
&ref local="datasource"/&
&/property&
&!-- Session Factory --&
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&property name="dataSource" ref="datasource"/&
&!-- 下面configLocation这一句是myabtis的其它配置,比如字段值为null的时候,该字段就不返回了,在实际应用中,如果没有其它配置,可以删掉了--&
&property name="configLocation" value="classpath:META-INF/spring/configuration.xml"/&
&!--&property name="mapperLocations" value="classpath:mapper/*mapper.xml"/&--&
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"&&/property&
&property name="basePackage" value="cn.test.web.mapper"/&
上面的配置中,使用&!-- ====== --&包裹的部分时今天配置的重点,其它的配置时开发中的基本配置,也就是说基本的必须配置,不配置不能使用到spring提供的一些特性,当然数据源是必须的配置,但是可以选择spring的数据源连接,不一定是德鲁伊的数据源连接池。
对于配种中看到的&!-- ****** --&
注释的部分更是本文讲的重点,也就是要让程序在控制台打印mybatis的sql语句,这些配置很重要。
&property name="proxyFilters"&
&ref bean="statfilter" /&
&ref bean="logFilter" /&
&/property&
这里是以代理模式过滤stat和log的,所以用的两个bean分别是stat监控,log日志记录监控。
&property name="filters" value="stat,wall,log4j" /&
这句的配置才是在控制台打印sql的重点,建议平时开发中,打开该配置,上线的时候关闭掉,原因就是上面提到的,写日志很占空间。
关于druid数据源配置属性的列表,请查看后面:
web.xml配置
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:META-INF/spring/*.xml&/param-value&
&/context-param&
&!-- 初始化参数,引入log4j配置--&
&context-param&
&param-name&log4jConfigLocation&/param-name&
&param-value&WEB-INF/classes/log4j.xml&/param-value&
&/context-param&
&context-param&
&param-name&log4jRefreshInterval&/param-name&
&param-value&60000&/param-value&
&/context-param&
&!-- 开启德鲁伊stat过滤,WebStatFilter用于采集web-jdbc关联监控的数据,注意放在其它的过滤器以及dispatcher前面,很重哦 --&
&filter-name&DruidWebStatFilter&/filter-name&
&filter-class&com.alibaba.druid.support.http.WebStatFilter&/filter-class&
&init-param&
&param-name&exclusions&/param-name&
&param-value&/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*&/param-value&
&/init-param&
&!-- 下面的所有的init-param可以不用配置,使用默认值即可,如果你有处女座情结,删除即可 --&
&!-- 缺省sessionStatMaxCount是1000个。你可以按需要进行配置 --&
&init-param&
&param-name&sessionStatMaxCount&/param-name&
&param-value&1000&/param-value&
&/init-param&
&!-- druid 0.2.7版本开始支持profile,配置profileEnable能够监控单个url调用的sql列表 --&
&init-param&
&param-name&profileEnable&/param-name&
&param-value&true&/param-value&
&/init-param&
&init-param&
&param-name&principalSessionName&/param-name&
&param-value&users.username&/param-value&
&/init-param& --&
&!-- 你可以关闭session统计功能 --&
&init-param&
&param-name&sessionStatEnable&/param-name&
&param-value&true&/param-value&
&/init-param& --&
&filter-mapping&
&filter-name&DruidWebStatFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&!--this listener must be defined before the spring listener--&
&listener&
&listener-class&com.alibaba.dubbo.remoting.http.servlet.BootstrapListener&/listener-class&
&/listener&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&!-- log4j监听器 --&
&listener&
&listener-class&org.springframework.web.util.Log4jConfigListener&/listener-class&
&/listener&
&servlet-name&dispatcher&/servlet-name&
&servlet-class&com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet&/servlet-class&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&dispatcher&/servlet-name&
&url-pattern&/*&/url-pattern&
&/servlet-mapping&
&!-- 德鲁伊监控平台监控器 --&
&servlet-name&DruidStatView&/servlet-name&
&servlet-class&com.alibaba.druid.support.http.StatViewServlet&/servlet-class&
&init-param&
&!-- 允许清空统计数据 --&
&param-name&resetEnable&/param-name&
&param-value&true&/param-value&
&/init-param&
&init-param&
&!-- 用户名 --&
&param-name&loginUsername&/param-name&
&param-value&druid&/param-value&
&/init-param&
&init-param&
&!-- 密码 --&
&param-name&loginPassword&/param-name&
&param-value&druid&/param-value&
&/init-param&
&/servlet&
&servlet-mapping&
&servlet-name&DruidStatView&/servlet-name&
&url-pattern&/druid/*&/url-pattern&
&/servlet-mapping&
&/web-app&
上面加了注解的配置,是本文配置的重点,其它配置不在这里讲解。
&!-- 开启德鲁伊stat过滤,WebStatFilter用于采集web-jdbc关联监控的数据--&
&filter-name&DruidWebStatFilter&/filter-name&
&filter-class&com.alibaba.druid.support.http.WebStatFilter&/filter-class&
&init-param&
&param-name&exclusions&/param-name&
&param-value&/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*&/param-value&
&/init-param&
&filter-mapping&
&filter-name&DruidWebStatFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
druid对除了静态资源外底所有路由进行监控,该监控采集web-jdbc关联监控的数据。而前面对数据源监控的配置,大部分是sql监控。
&init-param&
&!-- 允许清空统计数据 --&
&param-name&resetEnable&/param-name&
&param-value&true&/param-value&
&/init-param&
&init-param&
&!-- 用户名 --&
&param-name&loginUsername&/param-name&
&param-value&druid&/param-value&
&/init-param&
&init-param&
&!-- 密码 --&
&param-name&loginPassword&/param-name&
&param-value&druid&/param-value&
&/init-param&
如果你不希望别人直接查看你的监控,请把查看权限配置加上。如果监控平台被一些不安分的家伙知道,网站面临攻击的可能性就很大,安全性不靠保障,所以建议配置账户信息。
过滤器中的配置,是用来定义我们的监控选项,在以上的监控配置中,上面这段xml代码配置了一个最简单的监控,并采用了大量的默认配置,如果你想使用更丰富的监控配置,可以在druid的github wiki上获取更多的选项,地址:
&!-- 德鲁伊监控平台监控器 --&
&servlet-name&DruidStatView&/servlet-name&
&servlet-class&com.alibaba.druid.support.http.StatViewServlet&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&DruidStatView&/servlet-name&
&url-pattern&/druid/*&/url-pattern&
&/servlet-mapping&
这个是德鲁伊监控平台提供的servlet web服务,启动服务器后,只需要在浏览器中输入:http://127.0.0.1:8080/druid/即可访问引言里面的几个图。
注意,路由根据自己的情况写,如果你直接在idea中配置的,且idea中没有配置context path的话,可以不用项目名。如果配置了,就用配置的名字,比如配置为test,则应该访问http://127.0.0.1:8080/test/druid/。
在eclipse中,需要跟项目名的。假如项目时test0,则应该是http://127.0.0.1:8080/test0/druid/。当然了,如果不是这样的话,聪明的你肯定会尝试几次其它形式的路由访问了。
当然还的注意端口号,我这里面默认用了8080,如果你是8090,就换吧。
重轴戏:log4j.xml配置
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"&
&log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false"&
&!-- 注意这里的大小写,配置文件对大小写敏感,主要是后面对该name的引用 --&
&appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"&
&layout class="org.apache.log4j.PatternLayout"&
&param name="ConversionPattern"
value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n"/&
&/appender&
&appender name="rollingFile" class="org.apache.log4j.DailyRollingFileAppender"&
&param name="File" value="logs/server.log"/&
&param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/&
&layout class="org.apache.log4j.PatternLayout"&
&param name="ConversionPattern"
value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n"/&
&/appender&
&!-- 配置mybatis打印sql语句 --&
&!-- 这是网上看别人说的,我尝试了,加与不加都没关系,有兴趣自己去尝试
&category name="org.springframework" additivity="false"&
&priority value="DEBUG"/&
&appender-ref ref="CONSOLE"/&
&/category&
&category name="org.springframework.orm.ibatis3" additivity="false"&
&priority value="DEBUG"/&
&appender-ref ref="CONSOLE"/&
&/category&
&category name="org.apache.ibatis" additivity="false"&
&priority value="DEBUG"/&
&appender-ref ref="CONSOLE"/&
&/category&
&category name="java.sql" additivity="false"&
&priority value="DEBUG"/&
&appender-ref ref="CONSOLE"/&
&/category&--&
&!-- ++++++++++++++++++++++++ --&
&!-- druid数据源配置打印日志 start--&
&logger name="druid.sql"&
&level value="DEBUG"/&
&logger name="druid.sql.DataSource"&
&level value="DEBUG"/&
&logger name="druid.sql.Connection"&
&level value="DEBUG"/&
&logger name="druid.sql.Statement"&
&level value="DEBUG"/&
&logger name="druid.sql.ResultSet"&
&level value="DEBUG"/&
&!-- druid数据源配置打印日志 end --&
&!-- ++++++++++++++++++++++++ --&
&!-- spring提供的数据源打印日志 --&
&logger name="com.springframework" additivity="true"&
&level value="DEBUG"/&
&logger name="com.ibatis" additivity="true"&
&level value="DEBUG"/&
&logger name="com.ibatis.common.jdbc.SimpleDataSource" additivity="true"&
&level value="DEBUG"/&
&logger name="com.ibatis.common.jdbc.ScriptRunner" additivity="true"&
&level value="DEBUG"/&
&logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" additivity="true"&
&level value="DEBUG"/&
&logger name="Java.sql.Connection" additivity="true"&
&level value="DEBUG"/&
&logger name="java.sql.Statement" additivity="true"&
&level value="DEBUG"/&
&logger name="java.sql.PreparedStatement" additivity="true"&
&level value="DEBUG"/&
&logger name="java.sql.ResultSet" additivity="true"&
&level value="DEBUG"/&
&level value="INFO"/&
&!-- 注意ref中的大小写,就是前面配置的appender的name --&
&appender-ref ref="CONSOLE"/&
&!--&appender-ref ref="rollingFile" /&--&
&/log4j:configuration&
上面的配置看上去很杂,但是有用的配置用了&!-- ++++++++++++++++++++++++--&包裹起来了,其它的配置都是看网上的配置,有些对配置根本没有,有些事spring数据源监控sql的配置,对于德鲁伊,就包裹部分的足够了,说这句话,并不是让你放弃一些基本配置,基本配置永远不能缺少。
druid连接池配置属性列表详解
配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:”DataSource-” + System.identityHashCode(this)
连接数据库的url,不同数据库不一样。例如:mysql : jdbc:mysql://10.20.153.104:3306/druid2;oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
连接数据库的用户名
连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:
driverClassName
根据url自动识别
这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
initialSize
初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
最大连接池数量
已经不再使用,配置了也没效果
最小连接池数量
获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedStatements
是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。
maxOpenPreparedStatements
要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
validationQuery
用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
testOnBorrow
申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnReturn
归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testWhileIdle
建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。timeBetweenEvictionRunsMillis有两个含义:1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
numTestsPerEvictionRun
不再使用,一个DruidDataSource只支持一个EvictionRun
minEvictableIdleTimeMillis
connectionInitSqls
物理连接初始化的时候执行的sql
exceptionSorter
根据dbType自动识别
当数据库抛出一些不可恢复的异常时,抛弃连接
属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter: 日志用的filter:log4j;防御sql注入的filter:合并sql的filter:mergeStat
proxyFilters
类型是List&com.alibaba.druid.filter.Filter&,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系
前面说过,mybatis配置的时候,可以配置sqlSessionFactory的时候通过configLocation属性可以指定mybatis的一些额外配置。
这里分享一段数据库字段值为null时,不返回字段名,而我们希望的是不管值为什么,字段名都应该返回。配置如下:
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL MAP Config 3.1//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"&
&configuration&
&settings&
&setting name="callSettersOnNulls" value="true"/&
&setting name="logImpl" value="LOG4J" /&
&/settings&
&/configuration&
3 收藏&&|&&21
你可能感兴趣的文章
你可能感兴趣的文章
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 cloud.huawei com登入 的文章

 

随机推荐