use of org.wildfly.clustering.spi.dispatcher.CommandDispatcherFactory in project wildfly by wildfly.
the class LocalCommandDispatcherFactoryServiceConfigurator method build.
@Override
public ServiceBuilder<?> build(ServiceTarget target) {
ServiceBuilder<?> builder = target.addService(this.getServiceName());
Consumer<CommandDispatcherFactory> factory = this.group.register(builder).provides(this.getServiceName());
Service service = new FunctionalService<>(factory, Functions.identity(), this);
return builder.setInstance(service).setInitialMode(ServiceController.Mode.ON_DEMAND);
}
use of org.wildfly.clustering.spi.dispatcher.CommandDispatcherFactory in project wildfly by wildfly.
the class BroadcastCommandDispatcherFactoryInstaller method accept.
@Override
public void accept(OperationContext context, String channelName) {
ServiceName name = MessagingServices.getBroadcastCommandDispatcherFactoryServiceName(channelName);
// N.B. BroadcastCommandDispatcherFactory implementations are shared across multiple server resources
if (this.names.add(name)) {
ServiceBuilder<?> builder = context.getServiceTarget().addService(name);
Consumer<BroadcastCommandDispatcherFactory> injector = builder.provides(name);
Supplier<CommandDispatcherFactory> factory = builder.requires(ClusteringRequirement.COMMAND_DISPATCHER_FACTORY.getServiceName(context, channelName));
Service service = new FunctionalService<>(injector, ConcurrentBroadcastCommandDispatcherFactory::new, factory);
builder.setInstance(service).setInitialMode(ServiceController.Mode.ON_DEMAND).install();
}
}
use of org.wildfly.clustering.spi.dispatcher.CommandDispatcherFactory in project wildfly by wildfly.
the class ConcurrentBroadcastCommandDispatcherFactory method createCommandDispatcher.
@SuppressWarnings("unchecked")
@Override
public <C> CommandDispatcher<C> createCommandDispatcher(Object id, C context) {
CommandDispatcherFactory dispatcherFactory = this.factory;
Function<Runnable, CommandDispatcher<?>> factory = new Function<Runnable, CommandDispatcher<?>>() {
@Override
public CommandDispatcher<C> apply(Runnable closeTask) {
CommandDispatcher<C> dispatcher = dispatcherFactory.createCommandDispatcher(id, context, WildFlySecurityManager.getClassLoaderPrivileged(this.getClass()));
return new ConcurrentCommandDispatcher<>(dispatcher, closeTask);
}
};
return (CommandDispatcher<C>) this.dispatchers.apply(id, factory);
}
use of org.wildfly.clustering.spi.dispatcher.CommandDispatcherFactory in project wildfly by wildfly.
the class InfinispanBeanManagerFactory method createBeanManager.
@Override
public BeanManager<I, T, TransactionBatch> createBeanManager(Supplier<I> identifierFactory, PassivationListener<T> passivationListener, RemoveListener<T> removeListener) {
ByteBufferMarshaller marshaller = new JBossByteBufferMarshaller(this.configuration.getMarshallingConfigurationRepository(), this.configuration.getBeanConfiguration().getModule().getClassLoader());
MarshalledValueFactory<ByteBufferMarshaller> factory = new ByteBufferMarshalledValueFactory(marshaller);
Cache<BeanKey<I>, BeanEntry<I>> beanCache = this.configuration.getCache();
Cache<BeanGroupKey<I>, BeanGroupEntry<I, T, ByteBufferMarshaller>> groupCache = this.configuration.getCache();
CacheProperties properties = new InfinispanCacheProperties(groupCache.getCacheConfiguration());
String beanName = this.configuration.getBeanConfiguration().getName();
BeanPassivationConfiguration passivationConfig = this.configuration.getPassivationConfiguration();
PassivationConfiguration<T> passivation = new PassivationConfiguration<T>() {
@Override
public PassivationListener<T> getPassivationListener() {
return passivationListener;
}
@Override
public BeanPassivationConfiguration getConfiguration() {
return passivationConfig;
}
};
Predicate<Map.Entry<? super BeanKey<I>, ? super BeanEntry<I>>> beanFilter = new BeanFilter<>(beanName);
BeanGroupFactory<I, T, ByteBufferMarshaller> groupFactory = new InfinispanBeanGroupFactory<>(groupCache, beanCache, beanFilter, factory, properties, passivation);
Configuration<BeanGroupKey<I>, BeanGroupEntry<I, T, ByteBufferMarshaller>, BeanGroupFactory<I, T, ByteBufferMarshaller>> groupConfiguration = new SimpleConfiguration<>(groupCache, groupFactory);
BeanFactory<I, T> beanFactory = new InfinispanBeanFactory<>(beanName, groupFactory, beanCache, properties, this.configuration.getBeanConfiguration().getTimeout(), properties.isPersistent() ? passivationListener : null);
Configuration<BeanKey<I>, BeanEntry<I>, BeanFactory<I, T>> beanConfiguration = new SimpleConfiguration<>(beanCache, beanFactory);
Group<Address> group = this.configuration.getGroup();
KeyAffinityServiceFactory affinityFactory = this.configuration.getKeyAffinityServiceFactory();
CommandDispatcherFactory dispatcherFactory = this.configuration.getCommandDispatcherFactory();
Duration timeout = this.configuration.getBeanConfiguration().getTimeout();
ExpirationConfiguration<T> expiration = new ExpirationConfiguration<T>() {
@Override
public Duration getTimeout() {
return timeout;
}
@Override
public RemoveListener<T> getRemoveListener() {
return removeListener;
}
};
String name = this.configuration.getName();
InfinispanBeanManagerConfiguration<I, T> configuration = new InfinispanBeanManagerConfiguration<I, T>() {
@Override
public String getName() {
return name;
}
@Override
public Predicate<Map.Entry<? super BeanKey<I>, ? super BeanEntry<I>>> getBeanFilter() {
return beanFilter;
}
@Override
public KeyAffinityServiceFactory getAffinityFactory() {
return affinityFactory;
}
@Override
public Group<Address> getGroup() {
return group;
}
@Override
public CommandDispatcherFactory getCommandDispatcherFactory() {
return dispatcherFactory;
}
@Override
public ExpirationConfiguration<T> getExpirationConfiguration() {
return expiration;
}
@Override
public PassivationConfiguration<T> getPassivationConfiguration() {
return passivation;
}
@Override
public CacheProperties getProperties() {
return properties;
}
};
return new InfinispanBeanManager<>(configuration, identifierFactory, beanConfiguration, groupConfiguration);
}
Aggregations