Возможно ли обновить / изменить методы (поведение) сервисного объекта Corda (singleton) во время выполнения?Например:
В объекте службы Corda есть функция, как показано ниже, которая отслеживает обновления хранилища, выполняет некоторую обработку с данными состояния, а затем выполняет вызов API для внешней системы.В какой-то момент логика обработки данных о состоянии может измениться, и хотелось бы изменить поведение во время выполнения без перезапуска моего узла Corda.
Является ли Corda Service правильным способом сделать это?Могут ли помочь API инструментария Java, Java Assist или другие инструменты перезаписи байт-кода?
private fun trackVaultAndUpdateExternalSystem() {
val ourIdentity = ourIdentity()
serviceHub.vaultService.trackBy<State>().updates.subscribe { update: Vault.Update<State> ->
update.produced.forEach { message: StateAndRef<State> ->
val state = message.state.data
if (state.recipient == ourIdentity) {
// do some processing and then make an API call to the external system
}
}
}