`
dys
  • 浏览: 295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

jboss 数据源类图

    博客分类:
  • java
阅读更多

[Jboss数据源一]初始化
内容提示:设置和初始化框架2.获取数据库连接的入口类WrapperDataSource,其实现了DataSource接口3.ManagedConnectionFactory接口用来获取真实连接和创建WrapperDataSource4.LocalManagedConnectionFactory负责从driver获取连接,driver层面的参数都在这里维护5.JBossManagedConnectionPool维护着连接池必须的...

先来看看jboss数据源的整体类图。





1.入口类LocalTxDataSource,负责对外参数设置和初始化框架

2.获取数据库连接的入口类WrapperDataSource,其实现了DataSource接口

3.ManagedConnectionFactory接口用来获取真实连接和创建WrapperDataSource

4.LocalManagedConnectionFactory负责从driver获取连接,driver层面的参数都在这里维护

5.JBossManagedConnectionPool维护着连接池必须的参数,管理着连接池的状态

6.ManagedConnectionPool提供了获取和归还连接的功能



接下来看一下jboss数据源的初始化过程,主要关注一个问题:数据源连接池如何从配置的参数启动?

入口代理类为LocalTxDataSource,一般使用方式如下



LocalTxDataSource localTxDataSource = new LocalTxDataSource();
localTxDataSource.setName(dataSourceDO.getDsName());
localTxDataSource.setBackgroundValidation(dataSourceDO.isBackgroundValidation());
localTxDataSource.setBackGroundValidationMinutes(dataSourceDO
    .getBackgroundValidationMinutes());
localTxDataSource.setBlockingTimeoutMillis(dataSourceDO.getBlockingTimeoutMillis());
localTxDataSource.setCheckValidConnectionSQL(dataSourceDO.getCheckValidConnectionSQL());
localTxDataSource.setConnectionProperties(dataSourceDO.getConnectionProperties());
localTxDataSource.setConnectionURL(dataSourceDO.getConnectionURL());
localTxDataSource.setDriverClass(dataSourceDO.getDriverClass());
localTxDataSource.setExceptionSorterClassName(dataSourceDO.getExceptionSorterClassName());
localTxDataSource.setIdleTimeoutMinutes(dataSourceDO.getIdleTimeoutMinutes());
localTxDataSource.setMaxSize(dataSourceDO.getMaxPoolSize());
localTxDataSource.setMinSize(dataSourceDO.getMinPoolSize());
localTxDataSource.setNewConnectionSQL(dataSourceDO.getNewConnectionSQL());
localTxDataSource.setNoTxSeparatePools(dataSourceDO.isNoTxSeparatePools());
localTxDataSource.setPassword(dataSourceDO.getPassWord());
localTxDataSource.setEncPassword(dataSourceDO.getEncPassword());
localTxDataSource.setPrefill(dataSourceDO.isPrefill());
localTxDataSource.setPreparedStatementCacheSize(dataSourceDO
    .getPreparedStatementCacheSize());
localTxDataSource.setQueryTimeout(dataSourceDO.getQueryTimeout());
localTxDataSource.setSharePreparedStatements(dataSourceDO.isSharePreparedStatements());
localTxDataSource.setTrackStatements(dataSourceDO.getTrackStatements());
localTxDataSource.setTransactionIsolation(dataSourceDO.getTransactionIsolation());
localTxDataSource.setTxQueryTimeout(dataSourceDO.isTxQueryTimeout());
localTxDataSource.setUseFastFail(dataSourceDO.isUseFastFail());
localTxDataSource.setUserName(dataSourceDO.getUserName());
localTxDataSource.setValidateOnMatch(dataSourceDO.isValidateOnMatch());
localTxDataSource.setValidConnectionCheckerClassName(dataSourceDO
    .getValidConnectionCheckerClassName());
localTxDataSource.setCriteria(dataSourceDO.getCriteria());
localTxDataSource.init(zdatasource);

初始化过程如下:



public void init(ZDataSource zdatasource) throws Exception {
    initPool();
    initConnectionManager();
    pool.start();
    initDataSource(zdatasource);
    this.zdatasource = zdatasource;
}

其最核心的start方法


public void start() throws Exception {
    pool.startService();
    connectionManager.setPoolingStrategy(pool.getPoolingStrategy());
    connectionManager.startService();
    if (logger.isDebugEnabled()) {
        logger.debug("Connection pool " + name + " is started");
    }
}

启动pool,根据criteria配置生成不同的Pool类型,默认OnePool


public void startService() throws Exception {
    if ("ByContainerAndApplication".equals(criteria))
        poolingStrategy = new PoolBySubjectAndCri(mcf, name, poolParams, noTxSeparatePools, log);
    else if ("ByContainer".equals(criteria))
        poolingStrategy = new PoolBySubject(mcf, name, poolParams, noTxSeparatePools, log);
    else if ("ByApplication".equals(criteria))
        poolingStrategy = new PoolByCri(mcf, name, poolParams, noTxSeparatePools, log);
    else
        // "ByNothing".equals(criteria)
        poolingStrategy = new OnePool(mcf, name, poolParams, noTxSeparatePools, log);
}

启动ConnectionManager,顺便做下预热


public void startService() {
       poolingStrategy.setConnectionListenerFactory(this);

       if (poolingStrategy instanceof PreFillPoolSupport) {
           PreFillPoolSupport prefill = (PreFillPoolSupport) poolingStrategy;
           if (prefill.shouldPreFill()) {
               prefill.prefill();
           }
       }
   }

最后初始化datasource


private void initDataSource(ZDataSource zdatasource) throws ResourceException {
        datasource = (DataSource) mcf.createConnectionFactory(new ConnectionManagerDelegate(),
            this.name, zdatasource);
    }
public Object createConnectionFactory(ConnectionManager cm, String dataSourceName,
                                          ZDataSource zdatasource) throws ResourceException {
        return new WrapperDataSource(this, cm, dataSourceName, zdatasource);
    }


  • 大小: 249.6 KB
分享到:
评论

相关推荐

    tomcat jboss数据源配置.rar

    本主题主要聚焦于"tomcat jboss数据源配置.rar",这是一个关于如何在Tomcat 5.5和JBoss 4.0中配置数据源,特别是与Oracle数据库交互的详细过程。下面将深入探讨这两个关键组件以及数据源配置的相关知识点。 首先,...

    配置jboss数据源

    配置JBOSS数据源的步骤通常包括以下几个环节: 1. **创建数据源配置文件**:在JBOSS的配置目录下,如`$JBOSS_HOME/standalone/configuration/standalone.xml`或`$JBOSS_HOME/server/default/deploy/jboss-service....

    jboss配置数据源

    jboss配置数据源 jboss配置数据源是指在jboss服务器上配置oracle数据库的数据源,以便在jboss应用程序中使用oracle数据库。下面是jboss配置数据源的详细步骤: 首先,需要将oracle的JDBC驱动程序复制到ClassPath下...

    Jboss数据源配置总结[归纳].pdf

    ### JBoss数据源配置知识点详解 #### 一、引言 在进行软件开发时,特别是涉及到多数据库操作的场景下,正确配置JBoss中的数据源显得尤为重要。本文将基于《Jboss数据源配置总结[归纳].pdf》的内容,详细介绍如何在...

    09_传智播客EJB3.0_配置jboss数据源.rar

    本教程“09_传智播客EJB3.0_配置jboss数据源”主要关注如何在JBoss应用服务器中配置数据源,这对于任何处理数据库交互的EJB应用来说都是至关重要的。 首先,让我们深入理解EJB 3.0的关键特性: 1. 注解驱动:EJB ...

    JBoss 下配置 Oracle 数据源

    JBoss 下配置 Oracle 数据源 在 JBoss 中配置 Oracle 数据源是实现企业级应用程序的重要步骤。本文将详细介绍如何在 JBoss 中配置 Oracle 数据源,包括复制配置文件、编辑配置文件、设置数据源参数等步骤。 一、...

    JBoss配置mySQL数据源

    JBoss配置mySQL数据源 有需要的就下载吧。。。。

    JBoss7.1.1配置MySql数据源

    在JBoss中配置MySQL数据源是开发Java EE应用程序时的重要步骤,这允许应用与数据库进行交互。下面将详细介绍如何在JBoss 7.1.1中配置MySQL数据源。 首先,我们需要准备MySQL数据库的相关信息,包括数据库URL、...

    JBoss7配置Mysql5.1数据源.pdf

    根据文件提供的信息,本文将详细介绍JBoss7配置Mysql5.1数据源的过程。 JBoss是一个开源的应用服务器,支持Java EE应用程序,而Mysql是一个广泛使用的开源关系数据库管理系统。在JBoss上配置Mysql数据源是一个常见...

    JBOSS4数据源配置大全

    ### JBoss4 数据源配置详解 #### 一、引言 JBoss 4.0 是一款流行的开源应用服务器,它默认使用HypersonicDB作为其内置数据库。然而,在实际开发过程中,开发人员往往需要配置并使用其他类型的数据库,如Oracle、...

    JavaEE源代码 jboss-common

    JavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-...

    在Jboss4.0下对MySql数据源的设置方法

    在JBoss 4.0环境下配置MySQL数据源的步骤涉及多个环节,主要是为了确保JBoss应用服务器能够正确地连接和操作MySQL数据库。以下是对每个步骤的详细解释: **步骤一:添加MySQL JDBC驱动** 首先,你需要获取适用于...

    在JBoss中配置多个数据库和数据源

    "在JBoss中配置多个数据库和数据源" 在JBoss中配置多个数据库和数据源是非常复杂的,因为JBoss是一款非常强大的J2EE应用程序服务器。配置多个数据库和数据源需要了解JBoss的配置选项和数据源的配置信息。 首先,...

    jboss配置数据源(oracle)

    本文将详细讲解如何在JBoss中配置Oracle数据源,以便应用程序能够高效、安全地连接到Oracle数据库。 首先,Oracle数据源的配置主要涉及到JBoss服务器的配置文件,通常在`standalone.xml`或`domain.xml`中进行。在这...

    6.3 JBoss下Oracle9i数据源配置

    当我们需要在JBoss应用服务器上配置Oracle9i作为数据源时,这通常涉及到应用程序与数据库之间的连接管理,以便于程序能够安全、高效地访问数据库中的数据。这篇博客"6.3 JBoss下Oracle9i数据源配置"可能详细阐述了这...

    jboss 配置jndi数据源

    jboss 配置jndi数据源,deploy下配置oracle-ds.xml

    JavaEE源代码 jboss-jmx

    JavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-...

Global site tag (gtag.js) - Google Analytics