Skip to content

Commit

Permalink
Fix usage of deprecated MSC & wildfly-clustering-common/service API i…
Browse files Browse the repository at this point in the history
…n wildfly-mod_cluster modules.
  • Loading branch information
pferraro committed Jun 8, 2018
1 parent 92c14f9 commit 3498d14
Show file tree
Hide file tree
Showing 24 changed files with 258 additions and 276 deletions.

This file was deleted.

@@ -0,0 +1,13 @@
package org.wildfly.extension.mod_cluster;

import java.time.Duration;

import org.jboss.as.clustering.controller.CapabilityServiceConfigurator;

/**
* Creates builder of a service that triggers container events for use by {@link org.jboss.modcluster.container.ContainerEventHandler}.
* @author Paul Ferraro
*/
public interface ContainerEventHandlerAdapterServiceConfiguratorProvider {
CapabilityServiceConfigurator getServiceConfigurator(String connector, Duration statusInterval);
}

This file was deleted.

@@ -0,0 +1,79 @@
/*
* JBoss, Home of Professional Open Source
* Copyright 2011, Red Hat Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.wildfly.extension.mod_cluster;

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;

import org.jboss.modcluster.ModClusterService;
import org.jboss.modcluster.config.ModClusterConfiguration;
import org.jboss.modcluster.load.LoadBalanceFactorProvider;
import org.jboss.msc.Service;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;
import org.wildfly.clustering.service.AsyncServiceConfigurator;
import org.wildfly.clustering.service.FunctionalService;
import org.wildfly.clustering.service.ServiceConfigurator;
import org.wildfly.clustering.service.SimpleServiceNameProvider;

/**
* Service starting mod_cluster service.
*
* @author Jean-Frederic Clere
* @author Radoslav Husar
*/
public class ContainerEventHandlerServiceConfigurator extends SimpleServiceNameProvider implements ServiceConfigurator, Supplier<ModClusterService>, Consumer<ModClusterService> {

public static final ServiceName SERVICE_NAME = ModClusterConfigResourceDefinition.MOD_CLUSTER_CAPABILITY.getCapabilityServiceName();
public static final ServiceName CONFIG_SERVICE_NAME = SERVICE_NAME.append("config");

private final LoadBalanceFactorProvider load;

private volatile Supplier<ModClusterConfiguration> configuration;

ContainerEventHandlerServiceConfigurator(LoadBalanceFactorProvider factorProvider) {
super(SERVICE_NAME);
this.load = factorProvider;
}

@Override
public ServiceBuilder<?> build(ServiceTarget target) {
ServiceBuilder<?> builder = new AsyncServiceConfigurator(this.getServiceName()).build(target);
// Temporary alias, in case anyone is using old service name
Consumer<ModClusterService> modClusterService = builder.addAliases(ServiceName.JBOSS.append(ModClusterExtension.SUBSYSTEM_NAME)).provides(this.getServiceName());
this.configuration = builder.requires(ContainerEventHandlerServiceConfigurator.CONFIG_SERVICE_NAME);
Service service = new FunctionalService<>(modClusterService, Function.identity(), this, this);
return builder.setInstance(service);
}

@Override
public ModClusterService get() {
return new ModClusterService(this.configuration.get(), this.load);
}

@Override
public void accept(ModClusterService service) {
service.shutdown();
}
}
Expand Up @@ -22,6 +22,13 @@


package org.wildfly.extension.mod_cluster; package org.wildfly.extension.mod_cluster;


import static org.wildfly.extension.mod_cluster.ModClusterLogger.ROOT_LOGGER;
import static org.wildfly.extension.mod_cluster.ModClusterSubsystemResourceDefinition.HOST;
import static org.wildfly.extension.mod_cluster.ModClusterSubsystemResourceDefinition.PORT;

import java.net.InetAddress;
import java.net.UnknownHostException;

import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationDefinition; import org.jboss.as.controller.OperationDefinition;
import org.jboss.as.controller.OperationFailedException; import org.jboss.as.controller.OperationFailedException;
Expand All @@ -30,14 +37,7 @@
import org.jboss.as.controller.descriptions.ResourceDescriptionResolver; import org.jboss.as.controller.descriptions.ResourceDescriptionResolver;
import org.jboss.dmr.ModelNode; import org.jboss.dmr.ModelNode;
import org.jboss.modcluster.ModClusterServiceMBean; import org.jboss.modcluster.ModClusterServiceMBean;
import org.jboss.msc.service.ServiceController; import org.wildfly.clustering.service.ActiveServiceSupplier;

