我用的是Tomcat5.5,数据源配置与代码应该都没问题但是连不上数据源这是为什么?急!!

2010-02-23 03:39:20
null
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
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.ccit.xyy.util.DBUtils.init(DBUtils.java:34)
at com.ccit.xyy.util.DBUtils.<init>(DBUtils.java:21)
at com.ccit.xyy.util.DBUtils.main(DBUtils.java:77)
com.ccit.xyy.util.DBUtils@61de33


package com.ccit.xyy.util;

import java.sql.SQLException;

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

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
/**
* @author XYY
* @创建时间 2010年02月20日21点05分
* @version 1.1
* @描述 连接数据库,使用数据源
* @类名 DBUtils
*/
public class DBUtils {
private DataSource ds = null;

public DBUtils() {
init();
}

/**
* 初始化一个数据源
*/
private void init() {
try {
/*Hashtable env=new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"");
env.put(Context.PROVIDER_URL,"");*/
Context context = new InitialContext();
System.out.println(ds);
ds = (DataSource) context.lookup("java:/comp/env/jdbc/ccitDS");
System.out.println(ds);
} catch (NamingException e) {
e.printStackTrace();
}
}

/**
* 数据库更新 增、删、改
* @param sql sql语句
* @param pamas String[] 参数
* @return boolean 操作成功返回 true,失败返回 false
*/
public boolean update(String sql, String[] pamas) {
QueryRunner qr = new QueryRunner(ds);
int result = 0;
try {
result = qr.update(sql, pamas);
} catch (SQLException e) {
e.printStackTrace();
}
return result != 0;
}

/**
* 数据库查询
* @param sql String sql语句
* @param pama String[] 参数
* @param rsh ResultSetHandler 结果集
* @return Object 查到的结果
*/
public Object query(String sql, String[] pama, ResultSetHandler rsh) {
QueryRunner qr = new QueryRunner(ds);
Object result = null;
try {
result = qr.query(sql, pama, rsh);
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {

System.out.println(new DBUtils());
}
}
下面是数据源配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
auth="Container"
name="jdbc/xyy_ccitDS"
type="javax.sql.DataSource"
password="ccitora"
driverClassName="oracle.jdbc.driver.OracleDriver"
maxIdle="10"
maxWait="10000"
removeAbandoned="true"
logAbandoned="true"
username="ccitora"
url="jdbc:oracle:thin:@192.168.10.10:1521:oratest"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
maxActive="30"
removeAbandonedTimeOut="1800000"/>
</Context>

注: 相应的驱动jar包我也放到tmocat的common\lib下了
高手们快来帮忙啊!!
...全文
76 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
2010-02-23
  • 打赏
  • 举报
回复
谢谢 sggsg 问题已经解决了。
钱不是问题 2010-02-23
  • 打赏
  • 举报
回复
引用 9 楼 xyylove520 的回复:
6楼你的意思是 我要在jsp页面中调用这个方法才可以么?
启动tomcat后 在myeclipse里 run一下这个方法是不可以的么?

是的
2010-02-23
  • 打赏
  • 举报
回复
6楼你的意思是 我要在jsp页面中调用这个方法才可以么?
启动tomcat后 在myeclipse里 run一下这个方法是不可以的么?
2010-02-23
  • 打赏
  • 举报
回复
回sggsg我是启动tomact后在myeclipse中执行的。因为不通,所以为了测试一下才在这个连接数据源的类上写了个主方法,测试一下是否能连接上的。
钱不是问题 2010-02-23
  • 打赏
  • 举报
回复
http://www.java2000.net/p18443
钱不是问题 2010-02-23
  • 打赏
  • 举报
回复
这段代码是在一个Web服务器里才能运行的,不是在main里的。
也就是说,要启动服务器,在服务器这个上下文环境中,才有什么InitialContext,普通的应用程序,不存在这个。
2010-02-23
  • 打赏
  • 举报
回复
主要问题在于
ds = (DataSource) context.lookup("java:/comp/env/jdbc/ccitDS");
这个ds是空的
也就是说lookup("java:/comp/env/jdbc/ccitDS");没有找到那个数据源。
我就是不明白为什么找不到。,不知道是哪里写错了。
2010-02-23
  • 打赏
  • 举报
回复
回三楼的 那个是为了测试一下 可以不可以连接上。其实不用打印出来的。
直接 new DBUtils();就行了。
zm_hs 2010-02-23
  • 打赏
  • 举报
回复
System.out.println(new DBUtils());
可以这样写?
2010-02-23
  • 打赏
  • 举报
回复
我顶。。。大哥大姐们快来帮忙啊。。。。。。。。。。。
2010-02-23
  • 打赏
  • 举报
回复
这是报的异常
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
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:284)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.ccit.xyy.util.DBUtils.init(DBUtils.java:34)
at com.ccit.xyy.util.DBUtils. <init>(DBUtils.java:21)
at com.ccit.xyy.util.DBUtils.main(DBUtils.java:77)

81,092

社区成员

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

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