如何从Java程序获取Ofbiz中的DispatchContext

如何从Java程序获取Ofbiz中的DispatchContext,java,ofbiz,Java,Ofbiz,我花了几个小时试图在“ApacheObiz食谱”和“ApacheObiz开发:初学者教程”中找到答案,如何从Java方法获取Obiz中的DispatchContext。露丝·霍夫曼的食谱中没有这段代码,她只是说“准备任何上下文参数”,第43页。我可以理解在注册服务或事件时如何获得DispatchContext,但如何从Java获得它?谢谢 我试图从Tomcat中REST web服务的服务器端填充我在Ofbiz中定义的Ofbiz实体/表 GenericDelegator delegator

我花了几个小时试图在“ApacheObiz食谱”和“ApacheObiz开发:初学者教程”中找到答案,如何从Java方法获取Obiz中的DispatchContext。露丝·霍夫曼的食谱中没有这段代码,她只是说“准备任何上下文参数”,第43页。我可以理解在注册服务或事件时如何获得DispatchContext,但如何从Java获得它?谢谢

我试图从Tomcat中REST web服务的服务器端填充我在Ofbiz中定义的Ofbiz实体/表

    GenericDelegator delegator = ctx.getDelegator();
    GenericValue myTable = delegator.makeValue("MyTable");
    myTable.set("name", myTableAsJson.getString("name"));


    try {
        delegator.store(offering);
    } catch(Exception e) {

    }

在Java方法/事件中,可以使用以下代码段获取dispatach上下文:

GenericDispatcher dispatcher = (GenericDispatcher) request.getAttribute("dispatcher");
DispatchContext dctx =  dispatcher.getDispatchContext();
GenericDispatcher dispatcher = (GenericDispatcher) request.getAttribute("dispatcher");
dispatcher.runSync("SERVICE_NAME", context);
在Java方法/事件中,可以使用以下代码段调用任何服务:

GenericDispatcher dispatcher = (GenericDispatcher) request.getAttribute("dispatcher");
DispatchContext dctx =  dispatcher.getDispatchContext();
GenericDispatcher dispatcher = (GenericDispatcher) request.getAttribute("dispatcher");
dispatcher.runSync("SERVICE_NAME", context);
其中,上下文是所需输入/输出参数到服务的映射


要从Java方法/事件调用服务,不需要paas调度上下文。只需要服务名称和上下文。

此方法不再有效。来自控制器的HttpServletRequest仍然有一个属性“dispatcher”,但您现在必须将其强制转换为LocalDispatcher类,然后使用该属性获取DispatcheContext

这来自OFBiz维修引擎文档[1]: “服务框架的内部使用非常简单。在Web应用程序中,LocalDispatcher存储在ServletContext中,可通过事件中的会话对象访问该上下文。”

这对我很有用:

Delegator delegator = (Delegator) request.getAttribute("delegator");
LocalDispatcher ld = (LocalDispatcher) request.getAttribute("dispatcher");
DispatchContext dctx = ld.getDispatchContext();
[1]