关于注册用户同步失败提示:ClassCastException: com.apusic.naming异常说明原创
金蝶云社区-Hadwin
Hadwin
9人赞赏了该文章 213次浏览 未经作者许可,禁止转载编辑于2023年04月08日 11:18:28

如附件图所示,在线同步用户报错

image.png

查看报错堆栈如下:

Caused by: java.lang.ClassCastException: com.apusic.naming.jndi.CNContext cannot be cast to javax.sql.DataSource

at com.kingdee.bos.framework.ejb.EJBUtils.ensureDataSource(EJBUtils.java:140)

at com.kingdee.bos.framework.ejb.EJBUtils.getConnection(EJBUtils.java:92)

at com.kingdee.eas.base.permission.app.util.interior.LicenseUseSrvSingletonManager.mergeOtherDBUserLicenseGroup(LicenseUseSrvSingletonManager.java:340)

at com.kingdee.eas.base.permission.app.util.interior.LicenseUseSrvSingletonManager.getGroupsFromUserLicenseGroup(LicenseUseSrvSingletonManager.java:318)


分析:

经查看代码可知,该配置项是从eas/server/profiles/server*/config/bosconfig.xml中取值,故需先检查该配置文件下的参数,如下图所示

image.png


如上图所示可以看出,此配置文件不存在问题,只配置了一个数据中心,故需检查eas\server\properties 的datacenter.xml文件是否正确

image.png

上述文件也没有问题,故查询分析器运行以下服务端脚本排查是否加载到其他数据库信息:com.kingdee.bos.framework.ejb.EJBFactory.getQueryDataSources()

参考脚本:

image.png


从上图可以看出存在test0208数据库,故需移除此数据中心


解决措施:

客户端直连server1运行以下服务端脚本

image.png


参考脚本:

var clazz = java.lang.Class.forName("com.kingdee.bos.framework.ejb.EJBFactory");

 var field = clazz.getDeclaredField("queryDSCache"); 

field.setAccessible(true); 

var map = field.get(clazz); 

map.remove("test0208");


再次同步成功

image.png






图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!