[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 5.5和JBoss 4.0中配置数据源,特别是与Oracle数据库交互的详细过程。下面将深入探讨这两个关键组件以及数据源配置的相关知识点。 首先,...
配置JBOSS数据源的步骤通常包括以下几个环节: 1. **创建数据源配置文件**:在JBOSS的配置目录下,如`$JBOSS_HOME/standalone/configuration/standalone.xml`或`$JBOSS_HOME/server/default/deploy/jboss-service....
jboss配置数据源 jboss配置数据源是指在jboss服务器上配置oracle数据库的数据源,以便在jboss应用程序中使用oracle数据库。下面是jboss配置数据源的详细步骤: 首先,需要将oracle的JDBC驱动程序复制到ClassPath下...
### JBoss数据源配置知识点详解 #### 一、引言 在进行软件开发时,特别是涉及到多数据库操作的场景下,正确配置JBoss中的数据源显得尤为重要。本文将基于《Jboss数据源配置总结[归纳].pdf》的内容,详细介绍如何在...
本教程“09_传智播客EJB3.0_配置jboss数据源”主要关注如何在JBoss应用服务器中配置数据源,这对于任何处理数据库交互的EJB应用来说都是至关重要的。 首先,让我们深入理解EJB 3.0的关键特性: 1. 注解驱动:EJB ...
JBoss 下配置 Oracle 数据源 在 JBoss 中配置 Oracle 数据源是实现企业级应用程序的重要步骤。本文将详细介绍如何在 JBoss 中配置 Oracle 数据源,包括复制配置文件、编辑配置文件、设置数据源参数等步骤。 一、...
JBoss配置mySQL数据源 有需要的就下载吧。。。。
在JBoss中配置MySQL数据源是开发Java EE应用程序时的重要步骤,这允许应用与数据库进行交互。下面将详细介绍如何在JBoss 7.1.1中配置MySQL数据源。 首先,我们需要准备MySQL数据库的相关信息,包括数据库URL、...
根据文件提供的信息,本文将详细介绍JBoss7配置Mysql5.1数据源的过程。 JBoss是一个开源的应用服务器,支持Java EE应用程序,而Mysql是一个广泛使用的开源关系数据库管理系统。在JBoss上配置Mysql数据源是一个常见...
### JBoss4 数据源配置详解 #### 一、引言 JBoss 4.0 是一款流行的开源应用服务器,它默认使用HypersonicDB作为其内置数据库。然而,在实际开发过程中,开发人员往往需要配置并使用其他类型的数据库,如Oracle、...
JavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-commonJavaEE源代码 jboss-...
在JBoss 4.0环境下配置MySQL数据源的步骤涉及多个环节,主要是为了确保JBoss应用服务器能够正确地连接和操作MySQL数据库。以下是对每个步骤的详细解释: **步骤一:添加MySQL JDBC驱动** 首先,你需要获取适用于...
"在JBoss中配置多个数据库和数据源" 在JBoss中配置多个数据库和数据源是非常复杂的,因为JBoss是一款非常强大的J2EE应用程序服务器。配置多个数据库和数据源需要了解JBoss的配置选项和数据源的配置信息。 首先,...
本文将详细讲解如何在JBoss中配置Oracle数据源,以便应用程序能够高效、安全地连接到Oracle数据库。 首先,Oracle数据源的配置主要涉及到JBoss服务器的配置文件,通常在`standalone.xml`或`domain.xml`中进行。在这...
当我们需要在JBoss应用服务器上配置Oracle9i作为数据源时,这通常涉及到应用程序与数据库之间的连接管理,以便于程序能够安全、高效地访问数据库中的数据。这篇博客"6.3 JBoss下Oracle9i数据源配置"可能详细阐述了这...
jboss 配置jndi数据源,deploy下配置oracle-ds.xml
JavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-jmxJavaEE源代码 jboss-...