tomcat6 + oracle9i 的数据源配置

tomcat6 + oracle9i 的数据源配置

很少写技术文章,但网上关于tomcat6.x的数据源配置没有一个让我满意的答案,希望能对别人有所帮助,另外也算是对我忙活这一晚上的纪念。
网上搜出来的文章很多是tomcat5.x及以前的方法,比如更改conf/server.xml。还有,从tomcat6开始,安装包里已经没有admin控制台了,比如输入http://localhost:8080/admin 显示的网页会提示你需要另外安装admin包。官方网站上能找到的admin只有5.x版本的,我参照一篇文章的做法安装并配置后,仍然是不行,显示的是空白网页,所以没有办法用图形界面的方法配置数据源了。
其实最权威的方法无疑是官方的,我按照官方网页上的指示进行配置,一次就成功了,而且很简单。另外需要说明的是,以下方法对于Oracle8i和10g同样适用。
下面是配置的具体步骤:
1、将ora92\jdbc\lib中的classes12.jar拷贝到Tomcat 6.0\lib中,注意一定要是jar文件而不能是zip
2、将下面这段代码加到Tomcat 6.0\conf\context.xml中
<Resource name="jdbc/myoracle" auth="Container"
               type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
               url="jdbc:oracle:thin:@127.0.0.1:1521:mydb"
               username="name" password="psw" maxActive="20" maxIdle="10"
               maxWait="-1" removeAbandoned="true" removeAbandonedTimeout="60"
               logAbandoned="true"/>
其中最后三项是优化用的,可以不写。"jdbc/myoracle"是数据源名称,可变。从9i以后,driverClassName推荐使用"oracle.jdbc.OracleDriver"而不是"oracle.jdbc.driver.OracleDriver",因为后者将会在Oracle以后的版本中淘汰。thin是Oracle提供的两种JDBC驱动程序的一种,另一种是oci。一般来说远程访问数据库用thin,服务器端开发的数据库连接用oci,这里用thin就是了。mydb是数据库名,name和psw是登陆数据库的帐号和密码。
3、在建立的一个web project中,在Tomcat 6.0\webapps\ProjectName\WEB-INF\web.xml中添加
  <resource-ref>
  <description>Oracle Datasource example</description>
  <res-ref-name>jdbc/myoracle</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  </resource-ref>
4、配置就完成了,下面用一个jsp文件进行测试:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<html><head><title>Oracle JDBC Test</title></head>
<body>
<%
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try{
 Context initCtx = new InitialContext();
 Context envCtx = (Context)initCtx.lookup("java:comp/env");
 DataSource ds=(DataSource)envCtx.lookup("jdbc/myoracle");
 if(ds!=null){
  out.println("Get DataSource!");
  out.println(ds.toString());
  conn=ds.getConnection();
  if(conn!=null){
   out.println("Create connection !");
   stmt=conn.createStatement();
   out.println("Create Statement !");
   rs=stmt.executeQuery("select * from person");
   while(rs.next()){
        out.println(rs.getString("name"));
   }
   out.println("</table>");
   rs.close();
   stmt.close();
   conn.close();
  }
 }
}catch(Exception e){
out.println(e.toString());
System.out.println(e.toString());
}
%>
</body>
</html>
person是一个表,name是一列名。

posted on 2008-03-19 15:38 白露 阅读(416) 评论(0)  编辑  收藏 所属分类: J2EE技术

<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

留言簿(1)

文章分类

文章档案

搜索

最新评论