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

转载 2011年03月24日 11:17:00

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

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

<? xml version="1.0" encoding="UTF-8" ?>
    
<!--
        the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is
        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 > Select Sysdate Form dual </ 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 >

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

    Connection conn  =  DriverManager.getConnection( " proxool.proxool_alias " );
    Statement stmt 
=  conn.createStatement();
    ResultSet rs 
=  stmt.executeQuery( " Select * From test " );

/*以下是重点*/
但是我们需要的是注册一个JNDI,
有2种方法
1.配置文档里面直接注册,这样配置:
<? xml version="1.0" encoding="UTF-8" ?>
    
<!--
        the proxool configuration can be embedded within your own application's. Anything outside the "proxool" tag is
        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 > Select Sysdate Form dual </ house-keeping-test-sql >
        
< prototype-count > 0 </ prototype-count >
    
</ proxool >
</ something-else-entirely >


2.在自己的Java类里面注册JNDI
那就需要用到Proxool提供的另一个类:ProxoolJNDIHelper:
        Properties info  =   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  (ProxoolException e)  {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
         }

上面所说的2中方法都能注册一个名为jdbc-0的JNDI,
可以通过以下代码来访问数据库..
        Context ctx  =   new  InitialContext();
        DataSource dataSource 
=  (DataSource) ctx.lookup( " jdbc-0 " );
            
        Connection conn 
=  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

【MyBatis】MyBatis Tomcat JNDI原理及源码分析

一、 Tomcat JNDI JNDI(java nameing and drectory interface),是一组在Java应用中访问命名和服务的API,所谓命名服务,即将对象和名称联系起来...
  • reliveIT
  • reliveIT
  • 2015年08月07日 09:30
  • 3290

在tomcat下context.xml中配置各种数据库连接池(JNDI)

1.   首先,需要为数据源配置一个JNDI资源。我们的数据源JNDI资源应该定义在context元素中。在tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个...
  • dangelasir_
  • dangelasir_
  • 2016年09月10日 15:38
  • 2011

WebLogic使用总结(一)——WebLogic配置JNDI数据源

一、在WebLogic新建针对Oracle数据库的JNDI数据源   进入weblogic管理控制台,此处是远程访问:http://192.168.1.144:7001/console   点击...
  • u011148770
  • u011148770
  • 2016年12月09日 13:33
  • 797

Proxool连接池解析(上)

一  概念       几乎所有的应用程序都不可避免地要与数据库打交道,需要建立数据库连接以便执行数据库操作。 然而, 建立数据库连接是一个开销很大的操作(见《SQL语言艺术》P30):  1. ...
  • shuqin1984
  • shuqin1984
  • 2013年09月25日 17:36
  • 2436

Tomcat使用数据源(JNDI/直接使用)

Tomcat 在 7.0 以前的版本都是使用 commons-dbcp 做为连接池的实现,但是 dbcp 饱受诟病,原因有: dbcp 是单线程的,为了保证线程安全会锁整个连接池dbcp 性能不佳...
  • zmx729618
  • zmx729618
  • 2016年04月21日 15:33
  • 3283

tomcat下的jndi简单配置

整理版 1.相关包 1、Javax.naming:包含了访问命名服务的类和接口。例如,它定义了Context接口,这是命名服务执行查询的入口。 2、Javax.naming....
  • u011165335
  • u011165335
  • 2016年03月08日 15:58
  • 1255

jndi3 Spring配置数据源的三种方式 .

原文:http://blog.csdn.net/tl396900/article/details/5467086
  • indieinside
  • indieinside
  • 2014年10月20日 15:43
  • 9869

JNDI数据源(在Tomcat下配置JNDI多数据源实例)

一,添加数据库驱动包加入classpath。 这里我用到了oracle和mysql。 所以由两个jar包:ojdbc14.jar和mysql-connector-java-5.1.13-bin.j...
  • lushuaiyin
  • lushuaiyin
  • 2013年03月20日 14:43
  • 4067

JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源

com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置。 一、...
  • houbin0912
  • houbin0912
  • 2016年09月14日 11:03
  • 3133

Tomcat中配置JNDI数据源详解

JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有...
  • a724888
  • a724888
  • 2017年04月21日 13:27
  • 799
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Tomcat上配置Proxool的DataSource(Jndi) --第2种方法
举报原因:
原因补充:

(最多只允许输入30个字)