亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Quartz與Hibernate數據庫連接的結合

2019-11-18 12:37:50
字體:
來源:轉載
供稿:網友

   首先介紹一下我們的系統構架,采用webwork,sPRing,hibernate整合架構,現在引入Quartz框架,Quartz和 hibernate各自擁有的自己數據庫配置和連接池的配置,現在的任務是把兩者用同一套配置.
先談談Quartz,我用的版本是1.5.1,后面的版本我沒去看了,沒時間,接下來說的都以這個版本為準.Quartz雖然在提供一個 ConnectionProvider接口,提供給程序擴展,但是看它的StdSchedulerFactory實現類,要對它進行擴展還是一件比較麻煩一件事情,所以我就直接修改了StdSchedulerFactory類,以達到的我的需求.
接下來的問題是既然要結合,那么讓Quartz來提供連接池配置呢還是有Hibernate提供.研究了兩者的連接池方面的源代碼,發現 Hibernate的連接池設計遠遠好于Quartz,Quartz目前只提供一個連接池提供類PoolingConnectionProvider,而且使用的連接池是dbcp,這個連接池聽說問題多多,相反hibernate提供了更加靈活的配置,所以連接池由Hibernate提供.
    首先實現一個Quartz中ConnectionProvider子類HibernateConnectionProvider
public class HibernateConnectionProvider implements ConnectionProvider {
    private Connection con = null;
    protected static ThreadLocal hibernateHolder = new ThreadLocal();
    public Connection getConnection() throws SQLException {
        con = null;
        sessionFactoryImpl sessionFactory = null;
        sessionFactory = (SessionFactoryImpl) Global.getSessionFacotry();
        con = sessionFactory.getConnectionProvider().getConnection();
    return con;
}
public void shutdown() throws SQLException {
    // FIXME Auto-generated method stub
}
}
,然后修改StdSchedulerFactory,在不破壞其本來的邏輯和可配置性下進行了相應的修改.修改的是private Scheduler instantiate() throws SchedulerException方法,找到//Set up any DataSources段進行修改,代碼如下:
String[] dsNames = cfg.getPropertyGroups(PROP_DATASOURCE_PREFIX);
        for (int i = 0; i < dsNames.length; i++) {
            PropertiesParser pp = new PropertiesParser(cfg.getPropertyGroup(
                    PROP_DATASOURCE_PREFIX + "." + dsNames[i], true));

            String dsDriver = pp
                    .getStringProperty(PROP_DATASOURCE_DRIVER, null);
            String dsURL = pp.getStringProperty(PROP_DATASOURCE_URL, null);
            boolean dsAlwaysLookup = pp.getBooleanProperty(
                    PROP_DATASOURCE_JNDI_ALWAYS_LOOKUP, false);
            String dsUser = pp.getStringProperty(PROP_DATASOURCE_USER, "");
            String dsPass = pp.getStringProperty(PROP_DATASOURCE_PASSWord, "");
            int dsCnt = pp.getIntProperty(PROP_DATASOURCE_MAX_CONNECTIONS, 3);
            String providerClass = pp.getStringProperty(
                    PROP_DATASOURCE_PROVIDER_CLASS, null);
            String dsJndi = pp
                    .getStringProperty(PROP_DATASOURCE_JNDI_URL, null);
            String dsJndiInitial = pp.getStringProperty(
                    PROP_DATASOURCE_JNDI_INITIAL, null);
            String dsJndiprovider = pp.getStringProperty(
                    PROP_DATASOURCE_JNDI_PROVDER, null);
            String dsJndiPrincipal = pp.getStringProperty(
                    PROP_DATASOURCE_JNDI_PRINCIPAL, null);
            String dsJndiCredentials = pp.getStringProperty(
                    PROP_DATASOURCE_JNDI_CREDENTIALS, null);
            String dsValidation = pp.getStringProperty(
                    PROP_DATASOURCE_VALIDATION_QUERY, null);
            if (providerClass == null
                    providerClass.equals("")
                    providerClass
                            .equals("org.quartz.utils.PoolingConnectionProvider")) {
                if (dsDriver == null) {
                    initException = new SchedulerException(
                            "Driver not specified for DataSource: "
                                    + dsNames[i]);
                    throw initException;
                }
                if (dsURL == null) {
                    initException = new SchedulerException(
                            "DB URL not specified for DataSource: "
                                    + dsNames[i]);
                    throw initException;
                }
                try {
                    PoolingConnectionProvider cp = new PoolingConnectionProvider(
                            dsDriver, dsURL, dsUser, dsPass, dsCnt,
                            dsValidation);
                    dbMgr = DBConnectionManager.getInstance();
                    dbMgr.addConnectionProvider(dsNames[i], cp);
                } catch (SQLException sqle) {
                    initException = new SchedulerException(
                            "Could not initialize DataSource: " + dsNames[i],
                            sqle);
                    throw initException;
                }
            } else if (providerClass
                    .equals("org.quartz.utils.JNDIConnectionProvider")) {
                Properties props = null;
                if (null != dsJndiInitial null != dsJndiProvider
                        null != dsJndiPrincipal null != dsJndiCredentials) {
                    props = new Properties();
                    if (dsJndiInitial != null)
                        props.put(PROP_DATASOURCE_JNDI_INITIAL, dsJndiInitial);
                    if (dsJndiProvider != null)
                        props.put(PROP_DATASOURCE_JNDI_PROVDER, dsJndiProvider);
                    if (dsJndiPrincipal != null)
                        props.put(PROP_DATASOURCE_JNDI_PRINCIPAL,
                                dsJndiPrincipal);
                    if (dsJndiCredentials != null)
                        props.put(PROP_DATASOURCE_JNDI_CREDENTIALS,
                                dsJndiCredentials);
                }
                JNDIConnectionProvider cp = new JNDIConnectionProvider(dsJndi,
                        props, dsAlwaysLookup);
                dbMgr = DBConnectionManager.getInstance();
                dbMgr.addConnectionProvider(dsNames[i], cp);
            } else if (providerClass
                    .equals("org.quartz.utils.HibernateConnectionProvider")) {
                HibernateConnectionProvider cp = new HibernateConnectionProvider();
                dbMgr = DBConnectionManager.getInstance();
                dbMgr.addConnectionProvider(dsNames[i], cp);
            } else {
                initException = new SchedulerException(
                        "Provider_Class not Supported: " + providerClass);
                throw initException;
            }

        }
    最后就是修改配置文件quartz.properties,加入
