tomcat7 配置数据源

来源:互联网 发布:刷网站访问量软件 编辑:程序博客网 时间:2024/05/17 02:54

             原文:tomcat 7配置数据源                         作者:long2010yu2010

Tomcat提供了两种配置数据源的方式,唯一的区别就是访问的范围不一样,一个是全局的数据源,一个是局部的数据源,大家听了这个名字就知道它们的访问的范围了。全局的数据源是可以让服务器下的所有Web应用访问的,而局部的数据源只能让服务器下的某一个Web应用访问。不同于微软操作系统上自带的odbc的数据源,Tomcat的数据源是基于jdbc这种连接方式的。它将得到连接的那些代码做了一个数据源,通过该数据源可以很方便获得数据库连接的那个Connection对象,不用每一次都进行加载驱动,得到连接的设置了。既然是jdbc的方式,那么就需要对应的数据库的jdbc驱动程序,这里我要连接的mysql和oracle数据库,驱动程序都放在了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 Interface,Java命名和目录接口,就是为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>”中的值要与Resource的name属性值一样。接下来就是要编写测试文件了。内容如下:
[html] view plaincopyprint?
<span style="font-size:12px;"><%@ 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>  
  
</span>  
 
经过测试上述页面就可以连接到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();
0 0
原创粉丝点击