druid版本是1.0.11, spring版本为2.5.6SEC03
spring.xml中的配置如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="driverClassName" value="${jdbc.driverClass}" /> <property name="filters" value="stat" /> <property name="maxActive" value="1000" /> <property name="initialSize" value="30" /> <property name="maxWait" value="60000" /> <property name="minIdle" value="30" /> <property name="timeBetweenLogStatsMillis" value="300000" /> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="poolPreparedStatements" value="true" /> <property name="maxOpenPreparedStatements" value="100" /> <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="removeAbandoned" value="true" /> <property name="removeAbandonedTimeout" value="1800" /> <property name="logAbandoned" value="true" /> </bean> <bean id="nativeJdbcExtractor" class="com.alibaba.druid.support.spring.DruidNativeJdbcExtractor" lazy-init="true" /> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> </bean>
跟了一下jdbcTemplate的源码.配置该属性之后statement由com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl这个对象变成了oracle.jdbc.driver.OraclePreparedStatementWrapper.可能是因为这里才进不了druid的Filter吧.
是不是还要添加配置才能有监控呀.请问怎样才能解决该问题?
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" lazy-init="true" />
把这一句替换就OK了。
######你需要配置StatFilter ,StatFilter 的别名是stat,这个别名映射配置信息保存在druid-xxx.jar!/META-INF/druid-filter.properties。 在spring中使用别名配置方式如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> ... ... <property name="filters" value="stat" /> </bean>
详情请查阅:
https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
######回复 @celul : 查到一个可能的问题http://blog.csdn.net/renfufei/article/details/44887371 希望对你有用###### @celul 好的,你也帮我扩展了问题,我在项目中,还真没配置过NativeJdbcExtractor属性######回复 @混元归一 : 行吧.因为之前用的c3p0,也配了org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor这个属性,现在切换到druid,所以也跟着改,怕出问题.刚试了一下oracle的clob类型查询没啥问题.######我修改了一下问题的描述 . 我之前已经加了该属性的.在jdbcTemplate中不配置nativeJdbcExtractor属性的时候能监控SQL,配置了就监控不了了.######回复 @celul : 一般情况下不需要 <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> 你注数掉就可以使用监控啦版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。