我正在尝试将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库中,以便无论您从何处访问它,都由同一个类加载器加载。