折腾好几天的困扰了啊~~~请大家帮帮忙!!!
我的WEB文件夹名称是MyProject,以下是我的配置方法,请大家帮忙看看到底是哪里出问题了,总是提示org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 在TOMCAT文件夹server.xml下的<GlobalNamingResources></GlobalNamingResources>插入
<Resource name="jdbc/MyProject" type="javax.sql.DataSource" password="bnd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="bn" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyProject" maxActive="4"/>在<Context></Context>之中插入<ResourceLink global="jdbc/MyProject" name="jdbc/MyProject" type="javax.sql.DataSource"/>在conf\Catalina\localhost下建立MyProject.xml
内容是
<?xml version="1.0" encoding="UTF-8"?><Context>
<Resource
name="jdbc/MyProject"
type="javax.sql.DataSource"
password="bn"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="bn"
url="jdbc:microsoft:sqlserver://localhost;DatabaseName=jspdev"
maxActive="4"/> </Context>
我的WEB文件夹名称是MyProject,以下是我的配置方法,请大家帮忙看看到底是哪里出问题了,总是提示org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 在TOMCAT文件夹server.xml下的<GlobalNamingResources></GlobalNamingResources>插入
<Resource name="jdbc/MyProject" type="javax.sql.DataSource" password="bnd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="bn" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyProject" maxActive="4"/>在<Context></Context>之中插入<ResourceLink global="jdbc/MyProject" name="jdbc/MyProject" type="javax.sql.DataSource"/>在conf\Catalina\localhost下建立MyProject.xml
内容是
<?xml version="1.0" encoding="UTF-8"?><Context>
<Resource
name="jdbc/MyProject"
type="javax.sql.DataSource"
password="bn"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="bn"
url="jdbc:microsoft:sqlserver://localhost;DatabaseName=jspdev"
maxActive="4"/> </Context>
是对的吗?
顺便提供一下测试页面部分代码:
DataSource ds = null;
try{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
//从Context中lookup数据源。
ds = (DataSource)envCtx.lookup("jdbc/MyProject");
是msbase.jar mssqlserver.jar msutil.jar这三个文件吧?但是还是不行啊
补充一下,用其他方式连接数据库是没问题的,就是用连接池就总是会提示那个错误。
http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html帮推good luck
数据库建好,需要的jar包放到lib目录里咱就不说了
Jakarta-Commons DBCP
Jakarta-Commons Collections
Jakarta-Commons Pool
这三个包是必须的。当然还有你的驱动第一步。定义资源。呵呵资源就是data source了,这个是要在/conf/context.xml里面配置的
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>
因为是在server级配置的,所有要吧驱动放到/lib文件夹下
当然你可以不这么做,直接把这个文件放到项目的WEB-INF里面/webapps/$yourproject/WEB-INF现在你就已经有一个资源了。然后你要使用它要定义一个对它的引用。在web.xml里面定义
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>最后你要想获得DataSource的话就想下面这样写
DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/TestDB" );看好资源的别名叫做jdbc/TestDB但是你要lookup
java:/comp/env/jdbc/TestDB
D:\WebService\apache-tomcat-6.0.14\apache-tomcat-6.0.14\conf\server.xml <Context path="/springpool" docBase="springpool" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/mysql" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/hibernate_db"
username="root" password="123" maxActive="80" maxIdle="20"
maxWait="-1"/>
</Context>
注意:springpool指工程名,发布在路径D:\WebService\apache-tomcat-6.0.14\apache-tomcat-6.0.14\webapps
-------------------------------------------------------------------------------------------------------
第二步:在D:\WebService\apache-tomcat-6.0.18\lib下添加mysql-connector包.
mysql-connector-java-5.0.3-bin.jar
-------------------------------------------------------------------------------------------------------
第三步:修改web工程中web.xml文件,添加如下代码: <resource-ref>
<description>MySql Datasource</description>
<res-ref-name>jdbc/mysql</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-------------------------------------------------------------------------------------------------------
第四步:测试文件tomcat_pool.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/"; try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/mysql"); Connection con = null;
con = ds.getConnection();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from t_user"); while (rs.next()) {
out.println(rs.getString(1) + " "
+ rs.getString(2) + " "
+ rs.getString(3) + "<br>");
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
%><html>
<head>
<base href="<%=basePath%>">
<body>
This is my JSP page.
<br>
</body>
</html>
?xml version="1.0" encoding="UTF-8"?
>
<
Context
>
<
Resource
name="jdbc/quickstart"
type="javax.sql.DataSource"
password="123456"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="sa"
url="jdbc:microsoft:sqlserver://localhost;DatabaseName=quickstart"
maxActive="4"/
>
<
/Context
>
根据个人具体情况进行相应修改。