以前中练习时,遇到使用连接池时没有怎么在意觉得还是比较容易,没有很在意,觉得就是那个几个的配置问题简单的很!!!
这次做博客系统的时候,觉得开始用连接池。可是当我把所有的配置都配置好后,开始验证的时候,就出现了一系列的问题,其中一个最让我纠结的文件就是这个javax.naming.NoInitialContextException。这是尼玛错误
??纠结了我起码三个小时都没有解决,哎。。。
悲剧!!!上网查资料,到论坛上提问,都没有解决!!!
等过了一会儿,我突然脑中灵光一闪,既然java代码中不可以,那jsp中呢??等我在jsp中尝试的时候又遇到了Cannot load JDBC driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver'这个错误??为什么找不到驱动??我这里明明已经把该驱动复制到WEB-INF/lib中了啊??为什么还有错误呢??想不通!!然后又百度??找到了答案,要把该驱动复制到tomcat目录的lib下!!哎。。终于可以了!!感谢上帝!!感谢百度!!!!
下面是关于在 tomcat 6.0中的使用连接池的相关的配置!!!
一般可以这三个文件中可以配置:tomcat目录下的conf/context.xml、server.xml和webapps/app../META-INF/context.xml中进行配置:
<Context reloadable="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/server"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databaseName=blog"
username="sa"
password="SQL2005"
maxActive="100"
maxIdle="30"
maxWait="10000" />
</Context>
然后是web.xml中的配置:
<resource-ref>
<description>DBConnection</description>
<res-ref-name>jdbc/server</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
注意:在web.xml中的<res-ref-name>中的值要和Resource中的name的名字一样
最后是测试代码了:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="javax.naming.*"%>
<%@page import="javax.sql.DataSource"%>
<html>
<head>
<title>Tomcat Connection Pool Test</title>
</head>
<body>
<%
try {
Context ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/server");
Connection conn = ds.getConnection();
out.println(conn);
conn.close();
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
%>
</body>
</html>
由于在Tomcat中配置了数据源,可以通过(DataSource)envCtx.lookup(
''java:/comp/env/jdbc")来查找这个资料源。查找到这个资料源,就可以通过Connection conn = ds.getConnection()的方法来获得一个到数据库的连接。
在这里测试代码一定要在jsp中使用
同时并在tomcat的lib下和WebRoot/WEB-INF/lib下加入上驱动文件
Tomcat配置时连接池驱动包必须放在tomcat目录下的lib里。这是因为Tomcat连接池是在Tomcat启动时就创建了,那里还没有加载项目里的驱动包。