diff --git a/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java b/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java
index 31fd1d03ec8c..90ad35e10271 100644
--- a/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java
+++ b/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java
@@ -29,21 +29,22 @@
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;
+import java.util.function.Consumer;
+
/**
- *
* @author Martin Kouba
+ * @author Richard Opalka
*/
public class TransactionsBootstrapDependencyInstaller implements BootstrapDependencyInstaller {
@Override
public ServiceName install(ServiceTarget serviceTarget, DeploymentUnit deploymentUnit, boolean jtsEnabled) {
- final WeldTransactionServices weldTransactionServices = new WeldTransactionServices(jtsEnabled);
-
final ServiceName weldTransactionServiceName = deploymentUnit.getServiceName().append(WeldTransactionServices.SERVICE_NAME);
-
- final ServiceBuilder sb = serviceTarget.addService(weldTransactionServiceName, weldTransactionServices);
+ final ServiceBuilder> sb = serviceTarget.addService(weldTransactionServiceName);
+ final Consumer weldTransactionServicesConsumer = sb.provides(weldTransactionServiceName);
// Ensure the local transaction provider is started before we start
sb.requires(ServiceNames.capabilityServiceName(deploymentUnit, "org.wildfly.transactions.global-default-local-provider"));
+ sb.setInstance(new WeldTransactionServices(jtsEnabled, weldTransactionServicesConsumer));
sb.install();
return weldTransactionServiceName;
diff --git a/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java b/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java
index 29078da9393f..87ca71ab02ec 100644
--- a/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java
+++ b/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java
@@ -21,6 +21,8 @@
*/
package org.jboss.as.weld.services.bootstrap;
+import java.util.function.Consumer;
+
import javax.transaction.RollbackException;
import javax.transaction.Status;
import javax.transaction.Synchronization;
@@ -28,10 +30,9 @@
import javax.transaction.UserTransaction;
import org.jboss.as.weld.ServiceNames;
-import org.jboss.msc.service.Service;
+import org.jboss.msc.Service;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.StartContext;
-import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;
import org.jboss.weld.transaction.spi.TransactionServices;
import org.wildfly.transaction.client.ContextTransactionManager;
@@ -44,16 +45,17 @@
*
* @author Stuart Douglas
* @author Tomasz Adamski
- *
+ * @author Richard Opalka
*/
-public class WeldTransactionServices implements TransactionServices, Service {
+public class WeldTransactionServices implements TransactionServices, Service {
public static final ServiceName SERVICE_NAME = ServiceNames.WELD_TRANSACTION_SERVICES_SERVICE_NAME;
-
+ private final Consumer weldTransactionServicesConsumer;
private final boolean jtsEnabled;
- public WeldTransactionServices(final boolean jtsEnabled) {
+ public WeldTransactionServices(final boolean jtsEnabled, final Consumer weldTransactionServicesConsumer) {
this.jtsEnabled = jtsEnabled;
+ this.weldTransactionServicesConsumer = weldTransactionServicesConsumer;
}
@Override
@@ -101,18 +103,13 @@ public void registerSynchronization(Synchronization synchronizedObserver) {
}
@Override
- public void start(StartContext context) throws StartException {
-
- }
-
- @Override
- public void stop(StopContext context) {
-
+ public void start(final StartContext context) {
+ weldTransactionServicesConsumer.accept(this);
}
@Override
- public WeldTransactionServices getValue() throws IllegalStateException, IllegalArgumentException {
- return this;
+ public void stop(final StopContext context) {
+ weldTransactionServicesConsumer.accept(null);
}
}