Java WebSphere DynaCache脱盐问题
我有两个门户网站项目 项目1 项目2 我有一个共享库(sharedLibrary.jar)集,用于上述两个项目。我的共享库用于查找dyna缓存并从中设置/获取数据 我正在将我自己的bean(比如com.test.UserBean)从项目1设置为dyna缓存 现在从项目2开始,我试图从缓存中检索bean(com.test.UserBean)。当这样做时,我得到了classCastException 但当我像下面那样分配它时,它向我显示了对象是com.test.UserBean Object obj=distributedMap.get(); 我的bean实现了Serializable接口,并有一个SerialVersionId字段 我不知道这里发生了什么。这是类加载器问题还是其他问题Java WebSphere DynaCache脱盐问题,java,jakarta-ee,websphere,websphere-portal,dynacache,Java,Jakarta Ee,Websphere,Websphere Portal,Dynacache,我有两个门户网站项目 项目1 项目2 我有一个共享库(sharedLibrary.jar)集,用于上述两个项目。我的共享库用于查找dyna缓存并从中设置/获取数据 我正在将我自己的bean(比如com.test.UserBean)从项目1设置为dyna缓存 现在从项目2开始,我试图从缓存中检索bean(com.test.UserBean)。当这样做时,我得到了classCastException 但当我像下面那样分配它时,它向我显示了对象是com.test.UserBean Object obj
有谁能解释一下吗?这不太可能是序列化问题,而更可能是类加载器问题 如果两个portlet web应用程序都通过一个公共类加载器加载了该类,那么可以通过DynaCache共享实例 但是,如果使用两个不同的类加载器从相同的.jar(磁盘上)加载相同的.class,并且两个应用程序共享一个实例(例如,通过DynaCache分布式映射),您将遇到一个
ClassCastException
——即使您已经看到,myInstance.getClass().getName()
生成相同的字符串
要确认这一点,您可以使用。这将允许您针对每个模块对“两个类加载器,一个类”问题进行故障排除。信息中心文档上有一个伴随文档,它将引导您完成整个过程。classloader查看器将显示每个模块中使用哪个.jar和哪个classloader加载
com.test.UserBean
。例如,您可能意外地将jar打包在一个而不是另一个的WEB-INF/lib中,并启用了父类上次加载。您是如何部署共享库的?另外,您可以发布完整的堆栈跟踪吗?