tomcat5.0与tomcat5.5的数据库连接池jndi配置区别

在tomcat5.5版本以前,可以说jndi配置相对是比较复杂的,而且据网友说用tomcat5.0的控制台配置数据库连接池经常有问题,而且文档写得又不详细。

tomcat5.5出来后,jndi的配置方法是大大地节省,而且很简洁,个人觉得比以前的版本好很多。这里大概给出一个配置例子。tomcat数据库连接池jndi配置有两种,一种是全局的,一种是context的,下面主要是讲全局的,并且以一个实例jdbc/byisdb为例子
   
一、tomcat5.0配置方法

1、首先在server.xml里面配置,找到下面的配置
<!-- Global JNDI resources -->
<GlobalNamingResources>
</GlobalNamingResources>

2、在里面增加一个Resource

       < Resource name = " jdbc/byisdb "
                auth
= " Container "
                type
= " javax.sql.DataSource " />



3、在下面增加属性

   < ResourceParams name = " jdbc/byisdb " >
    
< parameter >
      
< name > factory </ name >
      
< value > org.apache.commons.dbcp.BasicDataSourceFactory </ value >
    
</ parameter >

    
<!-- Maximum number of dB connections in pool. Make sure you
          configure your mysqld max_connections large enough to handle
          all of your db connections. Set to
0 for no limit.
         
-->
    
< parameter >
      
< name > maxActive </ name >
      
< value > 100 </ value >
    
</ parameter >

    
<!-- Maximum number of idle dB connections to retain in pool.
          Set to
- 1 for no limit.   See also the DBCP documentation on this
          and the minEvictableIdleTimeMillis configuration parameter.
         
-->
    
< parameter >
      
< name > maxIdle </ name >
      
< value > 30 </ value >
    
</ parameter >

    
<!-- Maximum time to wait for a dB connection to become available
          in ms, in
this example 10 seconds. An Exception is thrown if
         
this timeout is exceeded.   Set to - 1 to wait indefinitely.
         
-->
    
< parameter >
      
< name > maxWait </ name >
      
< value > 10000 </ value >
    
</ parameter >

    
<!-- MySQL dB username and password for dB connections   -->
    
< parameter >
     
< name > username </ name >
     
< value > una_oa </ value >
    
</ parameter >
    
< parameter >
     
< name > password </ name >
     
< value > una_oa </ value >
    
</ parameter >

    
<!-- Class name for the old mm.mysql JDBC driver - uncomment this entry and comment next
         
if you want to use this driver - we recommend using Connector / J though
    
< parameter >
       
< name > driverClassName </ name >
       
< value > org.gjt.mm.mysql.Driver </ value >
    
</ parameter >
     
-->
    
    
<!-- Class name for the official MySQL Connector / J driver -->
    
< parameter >
       
< name > driverClassName </ name >
       
< value > oracle.jdbc.driver.OracleDriver </ value >
    
</ parameter >
    
    
<!-- The JDBC connection url for connecting to your MySQL dB.
          The autoReconnect
= true argument to the url makes sure that the
          mm.mysql JDBC Driver will automatically reconnect
if mysqld closed the
          connection.   mysqld by
default closes idle connections after 8 hours.
         
-->
    
< parameter >
      
< name > url </ name >
      
< value > jdbc:oracle:thin:@ 192.168 . 1.210 : 1521 :byisdb </ value >
    
</ parameter >
  
</ ResourceParams >


4、在你的应用的web.xml里面增加

< resource - ref >
< description > postgreSQL Datasource example </ description >
< res - ref - name > jdbc / byisdb </ res - ref - name >
< res - type > javax.sql.DataSource </ res - type >
< res - auth > Container </ res - auth >
</ resource - ref >

OK,到此配置完毕,可以用下面的几段代码进行测试

Context initContext = new InitialContext();
Context envContext  
= (Context)initContext.lookup( " java:/comp/env " );
DataSource ds
= (DataSource)envContext.lookup( " jdbc/byisdb " );
Connection conn
= ds.getConnection();
out.println(
" conn is: " + conn);

二、tomcat5.5配置

1、打开conf/context.xml里面
添加下面的配置

     < Resource name ="jdbc/byisdb" auth ="Container" type ="javax.sql.DataSource" driverClassName ="oracle.jdbc.driver.OracleDriver" url ="jdbc:oracle:thin:@192.168.1.210:1521:byisdb" username ="una_oa" password ="una_oa" maxActive ="20" maxIdle ="10" maxWait ="10000" />

2在你的应用的web.xml里面增加

< resource - ref >
< description > postgreSQL Datasource example </ description >
< res - ref - name > jdbc / byisdb </ res - ref - name >
< res - type > javax.sql.DataSource </ res - type >
< res - auth > Container </ res - auth >
</ resource - ref >


同样,可以用上面的代码进行测试。

2

一.在tomcat_home\common下放入jdbc的三个驱动程序(一定要的哦),可以在微软的网站上去下载,安装的SQLSERVER2k默认的用户名是sa,密码是空,但密码为空并不代表没有密码,所以你的url中一定要定义username和password,最好是重设定一下密码
二.出现不能引用错误的话一般就是路径没有写对,tomcat默认的路径是tomcat_home\webapps\不过使用5.5.x的话,按下面方法就行,不需要配置路径,而且也不用在youwebapp\WEB-INF\web.xml文件配置引用
三.tomcat5.5.x版的server.xml配置与tomcat5.0的配置不同,下面列举三种在tomcat5.5.x的配置方法,如果配置不正确会出现javax.naming.NameNotFoundException: Name is not bound in this Context 错误
方式一、全局数据库连接池
1、通过管理界面配置连接池,或者直接在tomcat\conf\server.xml的GlobalNamingResources中增加
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
2、在tomcat\webapps\myapp\META-INF\context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
这样就可以了。
方式二、全局数据库连接池
1、同上
2、在tomcat\conf\context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
方式三、局部数据库连接池
只需在tomcat\webapps\myapps\META-INF\context.xml的Context中增加:
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
参数说明:
driveClassName:JDBC驱动类的完整的名称;
maxActive:同时能够从连接池中被分配的可用实例的最大数;
maxIdle:可以同时闲置在连接池中的连接的最大数;
maxWait:最大超时时间,以毫秒计;
password:用户密码;
url:到JDBC的URL连接;
user:用户名称;
validationQuery:用来查询池中空闲的连接。
以上三种方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是从微软网站上下载的sql server jdbc (sp3)。
四.报错org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)此是一个小问题,因为我的SQLSERVER2K的服务改成手动的,所以每次启动后就要手动的启动SQLSERVER2K,由于一下子不记的启动了,所以报些错误,所以如果你经常要用到SQLSERVER2K的话,最好不要将其改为手动启动

你可能感兴趣的:(sql,tomcat,mysql,jdbc,server,配置管理)