在eclipse中无法解析WSDL中的定义,可能是eclipse导入错误?

时间:2015-05-08 23:25:18

标签: xml eclipse xsd wsdl

在最初将已完成的项目加载到eclipse中进行更改后,我在包含的WSDL中的3个组件上收到错误。

错误

  

“src-resolve:无法将名称'tns:AEExceptionBO'解析为(n)'type> definition'组件。”


三要素
* submitCallFault1_submitCallFault
* getOutageStatusFault1_getOutageStatusFault
* getOutageCircuitFault1_getOutageCircuitFault

据我所知,当前存在的导入(wsdl的第8行)应正确加载xsd文件,项目中不存在其他错误。有谁知道为什么eclipse无法处理这个wsdl?

WSDL (相关部分)

<wsdl:definitions name="AEAdmsAecServiceDelegate"
    targetNamespace="http://www.orgname.com/esd/adms/aecall/V1"
    xmlns:tns="http://www.orgname.com/esd/adms/aecall/V1" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <xsd:schema targetNamespace="http://www.orgname.com/esd/adms/aecall/V1">
            <xsd:import namespace="http://www.orgname.com/esd/aeservices/lib/V1"
                schemaLocation="wsdl/AEAdmsAecService/AEExceptionBO.xsd" />
            <xsd:element name="submitCallFault1_submitCallFault"
                nillable="true" type="bons0:AEExceptionBO" />
            <xsd:element name="getOutageStatusFault1_getOutageStatusFault"
                nillable="true" type="bons0:AEExceptionBO" />
            <xsd:element name="getOutageCircuitFault1_getOutageCircuitFault"
                nillable="true" type="bons0:AEExceptionBO" />
         </xsd:schema targetNamespace>

XSD (在一个子目录中,由WSDL导入)

<xsd:schema targetNamespace="http://www.orgname.com/esd/aeservices/lib/V1"
    xmlns:bons0="http://www.orgname.com/esd/aeservices/lib/V1"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:include schemaLocation="NameValueBO.xsd" />
    <xsd:complexType name="AEExceptionBO">
        <xsd:sequence>
            <xsd:element minOccurs="1" name="appName" type="xsd:string" />
            <xsd:element minOccurs="0" name="moduleName" type="xsd:string" />
            <xsd:element minOccurs="1" name="errorCode" type="xsd:string">
            </xsd:element>
            <xsd:element minOccurs="1" name="message" type="xsd:string" />
            <xsd:element minOccurs="1" name="exceptionTime" type="xsd:dateTime">
            </xsd:element>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="nameValues"
                type="bons0:NameValueBO">
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

WSDL和其他已加载的xsd文件的不相关部分已被省略。

1 个答案:

答案 0 :(得分:1)

通常,这可能是通过将多个架构导入同一命名空间引起的。我注意到WSDL模式位于targetNamespace的{​​{1}}中,但是它下面的第一个操作是将另一个xsd导入到同一个名称空间中。我认为这里发生的事情是eclipse可能正在采取其中一种,然后未能在该命名空间中找到正确的类型定义。

考虑对这两个名称空间进行去冲突,以便每个文件使用一个名称空间。 Read this related question - 这可能有助于理解。导入应该用于引入另一个命名空间,并且include应该用于制作几个不同的文件,它们共同定义一个命名空间。