Tomcat 6.0 中JNDI的使用

          今天本想配置JMS的JNDI时发现JNDI一直报错,所以就在Tomcat6.0 中配置一個简单的数据源检测是否JNDI正确.

在META-INF中配置Context.xml內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context  reloadable="true">
<Resource name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
  factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
  maxActive="100"
  maxIdle="30"
   maxWait="10000"
  username="root"
   password="123456"
  driverClassName="com.mysql.jdbc.Driver"       
  url="jdbc:mysql://localhost:3306/blog"/>
</Context>

其中:
name 表示指定的jndi名称
auth 表示认证方式,一般为Container
type 表示数据源床型,使用标准的javax.sql.DataSource
maxActive 表示连接池当中最大的数据库连接
maxIdle 表示最大的空闲连接数
maxWait 当池的数据库连接已经被占用的时候,最大等待时间
username 表示数据库用户名
password 表示数据库用户的密码
driverClassName 表示JDBC DRIVER
url 表示数据库URL地址

 

同时添加类库: tomcat-dbcp.jar ,mysql 类库即可.

创建JSP页面测试:

<%@ page language="java" import="javax.naming.*,javax.sql.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>My JSP 'index.jsp' starting page</title>
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
 
  <body>
    <%
      DataSource ds = null;
  try {
   Context ctx = new InitialContext();
   ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/mysql");
   out.println("datasource =" + ds);
  } catch (NamingException e) {
   e.printStackTrace();
  }
    %>
  </body>
</html>

;