Я использую Компонент верблюжьего сока RedHat в RedHat Fuse для вызова модулей через SAP RFC. Каждый раз, когда структура модуля корректируется, Экземпляр предохранителя необходимо перезапустить кэширует обновленный репозиторий SAP. Есть ли способ обновить кеш с помощью репозитория SAP без перезапуска экземпляра?
Короткий ответ: нет.
Изменение структуры RFC в системе SAP - серьезное системное изменение. Компонент предназначен для интеграции со стабильной производственной системой SAP и кэширует метаданные SAP для повышения эффективности. Я предполагаю, что вы должны изменять RFC в среде разработки. В этом случае вам необходимо перезапустить любой подключенный контейнер Fuse, поскольку вы изменили систему SAP.
Этот компонент верблюжьего сока, похоже, использует SAP Java Connector (JCo) и библиотеку классов Java IDoc (JIDocLIb).
По соображениям производительности эти библиотеки постоянно хранят необходимые метаданные для RFC и IDoc в памяти. Но библиотеки также предлагают API для удаления метаданных из кеша или для очистки всего репозитория метаданных. Таким образом, можно было бы каким-то образом реализовать желаемую функциональность в компоненте using camel-sap или, если у вас есть прямой доступ к используемым API-интерфейсам SAP Connector, реализовать это на Java самостоятельно.
Что невозможно, так это то, что кеши метаданных будут очищены или аннулированы автоматически после модификации в серверной части ABAP. Но поскольку я не знаю верблюжьего сока, я не могу здесь помочь.
Я открыл заявку в службу поддержки RedHat, и предложение о добавлении функции очистки кешей репозитория JCo и уровня данных было принято. задача был создан, а реализовано - пользователем @Punkhorn. Спасибо за это!
В заявке на поддержку указано, что эта функция будет включена в Предохранитель начиная с выпуска 7.2. Поэтому, если вы используете эту версию или новее, кеш можно очистить следующим образом:
<to uri = "sap-clear-cache" />
Punkhorn Я снял отметку с вашего ответа, потому что хочу подтвердить ответ @Trixx. У меня была похожая идея, и я попробую.