各位大侠帮帮忙,我在做Tomcat6.0下数据库连接池测试,但每次抛出异常:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'
我做的流程是:
首先,修改tomcat_Home/conf/context.xml文件,在<Context></Context>之间添加如下
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="sa"
password="aaa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs" />
2. 在tomcat6\webapps创建测试工程ch3,修改ch3\WEB-INF中web.xml,在<web-app></web-app>中添加如下
<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>
3. 在WEB-INF中创建lib文件夹,并将sqlserver三个驱动msbase.jar/mssqlserver.jar/msutil.jar拷贝其中。同时将这三个lib文件拷贝至tomcat_Home/lib文件夹下。
4. 编写Servlet测试连接是否成功
import java.io.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import javax.servlet.*;
import javax.servlet.http.*;public class jdbctest extends HttpServlet
{
/*连接数据库的属性*/
String dbDriver;
String dbURL;
String dbUsername;
String dbPassword;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
try
{
out.println("初始化中......");
Context initCtx = new InitialContext();
Context envctx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envctx.lookup("jdbc/TestDB");
if(ds == null)
out.println("获得DataSource失败!");
else
out.println("获得DataSource成功!");
out.println("<br>");
Connection con = ds.getConnection();
if(con == null)
out.println("连接数据库失败!");
else
out.println("连接数据库成功!");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from TM3_SERVICES");
out.println("以下是从数据库中获得的数据......");
while(rs.next())
{
out.println(rs.getString(6));
out.println("<br>");
}
}catch(Exception e)
{
e.printStackTrace();
}
}}
我做的流程是:
首先,修改tomcat_Home/conf/context.xml文件,在<Context></Context>之间添加如下
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="sa"
password="aaa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs" />
2. 在tomcat6\webapps创建测试工程ch3,修改ch3\WEB-INF中web.xml,在<web-app></web-app>中添加如下
<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>
3. 在WEB-INF中创建lib文件夹,并将sqlserver三个驱动msbase.jar/mssqlserver.jar/msutil.jar拷贝其中。同时将这三个lib文件拷贝至tomcat_Home/lib文件夹下。
4. 编写Servlet测试连接是否成功
import java.io.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import javax.servlet.*;
import javax.servlet.http.*;public class jdbctest extends HttpServlet
{
/*连接数据库的属性*/
String dbDriver;
String dbURL;
String dbUsername;
String dbPassword;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
try
{
out.println("初始化中......");
Context initCtx = new InitialContext();
Context envctx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envctx.lookup("jdbc/TestDB");
if(ds == null)
out.println("获得DataSource失败!");
else
out.println("获得DataSource成功!");
out.println("<br>");
Connection con = ds.getConnection();
if(con == null)
out.println("连接数据库失败!");
else
out.println("连接数据库成功!");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from TM3_SERVICES");
out.println("以下是从数据库中获得的数据......");
while(rs.next())
{
out.println(rs.getString(6));
out.println("<br>");
}
}catch(Exception e)
{
e.printStackTrace();
}
}}
解决方案 »
- SSH下重写sqlserver方言后无法创建载驱动
- org.springframework.beans.factory.BeanDefinitionStoreException
- jsp导出到word
- 这两个页面哪儿不一样,为什么不能上传
- 偶j2se学的不是好,现在培训班要上j2ee了,j2se与j2ee之间的具体关联是怎么样的啊??谢谢
- 急:使用IBM的JDK为什么不能识别GBK编码?
- 求高手看看<s:iterator>有什么问题
- 神州数码(深圳)公司面试归来
- 请问关于Socket类的简单问题。
- 如何安装配置JBoss 4 ,还需要安装Tomcat么
- 有个超链接 像点击提交到一个servlet
- hibernate merge的怪问题,返回值中的主键消失了。
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
version="2.5"> <servlet>
<servlet-name>testStatus</servlet-name>
<servlet-class>jdbctest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testStatus</servlet-name>
<url-pattern>/undeploy/he.html</url-pattern>
</servlet-mapping> <description>SQL2000 Test App</description>
<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>
</web-app>
<Resource
name="..."
type="javax.sql.DataSource"
password="sa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="sa"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=..."
maxActive="4"/>
server.xml
web.xml
该一致的地方要保持一致
<Resource
name="jdbc/..."
type="javax.sql.DataSource"
password="sa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="sa"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=..."
maxActive="4"/>
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="sa"
password="aaa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs" />
但还是不行啊,还是抛异常org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:766)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at jdbctest.doGet(jdbctest.java:34)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:760)各位大侠 帮帮忙 小弟我不胜感激!!!! 谢谢
改成这种方式试试 :
url="jdbc:microsoft:sqlserver://localhost:1433/pubs;user=sa;password=aaa" />
看看