我正在尝试将JNDI与名为CEDataSource的自定义数据源一起使用。根据我的理解,我还必须创建一个自定义工厂。

所以我创建了一个自定义工厂,该工厂将返回CEDataSource对象,但是现在当我尝试在Java中使用

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
// Look up our data source
   CEDataSource ds = (CEDataSource)envCtx.lookup("jdbc/cePu");


我收到异常ClassCastException
“ CEDataSource无法映射到CEDataSource”。我将CEDataSource和CEDataSourceFactory添加到TOMCAT / lib文件夹中,并在已部署的应用程序中引用了相同的jar。

任何帮助将不胜感激为什么可能发生此错误。谢谢

最佳答案

“ CEDataSource无法映射到CEDataSource”似乎指向一个事实,即两个地方的CEDataSource都不相同。

类加载器可能会有所不同,如果在多个位置具有相同的jars / .class(es),通常会发生这种情况。

您的罐子是否有多个副本?
尝试拥有一个副本,也许在共享的tomcat库中,以便无论您从何处访问它,都由同一个类加载器加载。

08-05 05:04