なぜこれが当てはまるのかわからないということを最初に言わせてください。しかし、名前空間の正確な内容は、それらがすべて同じである限り、重要ではないかもしれないと思います。通常の例外を盲目的に拡張するだけなので、SOAPExceptionの特別な機能も使用していません。とにかく、私は3つのことを行うことで、SoapUIにXMLからクライアントを構築させることができました。
まず、SOAPException自体を表すセクションを次のように追加しました。
<xs:schema xmlns:test="http://service.PROJECT.DEPARTMENT.COMPANY.com" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://DEPARTMENT.COMPANY.com/xsd">
<xs:import namespace="http://service.PROJECT.DEPARTMENT.COMPANY.com"/>
<xs:complexType name="SOAPException">
<xs:complexContent>
<xs:extension base="ns:Exception">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
次に、次の名前空間をwsdl:definitionsブロックに追加しました。
xmlns:im="http://DEPARTMENT.COMPANY.com/xsd"
第3に、SOAPExceptionベースタイプ(ここから)を参照する名前空間を、以前に参照されていた場所ns
に変更しました。im
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.ims.im.sa.homedepot.com/xsd">
<xs:complexType name="SOAPLocatorException">
<xs:complexContent>
<xs:extension base="im:SOAPException">
<xs:sequence>
<xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="messageCode" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
XMLファイルはまだXMLSpyできれいに検証されませんが、直接影響を与えないより難解な理由のためだけです(Soap11およびSoap12バインディングに障害が定義されている操作には、生のHTTPバインディング)。
それは機能しますが、私はまだ次のことについて少し混乱しています:
- Axis2がSOAPExceptionタイプについて知っていた場合(そして、それが他の例外の基本クラスとして言及されていたため)、なぜそれを
xs:schema
ブロックで定義しなかったのですか?
- それらの同じ線に沿って、別のタイプの基本クラスとして使用するときに、なぜ誤った名前空間からクラスを参照したのですか?
DEPARTMENT.COMPANY.com
Axis2パッケージまたはそれを使用するサービスオブジェクトのパッケージではなく、このタイプの名前空間を設定する必要があるのはなぜですか?