【问题标题】:JDBC DataSourceJDBC 数据源
【发布时间】: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


【解决方案1】:

我想你没有在你的战争中包括 DBCP。所以它使用 Tomcat 中配置的任何 DataSource。您可能正在使用两个不同版本的 Tomcat,或者至少它们的配置不同;一个必须有commons-dbcp.jar,另一个必须有tomcat-dbcp.jar。

【讨论】:

    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2011-02-27
    • 2011-01-29
    • 2016-09-13
    • 2018-03-22
    相关资源
    最近更新 更多