Tomcat7配置数据源

20 篇文章 0 订阅
19 篇文章 0 订阅

Tomcat7配置数据源

       今天看书的时候,终于知道tomcat的数据源是什么了意思了,以前在看的时候一直不知道,当我知道的时候,我便马上进行了实验,可是看似配置很简单,但是运行起来的时候,却不是那么容易了。我遇到了几个错误,调试挺长的时间后,就剩下了一个错误,可是这个错误提示的很明白“没有找到类”,这使我百思不得其解,我一直在想办法调试,我一直以为是我的某个属性值写错了,调了很长很长的时间,到了最后的时候,才发现是我的resource这个标签多加了字母,这让我感觉太哭笑不得了,怎么能犯这么低级的错误呢?之后又做了几次,终于没有错误了,这让我对tomcat的数据源有了更近一步的了解。下面我来说说配置吧!

       从Tomcat5.5这个版本开始,就内置的了对数据源的实现,所以可以非常方便的配置Tomcat的数据源,这里我使用的是Tomcat7这个版本的。Tomcat提供了两种配置数据源的方式,唯一的区别就是访问的范围不一样,一个是全局的数据源,一个是局部的数据源,大家听了这个名字就知道它们的访问的范围了。全局的数据源是可以让服务器下的所有Web应用访问的,而局部的数据源只能让服务器下的某一个Web应用访问。不同于微软操作系统上自带的odbc的数据源,Tomcat的数据源是基于jdbc这种连接方式的。它将得到连接的那些代码做了一个数据源,通过该数据源可以很方便获得数据库连接的那个Connection对象,不用每一次都进行加载驱动,得到连接的设置了。既然是jdbc的方式,那么就需要对应的数据库的jdbc驱动程序,这里我要连接的mysqloracle数据库,驱动程序都放在了Web应用下的lib文件夹下,也有的人将该驱动放入到Tomcat的安装目录下的lib文件夹下,这是一样的,只不过这样做就不用每次都将驱动放入到lib文件夹下了。对于局部数据源的配置只需要修改两处即可,修改该Web应用的Context处,和Web.xml文件。对于Tomcat的应用来说,部署该应用通常有四种方式,对于其中的手动部署的方式通常借助于Context这个标签来进行,如果你的Web应用使用Context进行部署的化,那么在该Context的内部加上如下的语句:

<!—这是针对MySQL数据库的-->

<Resource  name="jdbc/mysql"

auth="Container"

type="javax.sql.DataSource"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/longyu"

username="root"

password="longyu"

maxActive="5"

maxIdle="2" 

maxWait="10000"/>

<!—这是针对Oracle数据库的-->

<Resource name="jdbc/oracle"

auth="Container"

type="javax.sql.DataSource"

driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@localhost:1521:orcl"

username="scott"

password="tiger"

maxActive="5"

maxIdle="2" 

maxWait="10000"/>

其中各项的含义是:

name属性指定了数据源在容器中的JNDI(Java Naming Directory InterfaceJava命名和目录接口,就是为Java对象起了一个名字,而用在数据源中便是为数据源起了名字,同过这个名字可以让其他程序来访问该数据源对象)名;

auth属性指定了认证方式为container;

type属性指定了数据源的类型,一般都使用javax.sql.DataSource这个类;

driverClassName属性指定了连接数据库的驱动;

url属性指定了连接数据库服务的URL

username属性指定了连接数据库的用户名;

password属性指定了连接数据库的密码;

maxActive属性指定了数据源最大的活动连接数

maxIdle属性指定了数据池中最大的空闲连接数;

maxWait属性指定了数据池中最大等待获取连接的客户端。

接下来要修改Web.xml文件,在其中为相应的数据源添加相应的语句,如下所示:

<!—这是针对MySQL数据库的-->

<resource-ref>

          <description>Java JDBC</description>

           <res-ref-name>jdbc/mysql</res-ref-name>

           <res-type>javax.sql.DataSource</res-type>

           <res-auth>Container</res-auth>

</resource-ref>

<!—这是针对Oracle数据库的-->

<resource-ref>

          <description>Java JDBC</description>

           <res-ref-name>jdbc/oracle</res-ref-name>

           <res-type>javax.sql.DataSource</res-type>

           <res-auth>Container</res-auth>

</resource-ref>

其中“<res-ref-name>jdbc/mysql</res-ref-name>”中的值要与Resourcename属性值一样。接下来就是要编写测试文件了。内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>

  <head>

    <title>My JSP 'tomcatTest.jsp' starting page</title>

  </head>

  <body>

    <%

          Context  ctx = new InitialContext();

          DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");

          Connection con = ds.getConnection();

          Statement st = con.createStatement();

          ResultSet rs = st.executeQuery("select * from t_student");

          while(rs.next())

          {

                out.println("<h1>"+rs.getString(1)+"</h1>");

          }

          rs.close();

          st.close();

          con.close();          

     %>

  </body>

</html>

 

经过测试上述页面就可以连接到oracle数据库和MySQL数据库了。

        注意:在每次进行连接数据库的时候都要写上如下的几句话,这些都是固定的,其中第二句的lookup里参数前面一定要加上“java:comp/env”的字符串,否则会出现错误。而且使用这样的方式一定要导入的包是java.sql包,javax.sql包,和javax.naming包下的文件,要不然也会出现错误。

Context  ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");

Connection con = ds.getConnection();

 对于Tomcat的数据源的配置,我也是刚学,有些问题可能不对,希望大家理解,提出我的错误之处。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值