`
touchmm
  • 浏览: 1037429 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

在Tomcat上配置Proxool的DataSource(Jndi) --第2种方法

阅读更多

第一个方法是在容器,也就是Tomcat上做配置,但是,有时候会不适用,比如虚拟主机,它可能不允许你在机器上做配置,那样,就只能从自身的程序着手.

首先,写一个Proxool的配置文件.....放在 WEB-INF 目录下,下面是一个例子

<? xmlversion="1.0"encoding="UTF-8" ?>
<!--
theproxoolconfigurationcanbeembeddedwithinyourownapplication's.Anythingoutsidethe"proxool"tagis
ignored.
-->
< something-else-entirely >
< proxool >
< alias > proxool_alias </ alias >
< driver-url > jdbc:oracle:thin:@127.0.0.1:1521:sid </ driver-url >
< driver-class > oracle.jdbc.driver.OracleDriver </ driver-class >
< driver-properties >
< property name ="user" value ="user" />
< property name ="password" value ="pwd" />
</ driver-properties >
< maximum-connection-count > 10 </ maximum-connection-count >
< minimum-connection-count > 5 </ minimum-connection-count >
< maximum-connection-lifetime > 30 </ maximum-connection-lifetime >
< maximum-active-time > 3 </ maximum-active-time >
< simultaneous-build-throttle > 5 </ simultaneous-build-throttle >
< house-keeping-sleep-time > 30000 </ house-keeping-sleep-time >
< house-keeping-test-sql > SelectSysdateFormdual </ house-keeping-test-sql >
< prototype-count > 0 </ prototype-count >
</ proxool >
</ something-else-entirely >

然后,当然是先把这个文件先用上,看看可不可以用

在web.xml里面配置上
< servlet >
< servlet-name > ServletConfigurator </ servlet-name >
< servlet-class > org.logicalcobwebs.proxool.configuration.ServletConfigurator </ servlet-class >
< init-param >
< param-name > xmlFile </ param-name >
< param-value > WEB-INF/proxool.xml </ param-value >
</ init-param >
< load-on-startup >1 </ load-on-startup >
</ servlet >
< servlet >
< servlet-name > proxooladmin </ servlet-name >
< servlet-class > org.logicalcobwebs.proxool.admin.servlet.AdminServlet </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > proxooladmin </ servlet-name >
< url-pattern > /proxooladmin.servlet </ url-pattern >
</ servlet-mapping >

这样在应用启动之后,就能通过以下代码来访问到数据库

Connectionconn = DriverManager.getConnection( " proxool.proxool_alias " );
Statementstmt
= conn.createStatement();
ResultSetrs
= stmt.executeQuery( " Select*Fromtest " );

/*以下是重点*/
但是我们需要的是注册一个JNDI,
有2种方法
1.配置文档里面直接注册,这样配置:
<? xmlversion="1.0"encoding="UTF-8" ?>
<!--
theproxoolconfigurationcanbeembeddedwithinyourownapplication's.Anythingoutsidethe"proxool"tagis
ignored.
-->
< something-else-entirely >
< proxool >
< alias > proxool_alias </ alias >
< driver-url > jdbc:oracle:thin:@127.0.0.1:1521:pub </ driver-url >
< driver-class > oracle.jdbc.driver.OracleDriver </ driver-class >
< driver-properties >
< property name ="user" value ="user" />
< property name ="password" value ="pwd" />
</ driver-properties >
< jndi-name > jdbc-0 </ jndi-name >
< jndi-java .naming.factory.initial > org.apache.naming.java.javaURLContextFactory </ jndi-java.naming.factory.initial >
< jndi-java .naming.factory.url.pkgs > org.apache.naming </ jndi-java.naming.factory.url.pkgs >
< maximum-connection-count > 10 </ maximum-connection-count >
< minimum-connection-count > 5 </ minimum-connection-count >
< maximum-connection-lifetime > 30 </ maximum-connection-lifetime >
< maximum-active-time > 3 </ maximum-active-time >
< simultaneous-build-throttle > 5 </ simultaneous-build-throttle >
< house-keeping-sleep-time > 30000 </ house-keeping-sleep-time >
< house-keeping-test-sql > SelectSysdateFormdual </ house-keeping-test-sql >
< prototype-count > 0 </ prototype-count >
</ proxool >
</ something-else-entirely >


2.在自己的Java类里面注册JNDI
那就需要用到Proxool提供的另一个类:ProxoolJNDIHelper:
Propertiesinfo = new Properties();
info.setProperty(
" jndi-name " , " jdbc-0 " );
info.setProperty(
" java.naming.factory.initial " ,org.apache.naming.java.javaURLContextFactory. class .getName());
info.setProperty(
" java.naming.factory.url.pkgs " , " org.apache.naming " );
// info.setProperty("java.naming.provider.url","localhost:8888");
try {
ProxoolJNDIHelper.registerDatasource(
" proxool_alias " ,info);
}
catch (ProxoolExceptione) {
// TODOAuto-generatedcatchblock
e.printStackTrace();
}

上面所说的2中方法都能注册一个名为jdbc-0的JNDI,
可以通过以下代码来访问数据库..
Contextctx = new InitialContext();
DataSourcedataSource
= (DataSource)ctx.lookup( " jdbc-0 " );

Connectionconn
= dataSource.getConnection();

下面说明代码,
1.jndi-name好像不能用jdbc/xx这种名字,文档里面用的就是/datasources/UserDB,但是Tomcat启动就报错,可能和特殊字符有关,具体没测试
2.JNDI的几个参数(java.naming.factory.initial ,java.naming.factory.url.pkgs,还有java.naming.provider.url),这些参数和容器有关,Tomcat就是这些参数
JBOSS的话就是:
java.naming.factory.initial= org.jnp.interfaces.NamingContextFactory
java.naming.provider.url = localhost:1099
java.naming.factory.url.pkgs = org.jboss.naming

分享到:
评论

相关推荐

    proxool-0.9.1.jar proxool_cglib-0.9.1.jar

    Proxool是基于Proxy的概念,它在数据库连接上创建了一个代理层,使得多个客户端可以共享同一个物理连接,从而减少了创建和销毁数据库连接的开销。这个代理层能够跟踪和监控每个连接的使用情况,包括连接的生命周期、...

    proxool-0.9.1-source

    Proxool是一个开源的、基于Java的数据库连接池实现,它提供了一种灵活且可扩展的方式来管理和优化数据库连接。在这个0.9.1版本的源代码中,我们可以深入理解其内部工作原理,以及如何配置和定制以适应各种项目需求。...

    proxool配置参数说明及proxool-0.9.1相关jar包及spring配置方法

    在Spring框架中集成Proxool,可以通过XML配置文件来创建一个`orgproxool.sql.DriverProxyDataSource`类型的DataSource bean。下面是一个示例配置: ```xml &lt;bean id="dataSource" class="orgproxool.sql....

    proxool-0.9.1.zip

    然后,在应用程序中通过JNDI查找或直接初始化Proxool的DataSource实例,即可开始使用数据库连接池。 总之,Proxool是一个强大的数据库连接池解决方案,它与CGLIB的结合使用使得数据库操作更加高效和可控。开发者...

    proxool-0.9.1.jar,proxool-cglib.jar

    数据库连接池是一种在多线程、高并发环境下优化数据库访问性能的技术,通过预先创建并维护一定数量的数据库连接,避免了频繁创建和销毁连接的开销。 0.9.1是Proxool的一个版本号,这表明我们处理的是该项目的一个...

    在Hibernate中配置Proxool连接池

    在上述配置中,我们通过`hibernate.proxool.properties`指定了Proxool的配置文件路径,`hibernate.proxool.pool_alias`设置了连接池的别名,这个别名需要与Proxool配置文件中的alias一致。 接下来,我们需要创建...

    Proxool-数据源配置详解

    在配置Proxool时,我们需要在应用的配置文件(如`proxool.properties`)中定义连接池的相关属性。这些属性包括数据库URL、用户名、密码、驱动类名等。例如: ``` proxool.pool-name=myPool proxool.driver-url=...

    proxool-0.9.1-修正版 houseKeepingSleepTime 不能赋值

    在Spring中配置Proxool时,如果`houseKeepingSleepTime`的类型不正确,会导致Spring无法将配置的值正确注入到Proxool的配置中,从而影响到连接池的运行。 为了解决这个问题,Proxool的开发者在0.9.1修正版中将`...

    hibernate3+ proxool-0.9.1配置 和proxool-0.9.1.jar

    2. **配置Proxool**:在项目的配置文件(如hibernate.cfg.xml)中,我们需要定义一个Proxool的连接池。这通常包括以下属性: - `proxool.hibernate.pool_name`:连接池的唯一标识。 - `proxool.hibernatedriver....

    proxool 的使用 配置

    标题 "proxool 的使用配置" 暗示我们将探讨一个名为 Proxool 的数据库连接池的配置和使用方法。Proxool 是一个轻量级、高效的开源 Java 数据库连接池,它提供了一种灵活的方式来管理和控制数据库连接。在这个主题中...

    proxool-0.9.1-source.tar.gz

    "proxool-0.9.1-source.tar.gz" 是一个包含 Proxool 源代码的压缩文件,版本为 0.9.1。Proxool 是一个开源的 Java 连接池库,它提供了数据库连接池管理服务,用于提高应用在处理大量并发数据库请求时的性能和效率。...

    proxool-0.9.1 jar;proxool-cglib.jar;

    在IT行业中,数据连接池是数据库管理中一个重要的优化手段,它有效地提高了应用程序对数据库的访问效率。...在开发和运维过程中,理解并掌握其工作原理和配置方法,对于优化数据库访问性能具有重要意义。

    JavaEE源代码 proxool-0.8.3

    JavaEE源代码 proxool-0.8.3JavaEE源代码 proxool-0.8.3JavaEE源代码 proxool-0.8.3JavaEE源代码 proxool-0.8.3JavaEE源代码 proxool-0.8.3JavaEE源代码 proxool-0.8.3JavaEE源代码 proxool-0.8.3JavaEE源代码 ...

    proxool连接池配置

    the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is ignored. --&gt; - &lt;something-else-entirely&gt; - &lt;proxool&gt; - &lt;!-- 连接池的别名 --&gt; ...

    proxool-0.9.1-api.chm

    proxool api proxool api proxool api proxool api

    proxool-0.8.3.zip

    `proxool-0.8.3.zip` 是一个包含 `Proxool` 数据库连接池的老版本资源包,主要用于优化数据库连接管理,特别是在使用 Hibernate 框架时。`Proxool` 是一个轻量级的连接池实现,它允许应用程序高效地管理和复用数据库...

    proxool-0.9.0RC2-source.tar.gz

    标题中的"proxool-0.9.0RC2-source.tar.gz"是一个开源软件的源代码压缩包,其中"proxool"是项目的名称,"0.9.0RC2"代表这是该软件的0.9.0版本的第二个候选发布版(Release Candidate 2)。".tar.gz"扩展名表明这是一...

    proxool-0.6.jar proxool-cglib.jar

    在实际应用中,Proxool的配置通常包括设置连接池的最大连接数、最小连接数、超时时间等参数。这些参数可以根据系统的负载情况和数据库的处理能力进行调整,以达到最优的性能和资源利用。此外,Proxool还提供了监控和...

    proxool-0.9.1-修正版

    修正houseKeepingSleepTime属性为Long类型 &lt;!-- 间隔 5分钟检查所有连接是否需要关闭或创建 --&gt; &lt;property name="houseKeepingSleepTime" value="300000" /&gt;

    proxool配置详解

    标题中的“proxool配置详解”指的是Proxool,这是一个开源的数据库连接池管理工具,它在Java应用程序中用于管理和优化数据库连接。Proxool的主要作用是提高应用性能,通过复用已建立的数据库连接,避免频繁创建和...

Global site tag (gtag.js) - Google Analytics