小弟我在 Mysql下连接池做了一个ConnectionDB类,运行没错,可是通过JSP页面调用时就出现了 ClassCastException异常,请教怎么解决??

tyf226 2005-02-24 11:56:39
我的代码如下:

import java.util.Hashtable;
import javax.naming.*;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.*;
import javax.sql.*;

class ConnectionDB {
public ConnectionDB() {
}
public static Connection getConnection(String sourceName){
Connection con=null;
Hashtable ha=new Hashtable();
//映射名字
ha.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory") ;
try {
//初始化上下文
Context context = new InitialContext(ha);
//重新得到对象的名字
ConnectionPoolDataSource poolSource=
(ConnectionPoolDataSource)context.lookup(sourceName);
//建立一个数据库用于连接池
PooledConnection pool=poolSource.getPooledConnection();
//建立连接,并返回对象的句柄用于本对象的描述
con=pool.getConnection();
}
catch (NamingException ex) {
ex.printStackTrace() ;
}catch(SQLException ex){
ex.printStackTrace() ;
}
return con;
}


public static void main(String arg[]){
Hashtable hash=new Hashtable();
//映射名字
hash.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory") ;
MysqlDataSource ds=new MysqlDataSource();
String server="localhost";
String sourceName="jdbcPool/msg";
int port=3306;
String user="root";
String password="";
String dataBaseName="yatian";
ds.setServerName(server);
ds.setPortNumber(port);
ds.setUser(user);
ds.setPassword(password);
ds.setDatabaseName(dataBaseName);
try {
//初始化上下文
Context context = new InitialContext(hash);
//绑定对象的名字
context.rebind(sourceName,ds);
context.close();
}
catch (NamingException ex) {
ex.printStackTrace() ;
}
}
}

我调试了一下,到
ConnectionPoolDataSource poolSource=
(ConnectionPoolDataSource)context.lookup(sourceName);这段代码时就出现了那个
"对象转换成没有实例的子类时的"异常了, 谁能帮我解决呀,急急!!!
...全文
154 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
POwner 2005-02-24
  • 打赏
  • 举报
回复
上面的当然可以,DataSource 是自带的连接池
jFresH_MaN 2005-02-24
  • 打赏
  • 举报
回复
ConnectionPoolDataSource poolSource=
(ConnectionPoolDataSource)context.lookup(sourceName);
--------
我不清楚MysqlDataSource是不是ConnectionPoolDataSource的子类
你这样试试
DataSource poolSource=
(DataSource)context.lookup(sourceName);
tyf226 2005-02-24
  • 打赏
  • 举报
回复
高手大哥们快来呀
tyf226 2005-02-24
  • 打赏
  • 举报
回复
jFresH_MaN(The answer is ......) 大哥果然厉害
谢谢了

81,114

社区成员

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

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