#org.quartz.dataSource.myDS.provider_class = org.quartz.utils.JNDIConnectionProvider
#org.quartz.dataSource.myDS.provider_class = org.quartz.utils.PoolingConnectionProvider
org.quartz.dataSource.myDS.provider_class = org.quartz.utils.HibernateConnectionProvider加#的供參考.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜小视频| 久久久国产精品免费| 久久久久久久电影一区| 91精品久久久久久久久久久久久| 欧美黑人一级爽快片淫片高清| 97国产精品免费视频| 国产aⅴ夜夜欢一区二区三区| 热久久视久久精品18亚洲精品| 日韩国产中文字幕| 亚洲精品第一页| 中文字幕在线看视频国产欧美| 久久久久国色av免费观看性色| 91精品久久久久久久| 日韩久久精品成人| 97香蕉超级碰碰久久免费的优势| 亚洲精品小视频在线观看| 欧美性猛交xxxx乱大交蜜桃| 在线精品91av| 亚洲男人的天堂在线| 久久精品在线视频| 国产成人精品免费久久久久| 国产精欧美一区二区三区| 成人有码视频在线播放| 97久久伊人激情网| 国产精品久久久久免费a∨大胸| 欧美日韩一区免费| 国产一区视频在线| 亚洲免费av电影| 国产日韩精品视频| yw.139尤物在线精品视频| 亚洲综合大片69999| 久久99热精品这里久久精品| 97视频在线免费观看| 成人精品久久久| 国产精品wwww| 国产亚洲a∨片在线观看| 美女精品久久久| 91精品国产91久久久久| 国产精品视频xxxx| 乱亲女秽乱长久久久| 亚洲精品suv精品一区二区| 欧美亚洲第一页| 不卡av电影在线观看| 中文字幕亚洲无线码在线一区| 亚洲精品一区在线观看香蕉| 中文字幕最新精品| 国产69精品久久久久99| 国产精品视频永久免费播放| 欧美成人精品影院| 91麻豆国产语对白在线观看| 九九精品在线观看| 国产精品一香蕉国产线看观看| 欧美亚洲午夜视频在线观看| 少妇av一区二区三区| 日本在线精品视频| 国产精品久久一区主播| 日本久久久久久久久| 91在线高清免费观看| 国产精品香蕉在线观看| 欧美性极品xxxx娇小| 国产91亚洲精品| 久久成年人免费电影| 98精品在线视频| 久久91精品国产91久久久| 正在播放欧美视频| 欧美日韩亚洲视频| 国产精品久久久久久久美男| 日韩欧美在线国产| 夜夜嗨av一区二区三区四区| 欧美在线视频免费播放| 日本精品久久久久影院| 97视频在线免费观看| 亚洲激情视频在线播放| 精品无码久久久久久国产| 国产狼人综合免费视频| 日日狠狠久久偷偷四色综合免费| 97色在线观看| 成人情趣片在线观看免费| 在线看日韩欧美| 日韩在线中文视频| 亚洲免费人成在线视频观看| 国产亚洲精品久久久优势| 欧美精品在线观看| 久久成人av网站| 欧美国产日韩一区| 国产成人精品亚洲精品| 岛国视频午夜一区免费在线观看| 国产在线视频91| 国产啪精品视频| 精品亚洲男同gayvideo网站| 亚洲自拍偷拍色图| 国内精品在线一区| 中文字幕在线日韩| 丝袜亚洲另类欧美重口| 欧美电影免费观看大全| 国产精品av在线| 亚洲无限乱码一二三四麻| 久久伊人精品一区二区三区| 78m国产成人精品视频| 国产精品永久在线| 欧美精品成人在线| 亚洲第一av在线| 欧美一区二区影院| 成人一区二区电影| 6080yy精品一区二区三区| 一区二区亚洲精品国产| 亚洲三级免费看| 91精品国产综合久久男男| 日韩欧亚中文在线| 8090理伦午夜在线电影| 97视频在线免费观看| 亚洲男人7777| 欧美性猛交丰臀xxxxx网站| 亚洲精品国产精品自产a区红杏吧| 久久男人资源视频| 97精品在线观看| 欧美日本精品在线| 国产不卡av在线免费观看| 国产欧美一区二区三区在线看| 国产欧美精品一区二区三区-老狼| 亚洲区免费影片| 国产精品人人做人人爽| 大桥未久av一区二区三区| 亚洲精品suv精品一区二区| 美女精品久久久| 国产91免费看片| 国产日韩精品电影| 国产精品普通话| 成人国产精品一区二区| 亚洲国产天堂网精品网站| 日本亚洲精品在线观看| 日韩在线视频观看正片免费网站| 久久99精品视频一区97| 日韩av免费在线播放| 岛国av一区二区在线在线观看| 欧美日韩一区二区三区在线免费观看| 免费不卡欧美自拍视频| 欧美日韩亚洲成人| 国产精品高清免费在线观看| 欧美壮男野外gaytube| 91久久久久久久久久| 日韩av观看网址| 最好看的2019的中文字幕视频| 国产日韩欧美日韩大片| 成人免费网站在线看| 日韩中文字在线| 午夜精品国产精品大乳美女| 亚洲精品福利免费在线观看| 欧美亚洲成人xxx| 成人a级免费视频| 欧美有码在线视频| 欧美日韩国产中文精品字幕自在自线| 视频直播国产精品| 久久成人精品电影| 日本精品久久中文字幕佐佐木| 亚洲激情第一页| 国产一区深夜福利| 亚洲日本中文字幕| 日本精品久久电影| 影音先锋欧美在线资源| 在线视频一区二区| 北条麻妃在线一区二区| 成人激情在线播放| 亚洲欧美精品伊人久久|