Java用context.xml连接数据库

2 篇文章 0 订阅

本文转载于:http://haidii.iteye.com/blog/373087


 首先在web项目的META-INF下 建立context.xml文件,内容为:

 context.xml

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Context path="/">  
  3.     <Resource  
  4.       name="myDS"  
  5.       type="javax.sql.DataSource"  
  6.       driverClassName="oracle.jdbc.driver.OracleDriver"  
  7.       maxIdle="2"  
  8.       maxWait="5000"  
  9.       username="test"   
  10.       password="pwd"  
  11.       url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"  
  12.       maxActive="4"/>  
  13.  <!--name:DataSource的名称-->  
  14.  <!--type:数据源对应的java类型,一般设计为javax.sql.DataSource-->  
  15.  <!--username:数据库登陆名-->  
  16.  <!--password:数据库登陆密码-->  
  17.  <!--driverClassName:指定数据库JDBC驱动程序-->  
  18.  <!--url:指定数据库的URL-->  
  19.  <!--maxIdle:连接池处于空闲状态的数据库连接的最大数目,取0表示不受限制-->  
  20.  <!--maxWait:连接池中数据库连接处于空闲状态的最长时间(以毫秒为单位),取0表示无限制等待时间-->  
  21.  <!--maxActive:连接池处于活动状态的数据库连接的最大数目,去0表示不受限制-->  
  22.    
  23. </Context>   

 OK,在JSP里,可以直接写:

index.jsp

Jsp代码   收藏代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ page import="java.sql.*"%>  
  3. <%@ page import="javax.naming.*"%>  
  4. <%@ page import="javax.sql.*"%>  
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  6. <html>  
  7.     <head>  
  8.     </head>  
  9.     <body>  
  10.         <%  
  11. Context initContext = new InitialContext();  
  12. Context envContext = (Context) initContext.lookup("java:/comp/env");  
  13. DataSource db = (DataSource)envContext.lookup("myDS");  
  14. //javablogorl为<Resource>元素中name属性的值  
  15. Connection conn = db.getConnection( );  
  16. Statement stmt = conn.createStatement();  
  17. ResultSet rs = stmt.executeQuery("SELECT * FROM test");  
  18. while(rs.next()){  
  19. out.print(rs.getString("id")+" ");  
  20. out.print(rs.getString("name")+"<br>");  
  21. }  
  22. rs.close();  
  23. stmt.close();  
  24. conn.close();  
  25. %>  
  26.     </body>  
  27. </html>  


问题一:,就是老是报oracle.jdbc.driver.OracleDriver.class找不到.

后来在网上才发现,要将oracle的JDBC驱动放在tomcat的common/lib下,而我一直是把它放在了WEB-INF/lib下,问题搞定!

问题二:如果未设置虚拟目录,该问题将不存在。

如果设置了虚拟目录,即在tomcat5/conf/Catalina/localhost/myWeb.xml里有以下内容:

Xml代码   收藏代码
  1. <Context path="/myWeb" docBase="D:\workspace\myWeb\WebRoot" reloadable="true" debug="0"></Context>  

 

这样就可以不再部署项目!

但是,META-INF/context.xml将不再管用,需要将tomcat5/conf/Catalina/localhost/myWeb.xml的内容改成:

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Context  
  3.     docBase="D:/workspace/myExt/WebRoot"  
  4.     reloadable="true">  
  5.   <Resource  
  6.     name="myDS"  
  7.     type="javax.sql.DataSource"  
  8.     maxActive="4"  
  9.     maxIdle="2"  
  10.     username="test"  
  11.     maxWait="5000"  
  12.     driverClassName="oracle.jdbc.driver.OracleDriver"  
  13.     password="pwd"  
  14.     url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>  
  15. </Context>  



另:一下文章转载于:http://my.oschina.net/tianzimensheng/blog/64566

Tomcat6的服务器配置文件放在 ${tomcat6}/conf 目录底下。我们可以在这里找到 server.xml  context.xml。当然,还有其他一些资源文件。但是在在本文中我们只用得上这两个,其他的就不介绍了。

1. 首先,需要为数据源配置一个JNDI资源。 我们的数据源JNDI资源应该定义在context元素中。 tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个context.xml文件中。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。 我们当然推荐把应用需要的JNDI资源配置在context.xml文件中,而不是server.xml文件中。

1、首先,将数据库的驱动程序copytomcat6.0\lib下,这一部是关键,如果没有copy 当运行程序的时候后报-找不到驱动-的异常。

2、将下面的代码放到Tomcat 6.0\conf\context.xml中间,如:

<Context reloadable="true">

<Resource

name="jdbc/数据库名"

type="javax.sql.DataSource"

maxActive="100"

maxIdle="30"

maxWait="5000"

username="用户名"

password="密码"

driverClassName="数据库的驱动"

url="数据库的连接地址" />

</Context>

解释:(100 30 5000 为上面的数据)

maxActive="最大可以有100名用户连接数据源"

maxIdle="如果没有用户连接,空出30个连接等待用户连接"

maxWait="如果已连接用户5000秒内没有再次连接数据源,则放弃此连接"

完成这两部,数据源就可以用了。

另外,也可以在项目root下的WEB-INF下新建context.xml进行配置

<?xml version="1.0" encoding="UTF-8"?>

<Context>/直连

<Resource

name="jdbc/book"

type="javax.sql.DataSource"

password=""

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

maxIdle="5"

maxWait="5000"

username="sa"

url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=book"直连数据源

maxActive="10"/>

</Context>

<!-->

<Context>桥连

<Resource

name="jdbc/book"

type="javax.sql.DataSource"

password=""

driverClassName="sun.jdbc.odbc.JdbcOdbcDriver"

maxIdle="2"

maxWait="5000"

username="sa"

url="jdbc:odbc:bb"///桥连的数据源

maxActive="4"/>

<WatchedResource>C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\context.xml</WatchedResource>

</Context>

<!-->

直接在Context文件中加入:

<Resource

name="jdb/dbsource"

type="javax.sql.DataSource"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

maxIdle="2"

maxWait="5000"

url="jdbc:microsoft:sqlserver://localhost:1433;databaseName=jspdev"

maxActive="4"/>

username="he"

password="he"

通过javajndi就可以了

InitialContext initCtx = new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/
数据库名");
Connection conn = ds.getConnection();

以下是各种数据库的配置

1.sql2000

<Resource 
name="jdbc/
数据库名"

type="javax.sql.DataSource"

maxActive="100"

maxIdle="30"

maxWait="5000"

username="用户名"

password="密码"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=数据库名
/>

2.oracle

<Resource 
name="jdbc/
数据库名
type="javax.sql.DataSource" 
maxActive="100" 
maxIdle="30" 
maxWait="5000" 
username="
用户名
password="
密码
driverClassName="oracle.jdbc.driver.OracleDriver" 
url="jdbc:oracle:thin:@127.0.0.1 :1521:ora9" 
/>

3.mysql

<Resource name="jdbc/mysql" 
auth="Container" 
type="javax.sql.DataSource" //
资源类型 
driverClassName="org.gjt.mm.mysql.Driver" 
url="jdbc:mysql://localhost/
数据库名
username="
用户名
password="
密码
maxActive="100" //
最大连结数 
maxIdle="30" //
最大空闲时间,0为无限制 
maxWait="10000"/> //
建立连接的的最大等待时间


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值