Я использую Spring 4.3, Infinispan 9.11 и JGroups 4.0.6.Для JGroups я использую конфигурацию xml, в которой у меня есть:
<TCPPING async_discovery="true"
initial_hosts="${jgroups.tcpping.initial_hosts: HOSTS}"
(...)
Допустим, я хочу сохранить конфигурацию в xml, однако мне нужно применить список хостов из другого (yml) файла конфигурации.Можно пойти путем чтения свойств yml из Java (у меня есть эта часть) и каким-то образом настроить их на конфигурацию JGroups.
Это то, что я пробовал до сих пор:
EmbeddedCacheManager cacheManager = new DefaultCacheManager(
GlobalConfigurationBuilder.defaultClusteredBuilder()
.transport()
.nodeName(nodeName)
.addProperty(JGroupsTransport.CONFIGURATION_FILE, "tcp.xml")
.addProperty(JGroupsTransport.CONFIGURATION_STRING, "jgroups.tcpping.initial_hosts: HOSTS")
.build(),
new ConfigurationBuilder()
...
.build()
);
Однако строка конфигурации не выполняет эту работу.
ОБНОВЛЕНИЕ.Еще одна попытка:
JGroupsTransport transport = (JGroupsTransport)(cacheManager.getCacheManagerConfiguration().transport().transport());
TCPPING ping = transport.getChannel().getProtocolStack().findProtocol(TCPPING.class);
ping.setPortRange(1);
ping.setInitialHosts(Arrays.asList(new IpAddress("HOST1:PORT1"), new IpAddress("HOST2:PORT2")));
Кажется, что это тоже не работает.