IBM 集成总线中具有相同类型和缓存的 ClassCastException

ClassCastException with same type and caching in ibm integration bus

我正在 ibm integration bus 中使用消息流中的 java 实现缓存解决方案,逻辑实现如下:

  1. 我建了基地 class : Deparment :

    public class Department implements Serializable { // 有 setter 和 getter 的成员 }

  2. 我构建了一个 Wrapper class 定义了一个 ArrayList<Department>

    public class CachedDepartment 实现 Serializable { 私有 ArrayList 部门; // 使用 setter 和 getter .... }

  3. 我创建了 class 实现 cache 解决方案 setvalue get value

set:

MbGlobalMap globalMap = MbGlobalMap.getGlobalMap(globalMapName);
    globalMap.put(key, value);

get:

CachedDepartment cacheddept = null;
        MbGlobalMap globalMap = MbGlobalMap.getGlobalMap(globalMapName);
        cacheddept = (CachedDepartment)  globalMap.get(key);
  1. 我创建了jar文件并将其放在classLoader目录及其运行中,当设置cache时,问题是[=74] =]启用获取功能。

    java.lang.ClassCastException: cache.entities.CachedDepartment 与 cache.entities.CachedDepartment

  2. 不兼容

我读了这个 link ClassCastException when casting to the same class 但我仍然不知道如何在 IBM Integration bus 中解决它 运行 关于 JDK 1.7 有什么想法吗? ??

我认为问题在于包含 CachedDepartment 和 Department 类 的项目仍在您的 IIB Java 项目的项目引用中,是什么让工具包将其部署到集成服务器,但该项目只应部署到 shared-类 目录。

因此,从项目引用和 IIB Java 项目的 Java 构建路径中删除包含缓存实体的项目,并将其作为外部 JAR 添加到 [=19] 下的库中=]构建路径。

此处有更多详细信息:

https://developer.ibm.com/integration/blog/2013/10/17/how-to-store-logical-message-tree-data-in-the-global-cache-using-jaxb-in-ibm-integration-bus-v9/