请教。在ejb中用DataSource连接数据库,报错!

04-10-22 maple_0702
我在ejb中用直连方式没有问题。

用DataSource就不行,我的code:
public Connection getConnection(){
Connection con = null;
DataSource ds = null;
try{
InitialContext ctx = new InitialContext();
System.out.println("ccccccccccccccccc");
ds = (DataSource)ctx.lookup("java:comp/env/estore");
System.out.println("dddddddddddddddd");
con = ds.getConnection();
System.out.println("eeeeeeeeeeeeeeeeeeeee");
}
catch(Exception e){
e.printStackTrace();
}

return con;
}
执行不到System.out.println("eeeeeeeeeeeeeeeeeeeee");

抛出的异常:
java.lang.NoClassDefFoundError: weblogic/jdbc/wrapper/PoolConnection

java.sql.SQLException: Cannot obtain connection: driverURL = jdbc:weblogic:pool:estoreConn
ectionPool, props = {enableTwoPhaseCommit=false, jdbcTxDataSource=true, connectionPoolID=e
storeConnectionPool, dataSourceName=estoreDataSource}.

banq
2004-10-25 13:49
需要配置Datasource

maple_0702
2004-10-26 10:24
连接池和数据源配置没有问题

连接池配置:
Name: estoreConnectionPool
URL:jdbc:mysql://localhost:3306/estore
Driver Classname:com.mysql.jdbc.Driver
Properties:user=root
数据源配置:
JNDI:estore
选择的连接池:estoreConnectionPool

我也修改过启动脚本,把mysql的jdbc驱动加入classpath路径中;
而且在weblogic我建的域选择的是“D:\jdk1.4”
我把jdbc驱动放到了D:\jdk1.4\jre\lib\ext下

banq
2004-10-31 20:13
换JBoss试验看看,注意DataSource的JNDI名称特殊写法

newold
2004-10-31 22:39
mysql的驱动weblogic没有找到,需要在startweblogic.bat的classpath加入

maple_0702
2004-11-05 16:23
问题已解决!

这是我找到的解决办法。
其实非常简单
例如D:\mysql-connector.jar //jdbc驱动所在的目录
然后把这个路径加到startWebLogic.cmd的“set CLASSPATH=......"中就可以了。
但需要注意的是,一定要把mysql-connector.jar文件从系统的"环境变量"中的去掉,还有%JAVA_HOME%\jre\lib\ext也是。反正除了在startWebLogic.cmd中需要设置其它地方都不需要。


这是我找到的帖子,里面说的更详细。
http://forums.bea.com/bea/message.jspa?messageID=200019677

maple_0702
2004-11-05 16:26
其实我的错误一直就在把jdbc驱动放到了%JAVA_HOME%\jre\lib\ext中

猜你喜欢