6

いくつかのXMLスキーマをインポートするWSDLファイルがあり、それぞれが同じ名前空間を持っています(これをAと呼びましょう)。JAXB外部バインディングファイルを使用して、これらのスキーマに対して生成されたパッケージ名(たとえばB)を変更しようとしています。次に例を示します。

(cxf-codegen-pluginを使用して)WSDLからコードを生成するための構成を含むPOMファイルがあります。

私のWSDL:

<definitions ...>
    <types>
         <xsd:schema elementFormDefault="qualified" targetNamespace="C">
             <xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
             <xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
             ...
         </xsd:schema>
    </types>
    ...
</definitions>

これが私の実際のバインディングファイルですが、まったく機能していません。まったく適用されていないようです(エラーメッセージはありません...)。

<jaxws:bindings wsdlLocation="WSDL_LOCATION" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" jaxb:version="2.0">
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='C']/xs:import[@namespace='A']">.
        <jaxb:schemaBindings>
            <jaxb:package name="B" />
        </jaxb:schemaBindings>
    </jaxws:bindings>
</jaxws:bindings>

生成中にエラーメッセージがないので、インポートされたスキーマへのアクセスに使用されるXPath式が適切でないことが原因である可能性があります...

手がかりはありますか?私はここでちょっと立ち往生しています...

ご入力いただきありがとうございます!

4

2 に答える 2

0

興味深いことに、答えがありません :) 残念ながら、必要なものをアーカイブすることはできません。唯一の方法は、スキーマ ファイルごとに個別のバインド ファイルを定義することです。これは正常に機能します。

于 2011-06-14T11:33:31.273 に答える