【问题标题】:Apache-ODE ProcessManagementApache-ODE 进程管理
【发布时间】:2012-12-17 11:59:00
【问题描述】:

我可以通过
http://localhost:8080/ode/processes/ProcessManagement?wsdl访问这个API/WS。

  1. 我想通过此服务获取进程的进程信息并激活它。
    服务有匹配操作getProcessInfo和activate。
    使用 listAllProcesses 我得到了一个 delpoyed 包的所有进程。
    对于getProcessInfo/activate,我需要进程pid
    我得到了一个<ns:pid>,使用它会给我带来很多异常。
    使用我之前收到的进程名称和其他内容也不起作用。
    pid 的类型是 QName,也许这就是问题的根源。
    但是我现在不知道如何在这里进行类型转换。
    (用 eclipse Web Services Explorer 和soapUI 都试过了)

    问题:对这两个操作的正确请求是什么样的?

  2. 当我尝试通过 eclipse 使用 axi2 使用 web 服务时,AnySimpleType 类中有一个未声明的变量 local。我不热衷于以这种方式使用该服务。 但由于我已经在为 DeploymentService 编写客户端,所以我考虑了这种方法。

    问题:如何正确访问 ProcessManagement?

编辑:DeploymentServiceundeploy 操作存在类似问题。
EDIT2:我发现了 DeploymentService undeploy 的问题。
我必须将 Packagename 作为字符串。然后用它制作了一个 javax.xml.namespace.QName 。然后我用了setPackageName所说的undeploy操作。

回答第 1 个问题: 带有 listAllProcesses 的soapUI 返回
<ns:pid>{ode/bpel/unit-test}HelloWorld2-1</ns:pid>
getProcessInfo 想要

<pmap:getProcessInfo>
    <pid>?</pid>
</pmap:getProcessInfo>

现在我将&lt;pid&gt;?&lt;/pid&gt; 替换为
&lt;pid xmlns:odetest="http://ode/bpel/unit-test"&gt;odetest:HelloWorld2-1&lt;/pid&gt; 它就像一个魅力。

【问题讨论】:

    标签: axis2 apache-ode


    【解决方案1】:

    我记得在使用 Axis2 生成的 WSDL 时参数排序存在问题。您能否尝试针对位于 http://localhost:8080/ode/deployment/services/ProcessManagement 的原始 WSDL 构建请求是否有效?

    编辑: 现在我得到了正确的问题,问题是 ODE 期望 QName 以不同的方式序列化,即以 XML 方式而不是 Java 方式。因此,正确的符号是&lt;ns:pid xmlns:odetest="ode/bpel/unit-test"&gt;odetest:HelloWorld2-1&lt;/ns:pid&gt;,而不是&lt;ns:pid&gt;{ode/bpel/unit-test}HelloWorld2-1&lt;/ns:pid&gt;

    【讨论】:

    • 我仍然无法伪造对 getProcessInfo 的有效请求,如果我试图让 eclipse 和 axis2 发挥它的魔力,那就更糟了。根本不会生成任何代码,我收到以下错误:为 WSDL 生成代码期间发生异常:org.apache.axis2.AxisFault:org.apache.ws.commons.schema.XmlSchemaException:宣布导入的架构具有命名空间apache.org/ode/pmapi/types/2006/08/02,但命名空间为空
    • 在soapUI 中我执行以下步骤:listAllProcesses,它为我提供了我的进程列表。我有即 {ode/bpel/unit-test}HelloWorld2-1 现在我尝试使用 getProcessInfo 和这个 pid 获取进程信息。我只收到一大堆错误。我的&lt;pid&gt; 有什么问题?
    • 啊,请尝试使用“真实”的 QName 而不是它的 java 序列化。所以不是&lt;ns:pid&gt;{ode/bpel/unit-test}HelloWorld2-1&lt;/ns:pid&gt; 我认为它应该是&lt;ns:pid xmlns:odetest="ode/bpel/unit-test"&gt;odetest:HelloWorld2-1&lt;/ns:pid&gt;
    • 由于无法使用axis2导入服务,所以我使用的是soapUI。 &lt;soapenv:Body&gt; 看起来像这样 &lt;pmap:getProcessInfo&gt;&lt;pid&gt;?&lt;/pid&gt;&lt;/pmap:getProcessInfo&gt;。 pid 不是 ns:pid,就像我从 listAllProcesses 中得到的那样。所以我仍然收到很多错误。
    • 您的建议几乎是正确的,缺少 http://。我用有效的&lt;pid xmlns:odetest="http://ode/bpel/unit-test"&gt;odetest:HelloWorld2-1&lt;/pid&gt; 替换了&lt;pid&gt;&lt;/pid&gt;。不幸的是,这只是soapUI。
    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多