Я работаю с Infinispan 8.1.0 Final и Wildfly 10 в кластере.
Каждый сервер запущен
C:\wildfly-10\bin\standalone.bat --server-config=standalone-ha.xml -b 10.09.139.215 -u 230.0.0.4 -Djboss.node.name=MyNode
Я хочу использовать Infinispan в распределенном режиме, чтобы иметь распределенный кеш. Но для обязательных требований мне нужно создать канал JGroups для динамического чтения некоторых свойств из файла.
Этот канал необходим мне для построения кластера-группы на основе TYPE и NAME (например Type1-MyCluster). Каждый сервер, который хочет присоединиться к кластеру, должен использовать соответствующий канал.
Путешествуя по сети, я нашел код, подобный приведенному ниже:
public class JGroupsChannelServiceActivator implements ServiceActivator {
@Override
public void activate(ServiceActivatorContext context) {
stackName = "udp";
try {
channelServiceName = ChannelService.getServiceName(CHANNEL_NAME);
createChannel(context.getServiceTarget());
} catch (IllegalStateException e) {
log.log(Level.INFO, "channel seems to already exist, skipping creation and binding.");
}
}
void createChannel(ServiceTarget target) {
InjectedValue<ChannelFactory> channelFactory = new InjectedValue<>();
ServiceName serviceName = ChannelFactoryService.getServiceName(stackName);
ChannelService channelService = new ChannelService(CHANNEL_NAME, channelFactory);
target.addService(channelServiceName, channelService)
.addDependency(serviceName, ChannelFactory.class, channelFactory).install();
}
Я создал файл META-INF/services/....JGroupsChannelServiceActivator.
Когда я развертываю свою войну на сервере, операция завершается с ошибкой:
"{\"WFLYCTL0180: Services with missing/unavailable dependencies\" => [\"jboss.jgroups.channel.clusterWatchdog is missing [jboss.jgroups.stack.udp]\"]}"
Что я делаю не так? Как мне построить канал так, как мне нужно? Каким образом я могу указать Infinispan использовать этот канал для распределенного кэширования?