我用的是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下了
高手们快来帮忙啊!!