import java.net.InetAddress;
import java.net.UnknownHostException;

import static org.wildfly.extension.mod_cluster.ModClusterLogger.ROOT_LOGGER;
import static org.wildfly.extension.mod_cluster.ModClusterSubsystemResourceDefinition.HOST;
import static org.wildfly.extension.mod_cluster.ModClusterSubsystemResourceDefinition.PORT;


/** /**
* {@link OperationStepHandler} that handles adding a new reverse proxy. * {@link OperationStepHandler} that handles adding a new reverse proxy.
Expand All @@ -60,12 +60,11 @@ static OperationDefinition getDefinition(ResourceDescriptionResolver description


@Override @Override
public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { public void execute(OperationContext context, ModelNode operation) throws OperationFailedException {
if (context.isNormalServer() && context.getServiceRegistry(false).getService(ContainerEventHandlerService.SERVICE_NAME) != null) { if (context.isNormalServer() && context.getServiceRegistry(false).getService(ContainerEventHandlerServiceConfigurator.SERVICE_NAME) != null) {
context.addStep(new OperationStepHandler() { context.addStep(new OperationStepHandler() {
@Override @Override
public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { public void execute(OperationContext context, ModelNode operation) throws OperationFailedException {
ServiceController<?> controller = context.getServiceRegistry(false).getService(ContainerEventHandlerService.SERVICE_NAME); ModClusterServiceMBean service = new ActiveServiceSupplier<ModClusterServiceMBean>(context.getServiceRegistry(true), ContainerEventHandlerServiceConfigurator.SERVICE_NAME).get();
final ModClusterServiceMBean service = (ModClusterServiceMBean) controller.getValue();
ROOT_LOGGER.debugf("add-proxy: %s", operation); ROOT_LOGGER.debugf("add-proxy: %s", operation);


final String host = HOST.resolveModelAttribute(context, operation).asString(); final String host = HOST.resolveModelAttribute(context, operation).asString();
Expand Down
Expand Up @@ -66,15 +66,16 @@
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Stream; import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;


import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;


import org.jboss.as.clustering.controller.CommonUnaryRequirement; import org.jboss.as.clustering.controller.CommonUnaryRequirement;
import org.jboss.as.clustering.controller.ResourceServiceBuilder; import org.jboss.as.clustering.controller.ResourceServiceConfigurator;
import org.jboss.as.controller.OperationContext; import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationFailedException; import org.jboss.as.controller.OperationFailedException;
import org.jboss.as.network.OutboundSocketBinding; import org.jboss.as.network.OutboundSocketBinding;
Expand All @@ -86,38 +87,40 @@
import org.jboss.modcluster.config.impl.ModClusterConfig; import org.jboss.modcluster.config.impl.ModClusterConfig;
import org.jboss.modcluster.config.impl.SessionDrainingStrategyEnum; import org.jboss.modcluster.config.impl.SessionDrainingStrategyEnum;
import org.jboss.modcluster.mcmp.impl.JSSESocketFactory; import org.jboss.modcluster.mcmp.impl.JSSESocketFactory;
import org.jboss.msc.Service;
import org.jboss.msc.service.ServiceBuilder; import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceController; import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceName; import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget; import org.jboss.msc.service.ServiceTarget;
import org.jboss.msc.service.ValueService; import org.wildfly.clustering.service.CompositeDependency;
import org.jboss.msc.value.Value; import org.wildfly.clustering.service.Dependency;
import org.wildfly.clustering.service.Builder; import org.wildfly.clustering.service.FunctionalService;
import org.wildfly.clustering.service.InjectedValueDependency; import org.wildfly.clustering.service.ServiceConfigurator;
import org.wildfly.clustering.service.ValueDependency; import org.wildfly.clustering.service.ServiceSupplierDependency;
import org.wildfly.clustering.service.SupplierDependency;


/** /**
* @author Radoslav Husar * @author Radoslav Husar
*/ */
public class ModClusterConfigurationServiceBuilder implements ResourceServiceBuilder<ModClusterConfiguration>, Value<ModClusterConfiguration> { public class ModClusterConfigurationServiceConfigurator implements ResourceServiceConfigurator, Supplier<ModClusterConfiguration> {


private final ModClusterConfigurationBuilder builder = new ModClusterConfigurationBuilder(); private final ModClusterConfigurationBuilder builder = new ModClusterConfigurationBuilder();
private final List<SupplierDependency<OutboundSocketBinding>> outboundSocketBindings = new LinkedList<>();


private ValueDependency<SocketBinding> advertiseSocketDependency = null; private volatile SupplierDependency<SocketBinding> advertiseSocketDependency = null;
private final List<ValueDependency<OutboundSocketBinding>> outboundSocketBindings = new LinkedList<>(); private volatile SupplierDependency<SSLContext> sslContextDependency = null;
private ValueDependency<SSLContext> sslContextDependency = null;


@Override @Override
public ServiceName getServiceName() { public ServiceName getServiceName() {
return ContainerEventHandlerService.CONFIG_SERVICE_NAME; return ContainerEventHandlerServiceConfigurator.CONFIG_SERVICE_NAME;
} }


@Override @Override
public Builder<ModClusterConfiguration> configure(OperationContext context, ModelNode model) throws OperationFailedException { public ServiceConfigurator configure(OperationContext context, ModelNode model) throws OperationFailedException {


// Advertise // Advertise
optionalString(ADVERTISE_SOCKET.resolveModelAttribute(context, model)) optionalString(ADVERTISE_SOCKET.resolveModelAttribute(context, model))
.ifPresent(advertiseSocketRef -> this.advertiseSocketDependency = new InjectedValueDependency<>(context.getCapabilityServiceName(CommonUnaryRequirement.SOCKET_BINDING.getName(), advertiseSocketRef, SocketBinding.class), SocketBinding.class)); .ifPresent(advertiseSocketRef -> this.advertiseSocketDependency = new ServiceSupplierDependency<>(context.getCapabilityServiceName(CommonUnaryRequirement.SOCKET_BINDING.getName(), advertiseSocketRef, SocketBinding.class)));
optionalString(ADVERTISE_SECURITY_KEY.resolveModelAttribute(context, model)) optionalString(ADVERTISE_SECURITY_KEY.resolveModelAttribute(context, model))
.ifPresent(securityKey -> builder.advertise().setAdvertiseSecurityKey(securityKey)); .ifPresent(securityKey -> builder.advertise().setAdvertiseSecurityKey(securityKey));


Expand Down Expand Up @@ -216,7 +219,7 @@ public Builder<ModClusterConfiguration> configure(OperationContext context, Mode
if (node.isDefined()) { if (node.isDefined()) {
for (ModelNode ref : node.asList()) { for (ModelNode ref : node.asList()) {
String asString = ref.asString(); String asString = ref.asString();
this.outboundSocketBindings.add(new InjectedValueDependency<>(CommonUnaryRequirement.OUTBOUND_SOCKET_BINDING.getServiceName(context, asString), OutboundSocketBinding.class)); this.outboundSocketBindings.add(new ServiceSupplierDependency<>(CommonUnaryRequirement.OUTBOUND_SOCKET_BINDING.getServiceName(context, asString)));
} }
} }


Expand All @@ -229,7 +232,7 @@ public Builder<ModClusterConfiguration> configure(OperationContext context, Mode


node = SSL_CONTEXT.resolveModelAttribute(context, model); node = SSL_CONTEXT.resolveModelAttribute(context, model);
if (node.isDefined()) { if (node.isDefined()) {
this.sslContextDependency = new InjectedValueDependency<>(CommonUnaryRequirement.SSL_CONTEXT.getServiceName(context, node.asString()), SSLContext.class); this.sslContextDependency = new ServiceSupplierDependency<>(CommonUnaryRequirement.SSL_CONTEXT.getServiceName(context, node.asString()));
} }


// Legacy security support // Legacy security support
Expand Down Expand Up @@ -280,20 +283,22 @@ public Builder<ModClusterConfiguration> configure(OperationContext context, Mode
} }


@Override @Override
public ServiceBuilder<ModClusterConfiguration> build(ServiceTarget target) { public ServiceBuilder<?> build(ServiceTarget target) {
ServiceBuilder<ModClusterConfiguration> builder = target.addService(this.getServiceName(), new ValueService<>(this)); ServiceBuilder<?> builder = target.addService(this.getServiceName());
Stream.concat(Stream.of(advertiseSocketDependency, sslContextDependency), outboundSocketBindings.stream()).filter(Objects::nonNull).forEach(dependency -> dependency.register(builder)); Consumer<ModClusterConfiguration> config = new CompositeDependency(this.advertiseSocketDependency, this.sslContextDependency).register(builder).provides(this.getServiceName());
builder.setInitialMode(ServiceController.Mode.PASSIVE); for (Dependency dependency : this.outboundSocketBindings) {

dependency.register(builder);
return builder; }
Service service = new FunctionalService<>(config, Function.identity(), this);
return builder.setInstance(service).setInitialMode(ServiceController.Mode.PASSIVE);
} }


@Override @Override
public ModClusterConfiguration getValue() throws IllegalStateException, IllegalArgumentException { public ModClusterConfiguration get() {


// Advertise // Advertise
if (advertiseSocketDependency != null) { if (advertiseSocketDependency != null) {
final SocketBinding binding = advertiseSocketDependency.getValue(); final SocketBinding binding = advertiseSocketDependency.get();
builder.advertise() builder.advertise()
.setAdvertiseSocketAddress(binding.getMulticastSocketAddress()) .setAdvertiseSocketAddress(binding.getMulticastSocketAddress())
.setAdvertiseInterface(binding.getNetworkInterfaceBinding().getAddress()) .setAdvertiseInterface(binding.getNetworkInterfaceBinding().getAddress())
Expand All @@ -305,8 +310,8 @@ public ModClusterConfiguration getValue() throws IllegalStateException, IllegalA


// Proxies // Proxies
List<ProxyConfiguration> proxies = new LinkedList<>(); List<ProxyConfiguration> proxies = new LinkedList<>();
for (final ValueDependency<OutboundSocketBinding> outboundSocketBindingValueDependency : outboundSocketBindings) { for (final Supplier<OutboundSocketBinding> outboundSocketBindingValueDependency : outboundSocketBindings) {
OutboundSocketBinding binding = outboundSocketBindingValueDependency.getValue(); OutboundSocketBinding binding = outboundSocketBindingValueDependency.get();
proxies.add(new ProxyConfiguration() { proxies.add(new ProxyConfiguration() {


@Override @Override
Expand Down Expand Up @@ -334,7 +339,7 @@ public InetSocketAddress getLocalAddress() {


// SSL // SSL
if (sslContextDependency != null) { if (sslContextDependency != null) {
builder.mcmp().setSocketFactory(sslContextDependency.getValue().getSocketFactory()); builder.mcmp().setSocketFactory(sslContextDependency.get().getSocketFactory());
} }


return builder.build(); return builder.build();
Expand Down
Expand Up @@ -30,7 +30,7 @@
import org.jboss.as.controller.descriptions.ResourceDescriptionResolver; import org.jboss.as.controller.descriptions.ResourceDescriptionResolver;
import org.jboss.dmr.ModelNode; import org.jboss.dmr.ModelNode;
import org.jboss.modcluster.ModClusterServiceMBean; import org.jboss.modcluster.ModClusterServiceMBean;
import org.jboss.msc.service.ServiceController; import org.wildfly.clustering.service.ActiveServiceSupplier;


public class ModClusterDisable implements OperationStepHandler { public class ModClusterDisable implements OperationStepHandler {


Expand All @@ -45,12 +45,11 @@ static OperationDefinition getDefinition(ResourceDescriptionResolver description
@Override @Override
public void execute(OperationContext context, ModelNode operation) public void execute(OperationContext context, ModelNode operation)
throws OperationFailedException { throws OperationFailedException {
if (context.isNormalServer() && context.getServiceRegistry(false).getService(ContainerEventHandlerService.SERVICE_NAME) != null) { if (context.isNormalServer() && context.getServiceRegistry(false).getService(ContainerEventHandlerServiceConfigurator.SERVICE_NAME) != null) {
context.addStep(new OperationStepHandler() { context.addStep(new OperationStepHandler() {
@Override @Override
public void execute(OperationContext context, ModelNode operation) throws OperationFailedException { public void execute(OperationContext context, ModelNode operation) throws OperationFailedException {
ServiceController<?> controller = context.getServiceRegistry(false).getService(ContainerEventHandlerService.SERVICE_NAME); ModClusterServiceMBean service = new ActiveServiceSupplier<ModClusterServiceMBean>(context.getServiceRegistry(true), ContainerEventHandlerServiceConfigurator.SERVICE_NAME).get();
final ModClusterServiceMBean service = (ModClusterServiceMBean) controller.getValue();
service.disable(); service.disable();


context.completeStep(new OperationContext.RollbackHandler() { context.completeStep(new OperationContext.RollbackHandler() {
Expand Down

0 comments on commit 3498d14

Please sign in to comment.