您的位置:首页 > 编程语言 > Java开发

Java用context.xml连接数据库

2016-04-20 15:41 344 查看
本文转载于:http://haidii.iteye.com/blog/373087

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

 context.xml

Xml代码  


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

<Context path="/">  

    <Resource  

      name="myDS"  

      type="javax.sql.DataSource"  

      driverClassName="oracle.jdbc.driver.OracleDriver"  

      maxIdle="2"  

      maxWait="5000"  

      username="test"   

      password="pwd"  

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

      maxActive="4"/>  

 <!--name:DataSource的名称-->  

 <!--type:数据源对应的java类型,一般设计为javax.sql.DataSource-->  

 <!--username:数据库登陆名-->  

 <!--password:数据库登陆密码-->  

 <!--driverClassName:指定数据库JDBC驱动程序-->  

 <!--url:指定数据库的URL-->  

 <!--maxIdle:连接池处于空闲状态的数据库连接的最大数目,取0表示不受限制-->  

 <!--maxWait:连接池中数据库连接处于空闲状态的最长时间(以毫秒为单位),取0表示无限制等待时间-->  

 <!--maxActive:连接池处于活动状态的数据库连接的最大数目,去0表示不受限制-->  

   

</Context>   

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

index.jsp

Jsp代码  


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

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

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

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

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

<html>  

    <head>  

    </head>  

    <body>  

        <%  

Context initContext = new InitialContext();  

Context envContext = (Context) initContext.lookup("java:/comp/env");  

DataSource db = (DataSource)envContext.lookup("myDS");  

//javablogorl为<Resource>元素中name属性的值  

Connection conn = db.getConnection( );  

Statement stmt = conn.createStatement();  

ResultSet rs = stmt.executeQuery("SELECT * FROM test");  

while(rs.next()){  

out.print(rs.getString("id")+" ");  

out.print(rs.getString("name")+"<br>");  

}  

rs.close();  

stmt.close();  

conn.close();  

%>  

    </body>  

</html>  

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

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

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

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

Xml代码  


<Context path="/myWeb" docBase="D:\workspace\myWeb\WebRoot" reloadable="true" debug="0"></Context>  

 

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

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

Xml代码  


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

<Context  

    docBase="D:/workspace/myExt/WebRoot"  

    reloadable="true">  

  <Resource  

    name="myDS"  

    type="javax.sql.DataSource"  

    maxActive="4"  

    maxIdle="2"  

    username="test"  

    maxWait="5000"  

    driverClassName="oracle.jdbc.driver.OracleDriver"  

    password="pwd"  

    url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>  

</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、首先,将数据库的驱动程序copy到tomcat6.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"

通过java的jndi就可以了

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"/> //建立连接的的最大等待时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 数据库 xml oracle