(求助)Tomcat配置连接池问题?迷惑~~(在线等)

Strawberry79 2004-03-25 01:26:36
配置tomcat5的连接池过程如下(Oracle):
1、我将Oracle驱程classes12.jar考到xxx\WEB-INF\lib下
2、在tomcat5的管理界面下配置,参照http://expert.csdn.net/Expert/topic/2862/2862322.xml?temp=.9007532上的方法
3、在jsp文件中测试代码如下:
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>

<html>
<head>
<title></title>
</head>
<body>
<%
DataSource ds = null;
try{

InitialContext ctx=new InitialContext();
out.println("1、IntialContext success~!"+"<br>");
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/oracle");
out.println("2、datasource is success~!"+"<br>");
Connection conn = ds.getConnection();
out.println("3、Connection is OK~!"+"<br>");
Statement stmt = conn.createStatement();

String strSql = " select * from jiveid";
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next()){
out.println(rs.getString(2));
}
}
catch(Exception ex){
ex.printStackTrace();
out.println(ex);
}
%>
</body>
</html>

显示错误信息如下:
1、IntialContext success~!
2、datasource is success~!
java.sql.SQLException: Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDrive'

当程序执行到Connection conn = ds.getConnection();的时候,出现上述错误?
我已经把驱程拷到该web应用的WEB-INF/lib下了,为何还是找不到呢?
...全文
67 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Strawberry79 2004-03-26
  • 打赏
  • 举报
回复
看过了,就是照着这个做的,连接池已经没有问题了,把连接数据库部分写到bean中,在JSP布中调用也没问题,就是加个main函数单独调试bean的时候出现错误~!:(
CoolAbu 2004-03-26
  • 打赏
  • 举报
回复
看看下面这个
http://www.csdn.net/Develop/read_article.asp?id=25942
CodingPCPiG 2004-03-26
  • 打赏
  • 举报
回复
关注
Strawberry79 2004-03-26
  • 打赏
  • 举报
回复
OK,明白了,类里面不能调试就算了吧,只要能用就行~!太感谢指点迷津~!:~)
duan123 2004-03-26
  • 打赏
  • 举报
回复
你没有理解问题的本质(对不起)

只要你在tomcat环境下使用,无论struts,webwork,还是其他框架


都没有关系

跟框架无关,只跟运行环境有关
duan123 2004-03-26
  • 打赏
  • 举报
回复
当然可以
Strawberry79 2004-03-26
  • 打赏
  • 举报
回复
自已写一个?我明白了,我在struts中可以使用tomcat的连接池吗?真有点怀疑了~!

非常感谢duanyuxy123(这几年)的帮助
duan123 2004-03-26
  • 打赏
  • 举报
回复
这就对了,连接池的实现是tomcat本身的dbcp,加以个main 就不属于tomcat的了,如果要用的话,可以自己写一个,


只要是tomcat环境应用程序,你的调用就没有问题

Strawberry79 2004-03-25
  • 打赏
  • 举报
回复
up~!
Strawberry79 2004-03-25
  • 打赏
  • 举报
回复
这句话试试javax.naming.factory.initial属性到底是不是空,程序中应该没有这个的,是我为了测试加上的,我现在发现因为类中缺少了这个属性的定义,所以在才不能运行成功~!
但把这个类文件做成一个bean通过jsp调用就可以了,就是因为tomcat肯定对这个东西做了定义~!所以JSP页才不报错.
总之在类中使用tomcat数据源,就存在这个问题~!
duan123 2004-03-25
  • 打赏
  • 举报
回复
去掉不行?
duan123 2004-03-25
  • 打赏
  • 举报
回复
String initial = System.getProperty("javax.naming.factory.initial");


什么意思?


去掉不行
Strawberry79 2004-03-25
  • 打赏
  • 举报
回复
代码如下:
package struts;

import javax.naming.*;
import javax.sql.*;
import java.sql.*;


public class DBTest {

public static void main(String[] args) {
DBTest test =new DBTest();
test.init();
System.out.println(test.getFoo());
}

public void init() {

try{
Context ctx = new InitialContext();

String initial = System.getProperty("javax.naming.factory.initial");

if(ctx == null )
throw new Exception("Boom - No Context");

DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");

if (ds != null) {
Connection conn = ds.getConnection();

if(conn != null) {
foo = "Got Connection "+conn.toString();
Statement stmt = conn.createStatement();
ResultSet rst = stmt.executeQuery("select * from jiveid");
if(rst.next()) {
foo=rst.getString(2)+initial+"mmmm";
bar=rst.getInt(1);
}
conn.close();
}
}
}catch(Exception e) {
e.printStackTrace();
}
}

public String getFoo() { return foo; }
public int getBar() { return bar;}

String foo = "";
int bar = -1;
}
一调试就出现上面的错,这样的话在其它类中也无法引用:(
Strawberry79 2004-03-25
  • 打赏
  • 举报
回复
这么写,在JSP中调用这个类是没有问题,但单独调试这个类,就不行了~!还是上面的问题,感觉javax.naming.factory.initial好像要定义一下,因为Tomcat已经缺省定义了,所以在jsp中定义时没有问题,怎么办?
duan123 2004-03-25
  • 打赏
  • 举报
回复
Context ctx=new InitialContext();



DataSource ds=(DataSource)ctx.lookup("java:comp/env/数据源名称");


这样不会出现问题的
Strawberry79 2004-03-25
  • 打赏
  • 举报
回复
我把程序移到了JAVA文件中,执行到这句的时候 Context envCtx = (Context)ctx.lookup("java:comp/env");

就出现了下面的错误:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial


请问这是什么意思??
Strawberry79 2004-03-25
  • 打赏
  • 举报
回复
谢谢 duanyuxy123(这几年) ,我找到问题了,原来是我配连接池的时候JDBC driver class的串中出现了错误,当然在包中就找不到了~!真是不好意思!
duan123 2004-03-25
  • 打赏
  • 举报
回复
把web-inf\lib下的删掉


一定要重启 保留tomcat\common\lib下的驱动
Strawberry79 2004-03-25
  • 打赏
  • 举报
回复
可是tomcat\common\lib我早就放进去了,否则连数据源方式的也连不上,所以我才奇怪,为什么换成了连接池,就找不到了呢??
请高手解惑~~!@@
duan123 2004-03-25
  • 打赏
  • 举报
回复
我试过好多次,绝对好用
加载更多回复(3)

67,512

社区成员

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

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