首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

tomcat数据库连接池配置解决思路

2012-02-01 
tomcat数据库连接池配置tomcat数据库连接池,是Jakarta从4.0版本开始推出的一个组件。对于5.5.x版本与之前的

tomcat数据库连接池配置
tomcat数据库连接池,是Jakarta从4.0版本开始推出的一个组件。对于5.5.x版本与之前的版本配置有所不同。稍后在续。

  以下主要的是tomcat5.5.x配置,配置总共分三部:
  ^-^   条件:将驱动的*.jar包拷贝到tomcat目录下的common\lib下。(这里我们使用的是bea   的   Weblogic的jdbc驱动包);
 
  首先、配置web服务器端的JNDI资源,有两种情况:

  1)   全局web应用配置
          在tomcat目录下进入到\conf文件夹,打开server.xml文件找到 <GlobalNamingResources>   <!--   other   content   -->                       </GlobalNamingResources> ,在该标签之中添加如下内容: <Resource   name= "jdbc/test_jndi "   type= "javax.sql.DataSource "  
          password= "123456 "   driverClassName= "weblogic.jdbc.sqlserver.SQLServerDriver "  
          maxIdle= "10 "   maxWait= "5000 "   username= "sa "   url= "jdbc:bea:sqlserver://127.0.0.1:1433;DatabaseName=test_db "                       maxActive= "20 "/>

          然后在该server.xml同级目录下打开context.xml文件,找到标签 <context> </context> ,在中添加
          <ResourceLink   global= "jdbc/test_jndi "   name= "jdbc/test_jndi "   type= "javax.sql.DataSource "/>
          全局环境配置好之后。就可以在各个web应用下引用该JNDI资源。

  2)   局部web应用配置(   有两种方式)

        方式一:
          和上叙一样,打开server.xml文件,找到如下标签:
<Host   name= "localhost "   appBase= "webapps "   unpackWARs= "true "   autoDeploy= "true "   xmlValidation= "false "                                                           xmlNamespaceAware= "false "> </Host>
在其中添加:
<Context   path= "/test_webapp "   docBase= "/test_webapp "   debug= "5 "   reloadable= "true "   crossContext= "true ">  
        <Resource   driverClassName= "weblogic.jdbc.sqlserver.SQLServerDriver "
url= "jdbc:bea:sqlserver://localhost:1433;DatabaseName=test "   username= "sa "
  password= "123456 "   name= "jdbc/test_jndi "   type= "javax.sql.DataSource "   auth= "Container "
  maxActive= "20 "   maxIdle= "10 "   maxWait= "5000 "   />
</Context>

        方式二:
在目录tomcat5/conf/Catalina/localhost/下建立一个与自己web应用相同文件名的xml配置文件(文件名必须与web应用相同),
                这里我使用的是test_webapp。在文件中添加如下的内容:
<?xml   version= "1.0 "   encoding= "UTF-8 "   ?>
<Context   path= "/test_webapp "   docBase= "/test_webapp "   debug= "5 "   reloadable= "true "   crossContext= "true ">  
          <Resource   driverClassName= "weblogic.jdbc.sqlserver.SQLServerDriver "
  url= "jdbc:bea:sqlserver://localhost:1433;DatabaseName=test "   username= "sa "
  password= "123456 "   name= "jdbc/test_jndi "   type= "javax.sql.DataSource "   auth= "Container "


  maxActive= "20 "   maxIdle= "10 "   maxWait= "5000 "   />
</Context>

    ******************   配置参数介绍   ******************
          path:   自己应用的路径(一般为相对路径),在webapps目录下;
          docBase:   应用的名称和上面相同;
          driverClassName:   应用所要的驱动名;
          url:   连接数据库的地址;
          username:   登陆数据库要使用的用户名;
          password:   登陆数据库要用的密码;
          name:   引用上下文(context)的JNDI名,自己随便设;
          type:   引用资源的类型;
          maxActive:   每次连接数据库的最大数;
          maxIdle:   每次连接数据库的等待数;
          maxWait:   每次阻塞的最大延迟时间(毫秒);

          tomcat5.5.x与之前的版本一个本质的区别在于,它不支持在server.xml文件中使用参数节。
  *********************   end   **************************

  其次、在各自的web应用中引用该JNDI资源
            具体操作就是:在各自的web应用根目录下,找到文件/web-inf/web.xml并打开,在标签 <web-app> </web-app> 中添加如下内容
<resource-ref>
      <description> DBConnection </description>
      <res-ref-name> jdbc/test_jndi </res-ref-name>
      <res-type> javax.sql.DataSource </res-type>
      <res-auth> Container </res-auth>
</resource-ref>
              其中res-ref-name标签中的内容需要改成你自己的应用的JNDI名。(这里的内容是要和之前配置的name属性相对应).

  最后、通过jsp连接数据库:

        Connection   conn   =   null;
        Context   initCtx   =   new   InitialContext();
        Context   ctx   =   (Context)initCtx.lookup( "java:comp/env ");
        javax.sql.DataSource   ds   =   (javax.sql.DataSource)ctx.lookup( "jdbc/test_jndi ");    
        conn=ds.getConnection();
  至此我们就可以完全的使用tomcat连接池。

[解决办法]
不错

热点排行