Skip to content

Commit

Permalink
WFLY-11530 Distributed @stateful EJB implementation should not hold r…
Browse files Browse the repository at this point in the history
…eferences to CapabilityServiceSupport
  • Loading branch information
pferraro committed Jan 19, 2019
1 parent a3c26f8 commit 24e26e7
Show file tree
Hide file tree
Showing 21 changed files with 200 additions and 225 deletions.
Expand Up @@ -27,6 +27,7 @@

import org.infinispan.Cache;
import org.infinispan.remoting.transport.Address;
import org.jboss.as.clustering.controller.CapabilityServiceConfigurator;
import org.jboss.as.controller.capability.CapabilityServiceSupport;
import org.jboss.msc.Service;
import org.jboss.msc.service.ServiceBuilder;
Expand Down Expand Up @@ -56,33 +57,41 @@
/**
* @author Paul Ferraro
*/
public class InfinispanBeanManagerFactoryServiceConfigurator<I, T> extends SimpleServiceNameProvider implements ServiceConfigurator, InfinispanBeanManagerFactoryConfiguration {
public class InfinispanBeanManagerFactoryServiceConfigurator<I, T> extends SimpleServiceNameProvider implements CapabilityServiceConfigurator, InfinispanBeanManagerFactoryConfiguration {

private final String name;
private final BeanContext context;
private final BeanManagerFactoryServiceConfiguratorConfiguration configuration;

@SuppressWarnings("rawtypes")
private final SupplierDependency<Cache> cache;
private final SupplierDependency<KeyAffinityServiceFactory> affinityFactory;
private final SupplierDependency<MarshallingConfigurationRepository> repository;
private final SupplierDependency<ScheduledExecutorService> scheduler;
private final SupplierDependency<NodeFactory<Address>> group;
private final SupplierDependency<Registry<String, ?>> registry;
private final SupplierDependency<CommandDispatcherFactory> dispatcherFactory;

public InfinispanBeanManagerFactoryServiceConfigurator(CapabilityServiceSupport support, String name, BeanContext context, BeanManagerFactoryServiceConfiguratorConfiguration configuration) {
private volatile SupplierDependency<Cache<?, ?>> cache;
private volatile SupplierDependency<KeyAffinityServiceFactory> affinityFactory;
private volatile SupplierDependency<NodeFactory<Address>> group;
private volatile SupplierDependency<Registry<String, ?>> registry;
private volatile SupplierDependency<CommandDispatcherFactory> dispatcherFactory;

public InfinispanBeanManagerFactoryServiceConfigurator(String name, BeanContext context, BeanManagerFactoryServiceConfiguratorConfiguration configuration) {
super(context.getDeploymentUnitServiceName().append(context.getBeanName()).append("bean-manager"));
this.name = name;
this.context = context;
this.configuration = configuration;
ServiceName deploymentUnitServiceName = context.getDeploymentUnitServiceName();
String containerName = configuration.getContainerName();
this.cache = new ServiceSupplierDependency<>(InfinispanCacheRequirement.CACHE.getServiceName(support, containerName, InfinispanBeanManagerFactoryServiceConfiguratorFactory.getCacheName(deploymentUnitServiceName, name)));
this.affinityFactory = new ServiceSupplierDependency<>(InfinispanRequirement.KEY_AFFINITY_FACTORY.getServiceName(support, containerName));
this.repository = new ServiceSupplierDependency<>(deploymentUnitServiceName.append("marshalling"));
this.scheduler = new ServiceSupplierDependency<>(deploymentUnitServiceName.append(name, "expiration"));
}

@Override
public ServiceConfigurator configure(CapabilityServiceSupport support) {
String containerName = this.configuration.getContainerName();
ServiceName deploymentUnitServiceName = this.context.getDeploymentUnitServiceName();
this.cache = new ServiceSupplierDependency<>(InfinispanCacheRequirement.CACHE.getServiceName(support, containerName, InfinispanBeanManagerFactoryServiceConfiguratorFactory.getCacheName(deploymentUnitServiceName, this.name)));
this.affinityFactory = new ServiceSupplierDependency<>(InfinispanRequirement.KEY_AFFINITY_FACTORY.getServiceName(support, containerName));
this.dispatcherFactory = new ServiceSupplierDependency<>(ClusteringRequirement.COMMAND_DISPATCHER_FACTORY.getServiceName(support, containerName));
this.registry = new ServiceSupplierDependency<>(ClusteringCacheRequirement.REGISTRY.getServiceName(support, containerName, BeanManagerFactoryServiceConfiguratorConfiguration.CLIENT_MAPPINGS_CACHE_NAME));
this.group = new ServiceSupplierDependency<>(ClusteringCacheRequirement.GROUP.getServiceName(support, containerName, BeanManagerFactoryServiceConfiguratorConfiguration.CLIENT_MAPPINGS_CACHE_NAME));
return this;
}

@Override
Expand All @@ -99,9 +108,10 @@ public BeanContext getBeanContext() {
return this.context;
}

@SuppressWarnings("unchecked")
@Override
public <K, V> Cache<K, V> getCache() {
return this.cache.get();
return (Cache<K, V>) this.cache.get();
}

@Override
Expand Down
Expand Up @@ -36,7 +36,6 @@
import org.infinispan.eviction.EvictionType;
import org.jboss.as.clustering.controller.CapabilityServiceConfigurator;
import org.jboss.as.clustering.controller.ServiceConfiguratorAdapter;
import org.jboss.as.controller.capability.CapabilityServiceSupport;
import org.jboss.as.server.deployment.Services;
import org.jboss.msc.service.ServiceName;
import org.jboss.threads.JBossThreadFactory;
Expand All @@ -49,7 +48,6 @@
import org.wildfly.clustering.infinispan.spi.InfinispanCacheRequirement;
import org.wildfly.clustering.infinispan.spi.service.CacheServiceConfigurator;
import org.wildfly.clustering.infinispan.spi.service.TemplateConfigurationServiceConfigurator;
import org.wildfly.clustering.service.ServiceConfigurator;
import org.wildfly.clustering.service.ServiceDependency;
import org.wildfly.clustering.service.concurrent.RemoveOnCancelScheduledExecutorServiceConfigurator;

Expand Down Expand Up @@ -84,12 +82,10 @@ static String getCacheName(ServiceName deploymentUnitServiceName, String beanMan
return String.join("/", parts);
}

private final CapabilityServiceSupport support;
private final String name;
private final BeanManagerFactoryServiceConfiguratorConfiguration config;

public InfinispanBeanManagerFactoryServiceConfiguratorFactory(CapabilityServiceSupport support, String name, BeanManagerFactoryServiceConfiguratorConfiguration config) {
this.support = support;
public InfinispanBeanManagerFactoryServiceConfiguratorFactory(String name, BeanManagerFactoryServiceConfiguratorConfiguration config) {
this.name = name;
this.config = config;
}
Expand Down Expand Up @@ -128,7 +124,7 @@ public Collection<CapabilityServiceConfigurator> getDeploymentServiceConfigurato
}

@Override
public ServiceConfigurator getBeanManagerFactoryServiceConfigurator(BeanContext context) {
return new InfinispanBeanManagerFactoryServiceConfigurator<>(this.support, this.name, context, this.config);
public CapabilityServiceConfigurator getBeanManagerFactoryServiceConfigurator(BeanContext context) {
return new InfinispanBeanManagerFactoryServiceConfigurator<>(this.name, context, this.config);
}
}
Expand Up @@ -21,7 +21,6 @@
*/
package org.wildfly.clustering.ejb.infinispan;

import org.jboss.as.controller.capability.CapabilityServiceSupport;
import org.kohsuke.MetaInfServices;
import org.wildfly.clustering.ejb.BeanManagerFactoryServiceConfiguratorFactory;
import org.wildfly.clustering.ejb.BeanManagerFactoryServiceConfiguratorConfiguration;
Expand All @@ -34,7 +33,7 @@
public class InfinispanBeanManagerFactoryServiceConfiguratorFactoryProvider implements BeanManagerFactoryServiceConfiguratorFactoryProvider {

@Override
public BeanManagerFactoryServiceConfiguratorFactory getBeanManagerFactoryBuilder(CapabilityServiceSupport support, String name, BeanManagerFactoryServiceConfiguratorConfiguration config) {
return new InfinispanBeanManagerFactoryServiceConfiguratorFactory<>(support, name, config);
public BeanManagerFactoryServiceConfiguratorFactory getBeanManagerFactoryBuilder(String name, BeanManagerFactoryServiceConfiguratorConfiguration config) {
return new InfinispanBeanManagerFactoryServiceConfiguratorFactory<>(name, config);
}
}
Expand Up @@ -25,7 +25,6 @@

import org.jboss.as.clustering.controller.CapabilityServiceConfigurator;
import org.jboss.msc.service.ServiceName;
import org.wildfly.clustering.service.ServiceConfigurator;

public interface BeanManagerFactoryServiceConfiguratorFactory {

Expand All @@ -40,5 +39,5 @@ public interface BeanManagerFactoryServiceConfiguratorFactory {
* @param context the bean context
* @return a service builder
*/
ServiceConfigurator getBeanManagerFactoryServiceConfigurator(BeanContext context);
CapabilityServiceConfigurator getBeanManagerFactoryServiceConfigurator(BeanContext context);
}
Expand Up @@ -21,11 +21,9 @@
*/
package org.wildfly.clustering.ejb;

import org.jboss.as.controller.capability.CapabilityServiceSupport;

/**
* @author Paul Ferraro
*/
public interface BeanManagerFactoryServiceConfiguratorFactoryProvider {
BeanManagerFactoryServiceConfiguratorFactory getBeanManagerFactoryBuilder(CapabilityServiceSupport support, String name, BeanManagerFactoryServiceConfiguratorConfiguration config);
BeanManagerFactoryServiceConfiguratorFactory getBeanManagerFactoryBuilder(String name, BeanManagerFactoryServiceConfiguratorConfiguration config);
}
Expand Up @@ -27,9 +27,7 @@
import org.jboss.as.ee.component.ComponentConfiguration;
import org.jboss.as.ejb3.component.stateful.StatefulComponentDescription;
import org.jboss.as.server.deployment.DeploymentUnit;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;

/**
* Builds a {@link CacheFactory} service.
Expand All @@ -47,7 +45,14 @@ public interface CacheFactoryBuilder<K, V extends Identifiable<K>> {
*/
Collection<CapabilityServiceConfigurator> getDeploymentServiceConfigurators(DeploymentUnit unit);

ServiceBuilder<?> build(ServiceTarget target, ServiceName name, StatefulComponentDescription description, ComponentConfiguration configuration);
/**
* Returns a configurator for a service supplying a cache factory.
* @param name the service name of the cache factory
* @param description the component description
* @param configuration the component configuration
* @return a service configurator
*/
CapabilityServiceConfigurator getServiceConfigurator(ServiceName name, StatefulComponentDescription description, ComponentConfiguration configuration);

/**
* Indicates whether or not cache factories built by this object can support passivation.
Expand Down

This file was deleted.

Expand Up @@ -19,31 +19,24 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package org.jboss.as.ejb3.cache;

import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;
import org.jboss.msc.value.InjectedValue;
import org.wildfly.clustering.service.SimpleServiceNameProvider;

public class DelegateCacheFactoryBuilderService<K, V extends Identifiable<K>> extends CacheFactoryBuilderService<K, V> {
@SuppressWarnings("rawtypes")
private final InjectedValue<CacheFactoryBuilder> builder = new InjectedValue<>();
private final ServiceName delegateName;
public class CacheFactoryBuilderServiceNameProvider extends SimpleServiceNameProvider {

public DelegateCacheFactoryBuilderService(String name, ServiceName delegateName) {
super(name);
this.delegateName = delegateName;
}
private static final ServiceName BASE_CACHE_SERVICE_NAME = ServiceName.JBOSS.append("ejb", "cache");
public static final ServiceName DEFAULT_CACHE_SERVICE_NAME = BASE_CACHE_SERVICE_NAME.append("sfsb-default");
public static final ServiceName DEFAULT_PASSIVATION_DISABLED_CACHE_SERVICE_NAME = BASE_CACHE_SERVICE_NAME.append("sfsb-default-passivation-disabled");

@Override
public ServiceBuilder<CacheFactoryBuilder<K, V>> build(ServiceTarget target) {
return super.build(target).addDependency(this.delegateName, CacheFactoryBuilder.class, this.builder);
protected static final ServiceName BASE_CACHE_FACTORY_SERVICE_NAME = BASE_CACHE_SERVICE_NAME.append("factory");

public CacheFactoryBuilderServiceNameProvider(String cacheName) {
this(BASE_CACHE_FACTORY_SERVICE_NAME.append(cacheName));
}

@Override
public CacheFactoryBuilder<K, V> getValue() {
return this.builder.getValue();
protected CacheFactoryBuilderServiceNameProvider(ServiceName name) {
super(name);
}
}

0 comments on commit 24e26e7

Please sign in to comment.