2012-12-17 37 views
1

我可以通过
http://localhost:8080/ode/processes/ProcessManagement?wsdl访问此API/WS。Apache-ODE ProcessManagement

  1. 我想通过此服务获取进程的进程信息并激活它。
    服务有匹配的操作getProcessInfo并激活。
    listAllProcesses我得到一个delpoyed包的所有进程。
    对于getProcessInfo/activate我需要过程pid
    我得到一个<ns:pid>,使用这个让我负载例外。
    使用过程的名称和我以前收到的其他内容也不起作用。
    pid类型为QName,也许这就是问题的根源。
    但是我现在不会如何在这里进行类型转换。
    (已尝试过所有与Eclipse Web服务浏览器和的soapUI)

    问题:如何两种操作的适当请求是什么样子?

  2. 当我尝试通过eclipse使用axi2来使用webservice时,AnySimpleType类中有一个未声明的变量local。我不喜欢这种方式使用这项服务。 但是因为我已经在为DeploymentService编写客户端,所以我想到了这种方法。

    问题:如何正确访问ProcessManagement?

编辑:我与DeploymentServiceundeploy操作一个simular问题。
编辑2:我想出了DeploymentService undeploy的问题。
我必须得到Packagename作为字符串。然后,从中创建了一个javax.xml.namespace.QName。然后我使用了undeploy操作的setPackageName

回答质疑数1: 的soapUI与listAllProcesses返回
<ns:pid>{ode/bpel/unit-test}HelloWorld2-1</ns:pid>
getProcessInfo希望

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

现在我换成<pid>?</pid>
<pid xmlns:odetest="http://ode/bpel/unit-test">odetest:HelloWorld2-1</pid> 和它的工作就像一个魅力。

回答

1

我记得使用Axis2生成的WSDL时出现了参数排序问题。您可以尝试如果针对原始WSDL位于http://localhost:8080/ode/deployment/services/ProcessManagement的作品构建请求吗?

编辑:现在我正确地得到了这个问题,问题是ODE期望QName以不同方式序列化,即以XML方式而不是Java方式。因此,而不是<ns:pid>{ode/bpel/unit-test}HelloWorld2-1</ns:pid>正确的表示法是<ns:pid xmlns:odetest="ode/bpel/unit-test">odetest:HelloWorld2-1</ns:pid>

+0

我仍然无法伪造getProcessInfo的有效请求,如果我尝试让eclipse和axis2发挥它的魔力,那就更糟了。根本不会生成任何代码,并且出现以下错误:在WSDL的代码生成期间发生异常:org.apache.axis2.AxisFault:org.apache.ws.commons.schema.XmlSchemaException:导入的模式被宣布具有命名空间http://www.apache.org/ode/pmapi/types/2006/08/02/,但命名空间为null – snippl

+0

在soapUI中,我执行以下步骤:listAllProcesses,它给我一个我的进程列表。我有 {http:// ode/bpel/unit-test} HelloWorld2-1现在我试图用这个pid获取getProcessInfo的进程信息。我只收到一个错误的负载。我的''有什么问题? – snippl

+0

啊,请尝试使用“真正的”QName而不是它的Java序列化。所以不是''' {ode/bpel/unit-test} HelloWorld2-1'''我认为它应该读取''' odetest :HelloWorld2-1''' – vanto

相关问题