@Override Collection<ServiceController<?>> installRuntimeServices(OperationContext context, ModelNode operation, ModelNode model, ServiceVerificationHandler verificationHandler) throws OperationFailedException { final String name = PathAddress.pathAddress(operation.get(ModelDescriptionConstants.ADDRESS)).getLastElement().getValue(); ClusteredBackingCacheEntryStoreSourceService<?, ?, ?> service = new ClusteredBackingCacheEntryStoreSourceService<Serializable, Cacheable<Serializable>, Serializable>(name); ClusteredBackingCacheEntryStoreConfig config = service.getValue(); config.setCacheContainer(ClusterPassivationStoreResourceDefinition.CACHE_CONTAINER.resolveModelAttribute(context, model).asString()); ModelNode beanCacheNode = ClusterPassivationStoreResourceDefinition.BEAN_CACHE.resolveModelAttribute(context, model); if (beanCacheNode.isDefined()) { config.setBeanCache(beanCacheNode.asString()); } config.setClientMappingCache(ClusterPassivationStoreResourceDefinition.CLIENT_MAPPINGS_CACHE.resolveModelAttribute(context, model).asString()); config.setPassivateEventsOnReplicate(ClusterPassivationStoreResourceDefinition.PASSIVATE_EVENTS_ON_REPLICATE.resolveModelAttribute(context, model).asBoolean()); ServiceName serviceName = ClusteredBackingCacheEntryStoreSourceService.getPassivationStoreClusterNameServiceName(name); ServiceRegistry registry = context.getServiceRegistry(true); if (registry.getService(serviceName) != null) { context.removeService(serviceName); } InjectedValue<String> clusterName = new InjectedValue<String>(); ServiceController<?> controller = context.getServiceTarget().addService(serviceName, new ValueService<String>(clusterName)) .addDependency(ClusteredBackingCacheEntryStoreSourceService.getCacheContainerClusterNameServiceName(config.getCacheContainer()), String.class, clusterName) .setInitialMode(ServiceController.Mode.ON_DEMAND) .install(); return Arrays.asList(this.installBackingCacheEntryStoreSourceService(service, context, model, verificationHandler), controller); } }