【问题标题】:ClassCastException with same type and caching in ibm integration busibm集成总线中具有相同类型和缓存的ClassCastException
【发布时间】:2016-07-18 15:48:44
【问题描述】:

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

  1. 我建立了基础classDeparment

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

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

    公共类 CachedDepartment 实现 Serializable { 私有 ArrayList 部门; // 使用 setter 和 getter .... }

  3. 我创建了实现cache 解决方案setvalue 的类 和getvalue

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 时运行,问题出在运行get 功能时。

    java.lang.ClassCastException:cache.entities.CachedDepartment 与 cache.entities.CachedDepartment 不兼容

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

【问题讨论】:

    标签: java serialization esb messagebroker ibm-integration-bus


    【解决方案1】:

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

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

    更多细节在这里:

    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/

    【讨论】:

    • 谢谢它的工作,我将 jar 放在服务器的 classes 文件夹中,并在 buildpath 中为 IIB 项目添加了 jar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多