错误提示:org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
%TOMCAT_HOME%/conf/server.xml、%APP_HOME%/WEB-INF/web.xml、
%TOMCAT_HOME%/conf/Catalina\localhost\xx.xml均已配置,
数据库sqlserver的sp4已打
用Class.forName()方式能够正常访问数据库
错误出在ds.getConnection();这一行,请问何解?
%TOMCAT_HOME%/conf/server.xml、%APP_HOME%/WEB-INF/web.xml、
%TOMCAT_HOME%/conf/Catalina\localhost\xx.xml均已配置,
数据库sqlserver的sp4已打
用Class.forName()方式能够正常访问数据库
错误出在ds.getConnection();这一行,请问何解?
<Server>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
<Resource name="jdbc/WebDB" type="javax.sql.DataSource"/>
<ResourceParams name="UserDatabase">
<parameter>
<name>factory</name>
<value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
</ResourceParams>
<ResourceParams name="jdbc/WebDB">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value>asdfgyuiop</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebDB</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="80" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
</Connector>
<Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
</Connector>
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="d:\java" name="localhost">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
</Host>
<Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>
</Service>
</Server>
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_4.xsd"
version="2.4"> <display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<!-- JSPC servlet mappings start --> <servlet>
<servlet-name>ywb</servlet-name>
<servlet-class>org.apache.jsp.index_jsp</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>ywb</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ywb</servlet-name>
<url-pattern>/index.htm</url-pattern>
</servlet-mapping><!-- JSPC servlet mappings end -->
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/WebDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
<Context displayName="LyBBS" docBase="test" path="/test" workDir="work\Catalina\localhost\test">
<ResourceLink global="jdbc/WebDB" name="jdbc/WebDB" type="javax.sql.DataSource"/>
</Context>
<%@page import="javax.naming.*"%>
<%@page import="javax.sql.*"%>
<%@page import="java.sql.*"%>
<%
Context ctx;
DataSource ds;
Connection cn;
Statement stm;
ResultSet rt;
try{
Context initCtx = new InitialContext();
ctx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource)ctx.lookup("WebDB");
if (ds!=null) out.println("aa<BR>");
cn = ds.getConnection("sa","asdfgyuiop");
out.println("bb<BR>");
stm = cn.createStatement();
rt = stm.executeQuery("select * from entry");
while(rt.next()){
out.println(rt.getString(1)+"<BR>");
}
rt.close();
stm.close();
cn.close();
}
catch(Exception e){
out.println(e);
}
%>
我这里的Resource和ResourceParams是在<Context></Context>之间定义的,而你的不是我在帮助文档上看到这样一句,你试试看!?
Add this in between the </Context> tag of the examples context and the </Host> tag closing the localhost definition
<Context path="/DBTest" docBase="DBTest"
debug="5" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/> <Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"/> <ResourceParams name="jdbc/TestDB">
以下和你一样,略
test.xml<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" displayName="research" docBase="f:/research/mobile" path="/test" reloadable="true">
<Resource name="research" type="javax.sql.DataSource"/>
<ResourceParams name="WebDB">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>500</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WebDB</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>500</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
</ResourceParams>
</Context>程序中访问就跟你说的一样的了!