WSO2 BPEL使用不同的名称空间导入wsdl服务,但使用相同的模式名称空间

时间:2015-05-19 10:22:27

标签: namespaces wsdl wso2 bpel

我使用的是WSO2 BPS 3.2.0,WSO2应用服务器5.2.1和WSO2身份服务器5.0.0。
我的进程调用许多服务,因此它导入了许多WSDL BPEL的WSDL有:

<import location="Service1.wsdl" namespace="http://webservice1.com/"/>  
<import location="Service2.wsdl" namespace="http://webservice2.com/"/> 

但是两个Web服务在同一名称空间中导入模式 所以Service1.wsdl有

<wsdl:types>
  <xsd:schema>
    <xsd:import namespace="http://Message.com" schemaLocation="webservice1.xsd"></xsd:import>
  </xsd:schema>
</wsdl:types>

和Service2.wsdl有

<wsdl:types>
  <xsd:schema>
    <xsd:import namespace="http://Message.com" schemaLocation="webservice2.xsd"></xsd:import>
  </xsd:schema>
</wsdl:types>

WSDL是有效的,在我尝试部署进程之前一切正常 然后我得到例外:

Caused by: org.apache.ode.bpel.compiler.api.CompilationException: error: [CompilationErrors] Compilation completed with 4 error(s):
file:/D:/WSO2/WSO2BP~1.0/bin/../tmp/work/bpelTemp/1.4320261653222122E12/messageProcess_1.0.0/messageProcess.bpel:52: error: [UndeclaredXsdType]
Attempt to reference undeclared XSD type "{http://Message.com}Message".
file:/D:/WSO2/WSO2BP~1.0/bin/../tmp/work/bpelTemp/1.4320261653222122E12/messageProcess_1.0.0/messageProcess.bpel:176: error: [UndeclaredVariable]
Attempt to reference undeclared variable "Service1PLRequest".
null:190: error: [UndeclaredVariable] Attempt to reference undeclared variable "Service1PLRequest".

我发现避免这种情况的唯一方法是重命名服务WSDL之一的模式名称空间(删除其中一个webservice也可以:))。
但是这两个服务使用相同的第三方模式,并且命名空间重命名是不合适的如何解决这个难题?有一些最佳做法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

爱德华尼尔。

抱歉,我没得到它..

您说两个Web服务共享相同的命名空间......但您提供了不同的命名空间。

import location="Service1.wsdl" namespace="http://webservice1.com/
import location="Service2.wsdl" namespace="http://webservice2.com/

其他问题似乎与错误的变量名称有关。

Service1PLRequest不存在......