【发布时间】:2011-04-27 09:45:30
【问题描述】:
当我在一台机器上运行以下代码时,我得到了 org.apache.tomcat.dbcp.dbcp.BasicDataSource 的 tomcat 实现,而当我在另一台机器上运行它时,我得到了 org.apache.commons.dbcp.BasicDataSource 的 apache commons 实现(这显然会导致 ClassCastException)。只是想知道为什么不更改代码和 context.xml 会导致返回两个不同的 DataSource 实现?
Context context = (Context) initialContext.lookup("java:/comp/env");
return (DataSource) context.lookup("jdbc/dbName");
【问题讨论】:
-
你检查过包含这些类的jar文件吗?
-
能像类路径问题一样简单吗?两个 tomcat 服务器是否都使用相同的启动脚本启动?两台服务器上的战争文件是否完全相同?两个服务器配置相同吗?
-
感谢你们的 cmets 伙计们,@JSS 我在他们的 jar 文件中检查什么? @Corlettk我不确定类路径问题是什么意思,启动脚本在内存分配方面是不同的,是的,战争是一样的。能不能说的具体一点。
-
Re Classpath:它们意味着在你的 Tomcat common/lib、server/lib 和 shared/lib 目录中具有相同大小和时间戳的相同 jar 文件名。除了检查您是否确实在相同的 Tomcat 版本上运行。
-
我不太明白您何时以及为何收到
ClassCastException。两者都只是java.sql.DataSource的实现,对吧?只需将它们声明为...
标签: java jdbc datasource