zoukankan      html  css  js  c++  java
  • 技术杂记-改造具有监控功能的数据库连接池阿里Druid,支持simple-jndi,kettle

      kettle内置的jndi管理是simple-jndi,功能确实比较简单,我需要监控kettle性能,druid确实是很不错的选择,但没有提供对应的支持,我改进了druid源码,实现了simple-jndi的接口,就可以在simple-jndi/jdbc.properties中配置druid数据源了,通过druid可以得到很多监控数据。

      具体druid的使用请参考官方教程:https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5,相当详细。

      具体代码如下:

    /*
     * Copyright 1999-2101 Alibaba Group Holding Ltd.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package com.alibaba.druid.support.simplejndi;
    
    import java.sql.SQLException;
    import java.util.Properties;
    
    import org.osjava.sj.loader.convert.Converter;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.pool.DruidDataSourceFactory;
    import com.alibaba.druid.support.logging.Log;
    import com.alibaba.druid.support.logging.LogFactory;
    
    /**
     * 支持simple-jndi
     * <h1>配置示例:</h1>
     * <pre>
    pgDruidTest/converter=com.alibaba.druid.support.simplejndi.DruidDataSourceConverter
    pgDruidTest/type=javax.sql.DataSource
    pgDruidTest/driverClassName=org.postgresql.Driver
    pgDruidTest/url=jdbc:postgresql://127.0.0.1:5432/kettleRep
    pgDruidTest/username=postgres
    pgDruidTest/password=postgres
    pgDruidTest/maxActive=50
    pgDruidTest/minIdle=10
    pgDruidTest/initialSize=5
    pgDruidTest/validationQuery=SELECT 1
    pgDruidTest/maxWait=10000
    pgDruidTest/removeabandoned=true
    pgDruidTest/removeabandonedtimeout=60
    pgDruidTest/logabandoned=false
    pgDruidTest/filters=stat,config,log4j
    pgDruidTest/connectionProperties=druid.log.stmt.executableSql=true
       </pre>
     * date: 2016年1月31日 下午12:54:10 
     * @author jinjuma@yeah.net
     */
    public class DruidDataSourceConverter implements Converter {
    
        private final static Log LOG = LogFactory.getLog(DruidDataSourceConverter.class);
        /**
         * 
         * @see org.osjava.sj.loader.convert.Converter#convert(java.util.Properties, java.lang.String)
         */
        @Override
        public Object convert(Properties properties, String type) {
            try {
                DruidDataSource dataSource = new DruidDataSource();
                DruidDataSourceFactory.config(dataSource, properties);
                return dataSource;
            } catch (SQLException e) {
                LOG.error("properties:"+properties, e);
            }
            return null;
        }
    
    }

      我已将以上改进pull requests到官方了,并已经合并,官方新版应该直接支持作为kettle的数据源配置了。

  • 相关阅读:
    使用Vue初始化项目的时候,一直download template的解决方案
    移动端复选框和单选框选中样式不能正常显示
    PC端360浏览器如何打开手机模式
    我在项目中是这样配置Vue的
    怎么取消微信pc端“保持微信窗口在最前面”设置?
    5个 Vuex 插件,给你的下个VueJS项目
    Vue+Element前端导入导出Excel
    前端快来!最火的 Vue.js 开源项目出炉
    1月12日学习日志
    1月9日学习日志
  • 原文地址:https://www.cnblogs.com/majinju/p/5173138.html
Copyright © 2011-2022 走看看