Как создать Ignite CacheManager с программной конфигурацией / без XML
Я хочу создать Ignite-узел с программной конфигурацией. Javax.cache.CacheManager-object требуется для приложения.
Я знаю, что могу запустить Ignite-узел со следующим кодом:
//with xml-config
Ignition.start("path-to-ignite-config-xml");
//with programmatic config
Ignition.start(cfg)
//with xml-config with the JCache-API
Caching.getCachingProvider().getCacheManager(uriToXML,Classloader);
Первые два вызова метода получили Ignite-объект в качестве возвращаемого значения. Последний получил объект CacheManager в качестве возвращаемого значения. Но мне нужно что-то вроде этого:
Caching.getCachingProvider().getCacheManager(IgniteConfiguration cfg);
// or this:
Ignition.start(IgniteConfiguration cfg).getCacheManager();
Есть метод org.apache.ignite.cache.CachingProvider.findManager(Ignite), который получил тип возвращаемого значения javax.cache.CacheManager (что я и хочу), но возвращаемое значение всегда равно нулю.
Есть ли способ получить объект javax.cache.CacheManager без xml-config?
2 ответа
К сожалению, API JCache не позволяет этого и поддерживает только URL-адреса. Вы должны использовать XML-файл для конфигурации или использовать собственный Ignite API.
Я обошел проблему в своем коде, отказавшись
CachingProvider
и написание собственной реализации
javax.cache.CacheManager
интерфейс.
я создаю
Ignite
экземпляр в конструкторе
CacheManager
реализация и переадресация всех вызовов на него.
IgniteCache
уже реализует
javax.cache.Cache
, так что тут проблем нет.
Это не совсем JCache, но достаточно близко для моих целей.