配置好了连接池为什么连不上(一个mm的菜问题之二) 一种情况是没有找到driver另一种情况使你的URL写的有问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我在server.xml中的配置是:<parameter><name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value></parameter><parameter><name>url</name><value>jdbc:oracle:oci8:@(description=(address=(host=16.1.1.73)(protocol=tcp)(port=1521))(connect_data=(sid=fanmiss)))</value> </parameter>oracle的驱动classes12.jar放在了/common/lib目录下classes12.jar是oracle\jdbc\目录下的classes12.zip改名而来,oracle版本是8.1.7 应该没有问题的!看看你的oracle客户端配好了吗? 出现“No suitable driver”这种问题,一是你的driver没有找到,或者是connection的url不对,或者是你的oracle客户端没有配好,你检查一下这3点。 数据库服务器和servelet容器载同一台机子上还用陪客户端吗?不用吧?是驱动器没有找到,又不是服务名没有找到。在这个过程中我也遇到同样的问题。驱动器class12.zip好像不能直接改名class12.jar,否则,在tomcat4。1和jdk1。4环境下并不能找到这个驱动程序类,我是直接用创建连接的方式来验证的。解压后把里面的sql包删掉,再用 jar命令生成class12.jar.放在common/lib下面,但是在使用连接池的连接时还是遇到了和你一样的问题。提示为“ cannot load jdbc driver 'null'”表明时没有找到驱动程序,实际上面我也说了class12.jar在common/lib下面,而且自己创建连接也可以访问数据库,表明驱动程序在它应该在的地方。可能是server.xml的配置不对,但是我是看了tomcat的文档和很多其他的资料后配置的,不知道原因在那里。有没有配置成功的提供一点心得?我的配置如下: <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true"/> <!-- <Context path="/ROOT" docBase="ROOT" debug="0"/> --> <Context path="" docBase="d:\yqk" reloadable="true" debug="0" privileged="true"/> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_yqk_log." suffix=".txt" timestamp="true"/> <Resource name="jdbc/OracleDB" auth="Container" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/OracleDB"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@128.0.93.126:1521:war</value> </parameter> <parameter> <name>username</name> <value>ddd</value> </parameter> <parameter> <name>password</name> <value>ddd</value> </parameter> <parameter> <name>maxActive</name> <value>10</value> </parameter> <parameter> <name>maxIdle</name> <value>4</value> </parameter> <parameter> <name>maxWait</name> <value>10000</value> </parameter> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <value>60</value> </parameter> <parameter> <name>logAbandoned</name> <value>true</value> </parameter> </ResourceParams> <!-- Tomcat Examples Context --> <Context path="/examples" docBase="examples" debug="0" reloadable="true" crossContext="true"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_examples_log." suffix=".txt" timestamp="true"/> <Ejb name="ejb/EmplRecord" type="Entity" home="com.wombat.empl.EmployeeRecordHome" remote="com.wombat.empl.EmployeeRecord"/> <Environment name="maxExemptions" type="java.lang.Integer" value="15"/> <Parameter name="context.param.name" value="context.param.value" override="false"/> <Resource name="mail/Session" auth="Container" type="javax.mail.Session"/> <ResourceParams name="mail/Session"> <parameter> <name>mail.smtp.host</name> <value>localhost</value> </parameter> </ResourceParams> <ResourceLink name="linkToGlobalResource" global="simpleValue" type="java.lang.Integer"/> </Context>另外在我自己的yqk/Web-inf/web.xml中如下配置:<web-app> <servlet> <servlet-name>downloadservlet</servlet-name> <servlet-class>javazoom.download.DownloadServlet</servlet-class> <init-param> <param-name>beanid</param-name> <param-value>downloadbean</param-value> </init-param> <init-param> <param-name>configfile</param-name> <param-value>conf/folder.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>downloadservlet</servlet-name> <url-pattern>/download/*</url-pattern> </servlet-mapping> <resource-ref> <description>Oracle Datasource example</description> <res-ref-name>jdbc/OracleDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth></resource-ref></web-app> 另外测试文件如下: Context initCtx = new InitialContext(); Context ctx = (Context) initCtx.lookup("java:/comp/env"); //获取连接池对象 // System.err.println(ctx); Object obj = (Object) ctx.lookup("jdbc/OracleDB"); // System.err.println(obj.toString()); //类型转换 javax.sql.DataSource ds = (javax.sql.DataSource)obj;// System.err.println("ds"); Connection conn = ds.getConnection(); System.err.println("conn");//不能运行到这里 Statement stmt = conn.createStatement(); String strSql = " select distinct(xinghao) from newinstzb "; ResultSet rs = stmt.executeQuery(strSql); if(rs.next()){ out.println(rs.getInt(1)); } }catch(Exception ex){ out.println(ex.toString()); ex.printStackTrace(); // throw new SQLException("cannot get Connection pool this.");错误::java.sql.SQLException: Cannot load JDBC driver class 'null' http://expert.csdn.net/Expert/topic/1845/1845764.xml?temp=.3689844这里有,看看说不定有帮助 http://www.zdnet.com.cn/developer/code/story/0,2000081534,39134180,00.htm,说得很详细的 我用的Tomcat版本是4.0。是不是4.0里不叫url,而叫driverName呢? 正确,4。0确实不叫url,而叫driverName 如何给html textarea文本域动态添加数据。 求解月底结算功能 JAVA WEB开发怎么使用Red5和FFMpeg搭建在线Flash流媒体分享平台 ●查看源码无效●的这个功能是如何实现的。 有想法的近来侃侃 STRUTS问题 struts中<html:text>标签的问题,请求解答 拜托了 妈的,今天新申请的帐号,现在只有50分了! 求助:JDK1.3怎么用JDK1.4的两个方法。 请教:jdbc 连线管理 哪位高手会JSP+ORACLE分页? 大家帮我看看这一小段代码? 快点啊,我急需帮助,解决立即揭贴.
<value>oracle.jdbc.driver.OracleDriver</value></parameter>
<parameter><name>url</name>
<value>jdbc:oracle:oci8:@(description=(address=(host=16.1.1.73)(protocol=tcp)(port=1521))(connect_data=(sid=fanmiss)))</value>
</parameter>oracle的驱动classes12.jar放在了/common/lib目录下
classes12.jar是oracle\jdbc\目录下的classes12.zip改名而来,oracle版本是8.1.7
看看你的oracle客户端配好了吗?
提示为“ cannot load jdbc driver 'null'”表明时没有找到驱动程序,实际上面我也说了class12.jar在common/lib下面,而且自己创建连接也可以访问数据库,表明驱动程序在它应该在的地方。可能是server.xml的配置不对,但是我是看了tomcat的文档和很多其他的资料后配置的,不知道原因在那里。有没有配置成功的提供一点心得?我的配置如下:
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/> <!--
<Context path="/ROOT" docBase="ROOT" debug="0"/>
-->
<Context path="" docBase="d:\yqk"
reloadable="true" debug="0" privileged="true"/>
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_yqk_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/OracleDB" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/OracleDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@128.0.93.126:1521:war</value>
</parameter>
<parameter>
<name>username</name>
<value>ddd</value>
</parameter>
<parameter>
<name>password</name>
<value>ddd</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
</ResourceParams>
<!-- Tomcat Examples Context -->
<Context path="/examples" docBase="examples" debug="0"
reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_examples_log." suffix=".txt"
timestamp="true"/>
<Ejb name="ejb/EmplRecord" type="Entity"
home="com.wombat.empl.EmployeeRecordHome"
remote="com.wombat.empl.EmployeeRecord"/>
<Environment name="maxExemptions" type="java.lang.Integer"
value="15"/>
<Parameter name="context.param.name" value="context.param.value"
override="false"/>
<Resource name="mail/Session" auth="Container"
type="javax.mail.Session"/>
<ResourceParams name="mail/Session">
<parameter>
<name>mail.smtp.host</name>
<value>localhost</value>
</parameter>
</ResourceParams>
<ResourceLink name="linkToGlobalResource"
global="simpleValue"
type="java.lang.Integer"/>
</Context>另外在我自己的yqk/Web-inf/web.xml中如下配置:
<web-app>
<servlet>
<servlet-name>downloadservlet</servlet-name>
<servlet-class>javazoom.download.DownloadServlet</servlet-class>
<init-param>
<param-name>beanid</param-name>
<param-value>downloadbean</param-value>
</init-param>
<init-param>
<param-name>configfile</param-name>
<param-value>conf/folder.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>downloadservlet</servlet-name>
<url-pattern>/download/*</url-pattern>
</servlet-mapping>
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref></web-app>
另外测试文件如下:
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:/comp/env");
//获取连接池对象
// System.err.println(ctx);
Object obj = (Object) ctx.lookup("jdbc/OracleDB");
// System.err.println(obj.toString());
//类型转换
javax.sql.DataSource ds = (javax.sql.DataSource)obj;
// System.err.println("ds");
Connection conn = ds.getConnection();
System.err.println("conn");
//不能运行到这里
Statement stmt = conn.createStatement();
String strSql = " select distinct(xinghao) from newinstzb ";
ResultSet rs = stmt.executeQuery(strSql);
if(rs.next()){
out.println(rs.getInt(1));
}
}catch(Exception ex){
out.println(ex.toString());
ex.printStackTrace();
// throw new SQLException("cannot get Connection pool this.");错误::
java.sql.SQLException: Cannot load JDBC driver class 'null'
这里有,看看说不定有帮助