关于Tomcat连接池建立连接异常问题!

epson1980 2005-02-17 02:23:20
1.通过http://localhost:8080/admin建立了一个名为aaa的JNDI的连接池;
2.在项目的web.xml上增加:
<resource-ref>
<res-ref-name>aaa</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3.写了一个测试的JSP;
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
DataSource ds = null;
try{
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/aaa");
System.out.println(ds);
Connection conn = ds.getConnection();
System.out.println(conn);
Statement stmt = conn.createStatement();
String strSql = " select * from tbTest";
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next())
{
System.out.println(rs.getString(1));
}
}
catch(Exception ex){
ex.printStackTrace();
}
%>

出现异常:
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'


看了别人的帖子:
换了一个Tomcat的版本 5.0.28,
还是会出先这个问题!

期待高手帮我看看!
不胜感激!!!
...全文
153 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
epson1980 2005-02-18
  • 打赏
  • 举报
回复
自己顶
epson1980 2005-02-17
  • 打赏
  • 举报
回复
帮帮忙了,上面的文件都全的!
可是调试看看!
epson1980 2005-02-17
  • 打赏
  • 举报
回复
我调了一天了,有高人会吗?
以梦为马 2005-02-17
  • 打赏
  • 举报
回复
新春愉快!
java_augur 2005-02-17
  • 打赏
  • 举报
回复
不同版本的tomcat配置文件形式是不同的。
强烈建议看相应版本文档。
Czh_cz 2005-02-17
  • 打赏
  • 举报
回复
gz
epson1980 2005-02-17
  • 打赏
  • 举报
回复
我的配置文件: (已将aaa改成了jdbc/test,test为数据库名称)
server.xml:
<?xml version='1.0' encoding='utf-8'?>
<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/test" 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/test">
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
<Service name="Catalina">
<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" 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="webapps" 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>
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
web.xml:
<web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<resource-ref>
<res-ref-name>jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
test.jsp:
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
DataSource ds = null;
try{
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/test");
System.out.println(ds);
Connection conn = ds.getConnection();
System.out.println(conn);
Statement stmt = conn.createStatement();
String strSql = " select * from tbTest";
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next()){
System.out.println(rs.getString(1));
}
}
catch(Exception ex){
ex.printStackTrace();
}
%>

以梦为马 2005-02-17
  • 打赏
  • 举报
回复
新春愉快!
kingliangzf 2005-02-17
  • 打赏
  • 举报
回复
根据名字去查找的时候没有找到,应该是ds=(DataSource)ctx.lookup("java:comp/env/aaa");这条语句出的问题,你看看你的配置文件的写法和语句中的一样不
java_augur 2005-02-17
  • 打赏
  • 举报
回复
I did the following to get up and running with Tomcat 5.5.4:
(Note that javatest was the name of my webapp, and javatestDB was the name of my database)

1) Copied "mysql-connector-java-3.0.16-ga-bin.jar" to "%CATALINA_HOME%\common\lib" (though I could have instead copied it to the "WEB-INF\lib" directory for my webapp if I didn't plan to use the driver across multiple applications.)

2) Added the following to my Java class:


InitialContext ic = new InitialContext();
ds = (DataSource)ic.lookup("java:comp/env/jdbc/javatestDB");
con = ds.getConnection();


3) Added the following within the "web-app" node of "WEB-INF/web.xml" (placing it at an appropriate location based on the DTD for web.xml files):


<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/javatestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


4) Added a "Resource" node within the "Context" node in %CATALINA_HOME%\conf\Catalina\localhost\javatest.xml:


<?xml version='1.0' encoding='utf-8'?>
<Context docBase="C:/eclipse/workspace/javatest" path="/javatest" reloadable="true" workDir="C:\eclipse\workspace\javatest\work">
<Resource auth="Container" name="jdbc/javatestDB" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" password="dbPassword" maxIdle="2" maxWait="5000" username="dbUsername" url="jdbc:mysql://localhost:3306/javatestDB?autoReconnect=true" maxActive="4"/>
</Context>


5) Restarted Tomcat

java_augur 2005-02-17
  • 打赏
  • 举报
回复
<Context path="/UserInfo" docBase="" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/UserDB"
auth="UserDB"
type="javax.sql.DataSource"
username="SYSDBA"
password="sdsdsdsd"
driverClassName="interbase.interclient.Driver"
url="jdbc:interbase://localhost//usr/opt/tomcat/webapps/database/main.g db"/>
</Context>

java_augur 2005-02-17
  • 打赏
  • 举报
回复
Here's what I did:
1. added resource-ref entry to web.xml

<resource-ref>
<description>DataSource for HR app</description>
<res-ref-name>jdbc/hrDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>



2. deployed WAR file to Tomcat

3. inside <tomcat_install_dir>\conf\Catalina\localhost\<my_app_context>.xml, I made sure that I had the
resource

entry in the file, which should have been populated upon deployment of the WAR file to Tomcat:

<Resource auth="Container" description="DataSource for HR app" name="jdbc/hrDS" type="javax.sql.DataSource" />



4. inside <tomcat_install_dir>\conf\Catalina\localhost\<context>.xml, I populated the
ResourceParams

like so:


<ResourceParams name="jdbc/hrDS">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value />
</parameter>
<parameter>
<name>url</name>
<value>jdbc:odbc:HRFORECAST</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>sun.jdbc.odbc.JdbcOdbcDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value />
</parameter>
</ResourceParams>
epson1980 2005-02-17
  • 打赏
  • 举报
回复
有人知道吗?
epson1980 2005-02-17
  • 打赏
  • 举报
回复
三个驱动程序在Tomcat的Common/lib下有了,在工程的web-inf/lib下也有了!
llshnshd 2005-02-17
  • 打赏
  • 举报
回复
是不是没有驱动程序啊?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