and again in r1616931 Regards Scott
On 9/08/2014, at 12:44 pm, Scott Gray <[email protected]> wrote: > Fixed in r1616928 > > Regards > Scott > > On 9/08/2014, at 12:41 pm, Scott Gray <[email protected]> wrote: > >> Oh sorry, force of habit I guess. If we've stopped using it, why haven't we >> removed the libs? That's a sure fire way of preventing its use! >> >> Regards >> Scott >> >> On 9/08/2014, at 12:24 pm, Adrian Crum <[email protected]> >> wrote: >> >>> :( >>> >>> I thought we stopped using Javolution. >>> >>> Adrian Crum >>> Sandglass Software >>> www.sandglass-software.com >>> >>> On 8/9/2014 10:00 AM, [email protected] wrote: >>>> Author: lektran >>>> Date: Sat Aug 9 09:00:39 2014 >>>> New Revision: 1616925 >>>> >>>> URL: http://svn.apache.org/r1616925 >>>> Log: >>>> Replace the ServiceXaWrapper with a simpler Synchronization >>>> implementation. Helps pave the way for use of alternative transaction >>>> management libraries that don't work well with our XA wrapper >>>> implementations. Still DebugXaResource to go. >>>> >>>> Added: >>>> >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java >>>> (with props) >>>> Modified: >>>> >>>> ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/valuelink/ValueLinkServices.java >>>> ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonServices.java >>>> >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/GenericAbstractDispatcher.java >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/LocalDispatcher.java >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceXaWrapper.java >>>> >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java >>>> >>>> Modified: >>>> ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/valuelink/ValueLinkServices.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/valuelink/ValueLinkServices.java?rev=1616925&r1=1616924&r2=1616925&view=diff >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/valuelink/ValueLinkServices.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/thirdparty/valuelink/ValueLinkServices.java >>>> Sat Aug 9 09:00:39 2014 >>>> @@ -24,8 +24,6 @@ import java.util.Locale; >>>> import java.util.Map; >>>> import java.util.Properties; >>>> >>>> -import javax.transaction.xa.XAException; >>>> - >>>> import javolution.util.FastMap; >>>> >>>> import org.ofbiz.base.util.Debug; >>>> @@ -48,7 +46,6 @@ import org.ofbiz.service.GenericServiceE >>>> import org.ofbiz.service.LocalDispatcher; >>>> import org.ofbiz.service.ModelService; >>>> import org.ofbiz.service.ServiceUtil; >>>> -import org.ofbiz.service.ServiceXaWrapper; >>>> >>>> /** >>>> * ValueLinkServices - Integration with ValueLink Gift Cards >>>> @@ -792,13 +789,11 @@ public class ValueLinkServices { >>>> // Activate/Rollback is not supported by valuelink >>>> if (!vlInterface.equals("Activate")) { >>>> // create the listener >>>> - ServiceXaWrapper xaw = new ServiceXaWrapper(dctx); >>>> - xaw.setRollbackService("vlTimeOutReversal", context); >>>> - //xaw.setCommitService("vlTimeOutReversal", context); >>>> Debug.logInfo("Set 704 context : " + context, module); >>>> try { >>>> - xaw.enlist(); >>>> - } catch (XAException e) { >>>> + >>>> dctx.getDispatcher().addRollbackService("vlTimeOutReversal", context, >>>> false); >>>> + >>>> //dctx.getDispatcher().addCommitService("vlTimeOutReversal", context, >>>> false); >>>> + } catch (GenericServiceException e) { >>>> Debug.logError(e, "Unable to setup 0704 Timeout Reversal", >>>> module); >>>> } >>>> } >>>> @@ -1214,14 +1209,10 @@ public class ValueLinkServices { >>>> } >>>> >>>> if (!failure) { >>>> - // set the void on rollback wrapper >>>> - ServiceXaWrapper xaw = new ServiceXaWrapper(dctx); >>>> - activateCtx.put("cardNumber", >>>> activateResult.get("cardNumber")); >>>> - activateCtx.put("pin", activateResult.get("pin")); >>>> - xaw.setRollbackService("voidActivateGiftCard", >>>> activateCtx); >>>> + // set the void on rollback >>>> try { >>>> - xaw.enlist(); >>>> - } catch (XAException e) { >>>> + dispatcher.addRollbackService("voidActivateGiftCard", >>>> activateCtx, false); >>>> + } catch (GenericServiceException e) { >>>> Debug.logError(e, "Unable to setup Activate/Void on >>>> error", module); >>>> } >>>> } >>>> >>>> Modified: >>>> ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonServices.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonServices.java?rev=1616925&r1=1616924&r2=1616925&view=diff >>>> ============================================================================== >>>> --- ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonServices.java >>>> (original) >>>> +++ ofbiz/trunk/framework/common/src/org/ofbiz/common/CommonServices.java >>>> Sat Aug 9 09:00:39 2014 >>>> @@ -40,7 +40,6 @@ import java.util.Set; >>>> import java.util.TreeSet; >>>> >>>> import javax.mail.internet.MimeMessage; >>>> -import javax.transaction.xa.XAException; >>>> >>>> import javolution.util.FastList; >>>> import javolution.util.FastMap; >>>> @@ -65,8 +64,8 @@ import org.ofbiz.service.DispatchContext >>>> import org.ofbiz.service.GenericServiceException; >>>> import org.ofbiz.service.LocalDispatcher; >>>> import org.ofbiz.service.ModelService; >>>> +import org.ofbiz.service.ServiceSynchronization; >>>> import org.ofbiz.service.ServiceUtil; >>>> -import org.ofbiz.service.ServiceXaWrapper; >>>> import org.ofbiz.service.mail.MimeMessageWrapper; >>>> import org.owasp.esapi.errors.EncodingException; >>>> >>>> @@ -142,23 +141,19 @@ public class CommonServices { >>>> } >>>> >>>> public static Map<String, Object> testRollbackListener(DispatchContext >>>> dctx, Map<String, ?> context) { >>>> - Locale locale = (Locale) context.get("locale"); >>>> - ServiceXaWrapper xar = new ServiceXaWrapper(dctx); >>>> - xar.setRollbackService("testScv", context); >>>> try { >>>> - xar.enlist(); >>>> - } catch (XAException e) { >>>> + ServiceSynchronization.registerRollbackService(dctx, >>>> "testScv", null, context, false, false); >>>> + } catch (GenericServiceException e) { >>>> Debug.logError(e, module); >>>> } >>>> + Locale locale = (Locale) context.get("locale"); >>>> return ServiceUtil.returnError(UtilProperties.getMessage(resource, >>>> "CommonTestRollingBack", locale)); >>>> } >>>> >>>> public static Map<String, Object> testCommitListener(DispatchContext >>>> dctx, Map<String, ?> context) { >>>> - ServiceXaWrapper xar = new ServiceXaWrapper(dctx); >>>> - xar.setCommitService("testScv", context); >>>> try { >>>> - xar.enlist(); >>>> - } catch (XAException e) { >>>> + ServiceSynchronization.registerCommitService(dctx, "testScv", >>>> null, context, false, false); >>>> + } catch (GenericServiceException e) { >>>> Debug.logError(e, module); >>>> } >>>> return ServiceUtil.returnSuccess(); >>>> >>>> Modified: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/GenericAbstractDispatcher.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/GenericAbstractDispatcher.java?rev=1616925&r1=1616924&r2=1616925&view=diff >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/GenericAbstractDispatcher.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/GenericAbstractDispatcher.java >>>> Sat Aug 9 09:00:39 2014 >>>> @@ -22,7 +22,6 @@ import java.util.Date; >>>> import java.util.Map; >>>> >>>> import javax.transaction.Transaction; >>>> -import javax.transaction.xa.XAException; >>>> >>>> import org.ofbiz.service.calendar.RecurrenceRule; >>>> import org.ofbiz.entity.Delegator; >>>> @@ -117,14 +116,7 @@ public abstract class GenericAbstractDis >>>> } >>>> >>>> public void addRollbackService(String serviceName, Map<String, ? >>>> extends Object> context, boolean persist) throws GenericServiceException { >>>> - ServiceXaWrapper xa = new >>>> ServiceXaWrapper(this.getDispatchContext()); >>>> - xa.setRollbackService(serviceName, context, true, persist); >>>> - try { >>>> - xa.enlist(); >>>> - } catch (XAException e) { >>>> - Debug.logError(e, module); >>>> - throw new GenericServiceException(e.getMessage(), e); >>>> - } >>>> + >>>> ServiceSynchronization.registerRollbackService(this.getDispatchContext(), >>>> serviceName, null, context, true, persist); >>>> } >>>> >>>> public void addRollbackService(String serviceName, boolean persist, >>>> Object... context) throws GenericServiceException { >>>> @@ -132,14 +124,7 @@ public abstract class GenericAbstractDis >>>> } >>>> >>>> public void addCommitService(String serviceName, Map<String, ? extends >>>> Object> context, boolean persist) throws GenericServiceException { >>>> - ServiceXaWrapper xa = new >>>> ServiceXaWrapper(this.getDispatchContext()); >>>> - xa.setCommitService(serviceName, context, true, persist); >>>> - try { >>>> - xa.enlist(); >>>> - } catch (XAException e) { >>>> - Debug.logError(e, module); >>>> - throw new GenericServiceException(e.getMessage(), e); >>>> - } >>>> + >>>> ServiceSynchronization.registerCommitService(this.getDispatchContext(), >>>> serviceName, null, context, true, persist); >>>> } >>>> >>>> public void addCommitService(String serviceName, boolean persist, >>>> Object... context) throws GenericServiceException { >>>> >>>> Modified: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/LocalDispatcher.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/LocalDispatcher.java?rev=1616925&r1=1616924&r2=1616925&view=diff >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/LocalDispatcher.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/LocalDispatcher.java >>>> Sat Aug 9 09:00:39 2014 >>>> @@ -281,7 +281,7 @@ public interface LocalDispatcher { >>>> >>>> >>>> /** >>>> - * Adds a rollback service to the current TX using the >>>> ServiceXaWrapper >>>> + * Adds a rollback service to the current TX using >>>> ServiceSynchronization >>>> * @param serviceName >>>> * @param context >>>> * @param persist >>>> @@ -291,7 +291,7 @@ public interface LocalDispatcher { >>>> public void addRollbackService(String serviceName, boolean persist, >>>> Object... context) throws GenericServiceException; >>>> >>>> /** >>>> - * Adds a commit service to the current TX using the ServiceXaWrapper >>>> + * Adds a commit service to the current TX using >>>> ServiceSynchronization >>>> * @param serviceName >>>> * @param context >>>> * @param persist >>>> >>>> Added: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java?rev=1616925&view=auto >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java >>>> (added) >>>> +++ >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java >>>> Sat Aug 9 09:00:39 2014 >>>> @@ -0,0 +1,167 @@ >>>> +package org.ofbiz.service; >>>> + >>>> +import java.util.List; >>>> +import java.util.Map; >>>> +import java.util.WeakHashMap; >>>> + >>>> +import javax.transaction.RollbackException; >>>> +import javax.transaction.Status; >>>> +import javax.transaction.Synchronization; >>>> +import javax.transaction.SystemException; >>>> +import javax.transaction.Transaction; >>>> + >>>> +import javolution.util.FastList; >>>> +import javolution.util.FastMap; >>>> + >>>> +import org.ofbiz.base.util.Debug; >>>> +import org.ofbiz.entity.transaction.GenericTransactionException; >>>> +import org.ofbiz.entity.transaction.TransactionFactory; >>>> +import org.ofbiz.entity.transaction.TransactionUtil; >>>> + >>>> +/** >>>> + * This class is used to execute services when a transaction is either >>>> + * committed or rolled back. It should generally be accessed via >>>> + * LocalDispatcher's addCommitService and addRollbackService methods >>>> + * or by using the service ECA event attribute values global-commit, >>>> + * global-rollback or global-commit-post-run >>>> + * >>>> + */ >>>> +public class ServiceSynchronization implements Synchronization { >>>> + >>>> + public static final String MODULE = >>>> ServiceSynchronization.class.getName(); >>>> + >>>> + private static Map<Transaction, ServiceSynchronization> syncingleton >>>> = new WeakHashMap<Transaction, ServiceSynchronization>(); >>>> + private List<ServiceExecution> services = FastList.newInstance(); >>>> + >>>> + public static void registerCommitService(DispatchContext dctx, String >>>> serviceName, String runAsUser, Map<String, ? extends Object> context, >>>> boolean async, boolean persist) throws GenericServiceException { >>>> + ServiceSynchronization sync = >>>> ServiceSynchronization.getInstance(); >>>> + if (sync != null) { >>>> + sync.services.add(new ServiceExecution(dctx, serviceName, >>>> runAsUser, context, async, persist, false)); >>>> + } >>>> + } >>>> + >>>> + public static void registerRollbackService(DispatchContext dctx, >>>> String serviceName, String runAsUser, Map<String, ? extends Object> >>>> context, boolean async, boolean persist) throws GenericServiceException { >>>> + ServiceSynchronization sync = >>>> ServiceSynchronization.getInstance(); >>>> + if (sync != null) { >>>> + sync.services.add(new ServiceExecution(dctx, serviceName, >>>> runAsUser, context, async, persist, true)); >>>> + } >>>> + } >>>> + >>>> + protected static ServiceSynchronization getInstance() throws >>>> GenericServiceException { >>>> + ServiceSynchronization sync = null; >>>> + try { >>>> + Transaction transaction = >>>> TransactionFactory.getTransactionManager().getTransaction(); >>>> + synchronized (transaction) { >>>> + sync = syncingleton.get(transaction); >>>> + if (sync == null) { >>>> + sync = new ServiceSynchronization(); >>>> + transaction.registerSynchronization(sync); >>>> + syncingleton.put(transaction, sync); >>>> + } >>>> + } >>>> + } catch (SystemException e) { >>>> + throw new GenericServiceException(e.getMessage(), e); >>>> + } catch (IllegalStateException e) { >>>> + throw new GenericServiceException(e.getMessage(), e); >>>> + } catch (RollbackException e) { >>>> + throw new GenericServiceException(e.getMessage(), e); >>>> + } >>>> + return sync; >>>> + } >>>> + >>>> + @Override >>>> + public void afterCompletion(int status) { >>>> + for (ServiceExecution serviceExec : this.services) { >>>> + serviceExec.runService(status); >>>> + } >>>> + } >>>> + >>>> + @Override >>>> + public void beforeCompletion() { >>>> + >>>> + } >>>> + >>>> + static class ServiceExecution { >>>> + protected DispatchContext dctx = null; >>>> + protected String serviceName; >>>> + protected String runAsUser = null; >>>> + protected Map<String, ? extends Object> context = null; >>>> + protected boolean rollback = false; >>>> + protected boolean persist = true; >>>> + protected boolean async = false; >>>> + >>>> + ServiceExecution(DispatchContext dctx, String serviceName, String >>>> runAsUser, Map<String, ? extends Object> context, boolean async, boolean >>>> persist, boolean rollback) { >>>> + this.dctx = dctx; >>>> + this.serviceName = serviceName; >>>> + this.runAsUser = runAsUser; >>>> + this.context = context; >>>> + this.async = async; >>>> + this.persist = persist; >>>> + this.rollback = rollback; >>>> + } >>>> + >>>> + protected void runService(int status) { >>>> + if ((status == Status.STATUS_COMMITTED && !rollback) || >>>> (status == Status.STATUS_ROLLEDBACK && rollback)) { >>>> + Thread thread = new Thread() { >>>> + @Override >>>> + public void run() { >>>> + String msgPrefix = null; >>>> + if (rollback) { >>>> + msgPrefix = "[Rollback] "; >>>> + } else { >>>> + msgPrefix = "[Commit] "; >>>> + } >>>> + >>>> + boolean beganTx; >>>> + try { >>>> + // begin the new tx >>>> + beganTx = TransactionUtil.begin(); >>>> + // configure and run the service >>>> + try { >>>> + // obtain the model and get the valid >>>> context >>>> + ModelService model = >>>> dctx.getModelService(serviceName); >>>> + Map<String, Object> thisContext; >>>> + if (model.validate) { >>>> + thisContext = >>>> model.makeValid(context, ModelService.IN_PARAM); >>>> + } else { >>>> + thisContext = FastMap.newInstance(); >>>> + thisContext.putAll(context); >>>> + } >>>> + >>>> + // set the userLogin object >>>> + thisContext.put("userLogin", >>>> ServiceUtil.getUserLogin(dctx, thisContext, runAsUser)); >>>> + if (async) { >>>> + if (Debug.infoOn()) >>>> Debug.logInfo(msgPrefix + "Invoking [" + serviceName + "] via runAsync", >>>> MODULE); >>>> + >>>> dctx.getDispatcher().runAsync(serviceName, thisContext, persist); >>>> + } else { >>>> + if (Debug.infoOn()) >>>> Debug.logInfo(msgPrefix + "Invoking [" + serviceName + "] via >>>> runSyncIgnore", MODULE); >>>> + >>>> dctx.getDispatcher().runSyncIgnore(serviceName, thisContext); >>>> + } >>>> + } catch (Throwable t) { >>>> + Debug.logError(t, "Problem calling " + >>>> msgPrefix + "service : " + serviceName + " / " + context, MODULE); >>>> + try { >>>> + TransactionUtil.rollback(beganTx, >>>> t.getMessage(), t); >>>> + } catch (GenericTransactionException e) { >>>> + Debug.logError(e, MODULE); >>>> + } >>>> + >>>> + } finally { >>>> + // commit the transaction >>>> + try { >>>> + TransactionUtil.commit(beganTx); >>>> + } catch (GenericTransactionException e) { >>>> + Debug.logError(e, MODULE); >>>> + } >>>> + } >>>> + } catch (GenericTransactionException e) { >>>> + Debug.logError(e, MODULE); >>>> + } >>>> + >>>> + } >>>> + }; >>>> + thread.start(); >>>> + } >>>> + } >>>> + } >>>> + >>>> +} >>>> >>>> Propchange: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java >>>> ------------------------------------------------------------------------------ >>>> svn:eol-style = native >>>> >>>> Propchange: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java >>>> ------------------------------------------------------------------------------ >>>> svn:keywords = "Date Rev Author URL Id" >>>> >>>> Propchange: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceSynchronization.java >>>> ------------------------------------------------------------------------------ >>>> svn:mime-type = text/plain >>>> >>>> Modified: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceXaWrapper.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceXaWrapper.java?rev=1616925&r1=1616924&r2=1616925&view=diff >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceXaWrapper.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/ServiceXaWrapper.java >>>> Sat Aug 9 09:00:39 2014 >>>> @@ -34,7 +34,9 @@ import org.ofbiz.entity.transaction.Tran >>>> >>>> /** >>>> * ServiceXaWrapper - XA Resource wrapper for running services on commit() >>>> or rollback() >>>> + * @deprecated - Use ServiceSynchronization instead (via LocalDispatcher) >>>> */ >>>> +@Deprecated >>>> public class ServiceXaWrapper extends GenericXaResource { >>>> >>>> public static final String module = ServiceXaWrapper.class.getName(); >>>> >>>> Modified: >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java >>>> URL: >>>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java?rev=1616925&r1=1616924&r2=1616925&view=diff >>>> ============================================================================== >>>> --- >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java >>>> (original) >>>> +++ >>>> ofbiz/trunk/framework/service/src/org/ofbiz/service/eca/ServiceEcaAction.java >>>> Sat Aug 9 09:00:39 2014 >>>> @@ -22,8 +22,6 @@ import java.util.LinkedList; >>>> import java.util.List; >>>> import java.util.Map; >>>> >>>> -import javax.transaction.xa.XAException; >>>> - >>>> import javolution.util.FastMap; >>>> >>>> import org.ofbiz.base.util.Debug; >>>> @@ -33,8 +31,8 @@ import org.ofbiz.service.DispatchContext >>>> import org.ofbiz.service.GenericServiceException; >>>> import org.ofbiz.service.LocalDispatcher; >>>> import org.ofbiz.service.ModelService; >>>> +import org.ofbiz.service.ServiceSynchronization; >>>> import org.ofbiz.service.ServiceUtil; >>>> -import org.ofbiz.service.ServiceXaWrapper; >>>> import org.w3c.dom.Element; >>>> >>>> /** >>>> @@ -115,19 +113,12 @@ public class ServiceEcaAction implements >>>> } >>>> >>>> if (eventName.startsWith("global-")) { >>>> - // XA resource ECA >>>> - ServiceXaWrapper xaw = new ServiceXaWrapper(dctx); >>>> if (eventName.equals("global-rollback")) { >>>> - xaw.setRollbackService(serviceName, runAsUser, context, >>>> "async".equals(serviceMode), persist); // using the actual context so we >>>> get updates >>>> + ServiceSynchronization.registerRollbackService(dctx, >>>> serviceName, runAsUser, context, "async".equals(serviceMode), persist); // >>>> using the actual context so we get updates >>>> } else if (eventName.equals("global-commit")) { >>>> - xaw.setCommitService(serviceName, runAsUser, context, >>>> "async".equals(serviceMode), persist); // using the actual context so we >>>> get updates >>>> + ServiceSynchronization.registerCommitService(dctx, >>>> serviceName, runAsUser, context, "async".equals(serviceMode), persist); // >>>> using the actual context so we get updates >>>> } else if (eventName.equals("global-commit-post-run")) { >>>> - xaw.setCommitService(serviceName, runAsUser, context, >>>> "async".equals(serviceMode), persist); // using the actual context so we >>>> get updates >>>> - } >>>> - try { >>>> - xaw.enlist(); >>>> - } catch (XAException e) { >>>> - throw new GenericServiceException("Unable to enlist >>>> ServiceXaWrapper with transaction", e); >>>> + ServiceSynchronization.registerCommitService(dctx, >>>> serviceName, runAsUser, context, "async".equals(serviceMode), persist); // >>>> using the actual context so we get updates >>>> } >>>> } else { >>>> // standard ECA >>>> >>>> >> >
