【发布时间】:2018-09-06 14:47:25
【问题描述】:
我在RedHat Fuse 中使用RedHat's camel-sap component 通过SAP RFC 调用模块。每次调整模块结构时,Fuse 实例都必须重新启动,以缓存更新后的 SAP 存储库。有没有办法使用 SAP 存储库更新缓存,而无需重新启动实例?
【问题讨论】:
标签: java apache-camel osgi sap jbossfuse
我在RedHat Fuse 中使用RedHat's camel-sap component 通过SAP RFC 调用模块。每次调整模块结构时,Fuse 实例都必须重新启动,以缓存更新后的 SAP 存储库。有没有办法使用 SAP 存储库更新缓存,而无需重新启动实例?
【问题讨论】:
标签: java apache-camel osgi sap jbossfuse
简短的回答是否定的。
在 SAP 系统中更改 RFC 的结构是一项重大的系统更改。该组件旨在与稳定的生产 SAP 系统集成并缓存 SAP 元数据以提高效率。我假设您必须在开发环境中修改 RFC。如果是这种情况,那么您需要重新启动任何连接的 Fuse 容器,因为您已经更改了 SAP 系统。
【讨论】:
这个 camel-sap 组件似乎使用了 SAP Java 连接器 (JCo) 和 Java IDoc 类库 (JIDocLIb)。
出于性能原因,这些库将 RFC 和 IDoc 所需的元数据永久存储在内存中。但是这些库还提供了用于从缓存中删除元数据或清除整个元数据存储库的 API。因此,可以在 using camel-sap 组件中以某种方式实现所需的功能,或者如果您可以直接访问使用的 SAP 连接器 API,则可以自己在 Java 中实现。
不可能的是,在 ABAP 后端进行修改后,元数据缓存将被自动清除或失效。但由于我不知道骆驼汁,我无法在这里提供更多帮助。
【讨论】:
我使用 RedHat 开具了支持票证,并接受了添加清除 JCo 存储库缓存和数据层功能的建议。 @Punkhorn 创建了 task 和 implemented。谢谢!
支持票证指出,自 7.2 版起,此功能将包含在 Fuse 中。所以如果你使用这个版本或更新的版本,可以如下清除缓存:
<to uri="sap-clear-cache" />
【讨论】: