关于tomcat连接池的配置问题

zhao_sh 2003-10-10 12:57:06
我的环境是:
Tomcat/4.1.24
j2sdk1.4.2
window2000server
出现如下错误:
Name java:comp is not bound in this Context

jsp文件如下:
<%@ page contentType="text/html;charset=GBK"%>

<%@ page import= "javax.sql.*" %>
<%@ page import= "javax.naming.* "%>
<%@ page import= "java.sql.*" %>

<%
try{
Context initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup("java:comp/env");
Object obj = (Object) ctx.lookup("JDBC/mySqlSvr");
//Object obj = (Object) initCtx.lookup("java:comp/env/JDBC/mySqlSvr");
javax.sql.DataSource ds = (javax.sql.DataSource)obj;

Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String strSql = "select * from BS_test";
ResultSet rs = stmt.executeQuery(strSql);
if(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2));
}

}catch(Exception e){
out.println(e.getMessage());
}
%>
<hr>

如我不用连接池就能访问成功。
...全文
146 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinahaha 2004-01-08
  • 打赏
  • 举报
回复
up
xinchangpeng 2003-10-26
  • 打赏
  • 举报
回复
你看看这篇文章
http://expert.csdn.net/Expert/topic/2390/2390998.xml?temp=.1675226
op2618 2003-10-26
  • 打赏
  • 举报
回复
up
hellowcheng 2003-10-25
  • 打赏
  • 举报
回复
我顶~~~~~~~~~~
yaray 2003-10-25
  • 打赏
  • 举报
回复
Object obj = (Object) ctx.lookup("JDBC/mySqlSvr"); <===

<Resource name="jdbc/mysqlsvr" <===
scope="Shareable" auth="Container" type="javax.sql.DataSource"/>
yaray 2003-10-25
  • 打赏
  • 举报
回复
Studying.....
llaabb 2003-10-25
  • 打赏
  • 举报
回复
最后,请注意
1 <res-ref-name>JDBC/mySqlSvr</res-ref-name>与<Resource name="JDBC/mySqlSvr" auth="Container" type="javax.sql.DataSource"/>,Object obj = (Object) ctx.lookup("JDBC/mySqlSvr"); 与<ResourceParams name="JDBC/mySqlSvr">的名称是相同的
2 别忘了那三个驱动文件需要考到tomcat_home\common\lib目录下
3 连接数据库的用户不要用sa,因为它的默认数据库一般不是你要连接的数据库,新创建一个用户,它的权限是系统管理员,默认数据库是你要连接的数据库,在server.xml用它来连接
这样就可以用连接池了
llaabb 2003-10-25
  • 打赏
  • 举报
回复
其次第二步,配置你的WEB-INF里的web.xml,用以下代码替换
<resource-ref>
<res-ref-name>JDBC/mySqlSvr</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
llaabb 2003-10-25
  • 打赏
  • 举报
回复
首先第一步:配置server.xml文件,用以下的代码替换你的server.xml中相应的部分,比如用户名之类的要改成你自己的
<Context path="/YourPath" docBase="YourProject" debug="0" crossContext="true">
<Resource name="JDBC/mySqlSvr" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="JDBC/mySqlSvr">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>username</name>
<value>your_user</value>
</parameter>
<parameter>
<name>password</name>
<value>your_psw</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;databaseName=your_dbname</value>
</parameter>
<parameter>
<name>driverName</name>
<value>jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=cursor;databaseName=your_dbname</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>60</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>30</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
</ResourceParams>
</Context>
zhao_sh 2003-10-10
  • 打赏
  • 举报
回复
配置如下:
server.xml
<Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" docBase="c:\myApp" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/myApp" privileged="false" reloadable="true" swallowOutput="false" useNaming="false" wrapperClass="org.apache.catalina.core.StandardWrapper">
<Manager className="org.apache.catalina.session.StandardManager" algorithm="MD5" checkInterval="30" debug="0" duplicates="0" expiredSessions="4" maxActive="2" maxActiveSessions="-1" maxInactiveInterval="1800" pathname="SESSIONS.ser" randomClass="java.security.SecureRandom" rejectedSessions="0" sessionCounter="3">
</Manager>
<Resource name="jdbc/mysqlsvr" scope="Shareable" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/mysqlsvr">
<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>10</value>
</parameter>
<parameter>
<name>password</name>
<value>ss</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://husheng:1433;DatabaseName=internalMarket</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>
</Context>

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<resource-ref>
<description>SqlServer Datasource example</description>
<res-ref-name>jdbc/mysqlsvr</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

<servlet>
<servlet-name>TestRequest</servlet-name>
<servlet-class>seqlSoft.test.TestRequest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestRequest</servlet-name>
<url-pattern>/TestRequest</url-pattern>
</servlet-mapping>
</web-app>
zhao_sh 2003-10-10
  • 打赏
  • 举报
回复
怎么没人回答?

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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