org.wso2.carbon.context.CarbonContext.getThreadLocalCarbonContext()在进程步骤为异步

时间:2017-09-06 08:13:11

标签: wso2 wso2bps

使用wso2bps 3.6.0

我的流程步骤中有这样的代码:

import org.wso2.carbon.context.CarbonContext;
CarbonContext cctx = CarbonContext.getThreadLocalCarbonContext();
String domain = cctx.getTenantDomain();

如果步骤标记为Exclusive,则此代码返回正确的值。

如果步骤标记为Asynchronous,则我获得domain=null

最后,此行为无法访问其他碳属性和注册表。

此ThreadLocal数据持有者中的问题似乎没有返回org.wso2.carbon.context.internal.CarbonContextDataHolder中我的异步线程的初始化持有者:

private static ThreadLocal<CarbonContextDataHolder> currentContextHolder = new ThreadLocal(){
    protected CarbonContextDataHolder initialValue(){
      return new CarbonContextDataHolder(null);
    }
};

问题

如何在异步时的流程步骤中获取碳域和注册表?

也许有办法初始化我的线程以允许使用碳注册表?

PS:作为解决方法,我在流程中长时间运行Anync步骤之前使用Exclusive步骤来评估所需的碳依赖属性。

0 个答案:

没有答案