2016-08-11 13 views
1

現在、Apache CXFのcxf-codegen-pluginを使用してSOAP Webサービスクライアントを開発中です。私は複数のWSDLを持っているので、私はそれを私のJavaプロジェクトの異なるパッケージにバインドする必要があります。複数のWSDLバインディング用の単一ファイル

私の質問は、複数のWSDLファイルに対して1つの単一バインディングファイルを定義することは可能ですか?以下は

私のプラグインの設定は、私は無駄

<jaxws:bindings 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
    xmlns="http://java.sun.com/xml/ns/jaxws"> 

    <jaxws:bindings wsdlLocation="serviceA.wsdl" > 
     <jaxws:package name="org.ws.serviceA"/> 
    </jaxws:bindings> 

    <jaxws:bindings wsdlLocation="serviceB.wsdl" > 
     <jaxws:package name="org.ws.serviceB"/> 
    </jaxws:bindings> 

</jaxws:bindings> 

答えて

1

のが、このような何かを達成しようとしています

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <version>${cxf.version}</version> 
    <executions> 
     <execution> 
      <id>generate-sources</id> 
      <phase>generate-sources</phase> 
      <configuration> 
       <defaultOptions> 
        <bindingFiles> 
         <bindingFile>src/main/resources/wsdl/bindings.xjb</bindingFile> 
        </bindingFiles> 
       </defaultOptions> 
       <sourceRoot>${basedir}/src/main/java</sourceRoot> 
       <wsdlRoot>src/main/resources/wsdl</wsdlRoot> 
       <includes> 
        <include>*.wsdl</include> 
       </includes> 
      </configuration> 
      <goals> 
       <goal>wsdl2java</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

で判明し、それは確かに不可能であると明確にこのサイト

に記載されました

https://jax-ws.java.net/nonav/2.1.2/docs/customizations.html

1.1.1ルートバインディング要素

jaxws:bindings宣言は、他のすべての バインディング宣言のルートとして表示されます。この最上位のjaxws:bindings要素のは、 の値で、URIとしての wsdlLocation属性のURIとして指定する必要があります。

ただし、子要素のwsdlLocationについては何も指定しませんでした。このサイトはhttp://itdoc.hitachi.co.jp/manuals/3020/30203Y2310e/EY230286.HTM#ID00669

ルート以外のJAXWSを行います。バインディング>のwsdlLocation>属性が を指定することはできません。属性が指定されていても無視されます。 JAXBは既にこの

<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

    <jxb:bindings schemaLocation="schema1.xsd" node="//xsd:schema"> 
     <jxb:schemaBindings> 
      <jxb:package name="org.package1" /> 
     </jxb:schemaBindings> 
    </jxb:bindings> 


    <jxb:bindings schemaLocation="schema2.xsd" node="//xsd:schema"> 
     <jxb:schemaBindings> 
      <jxb:package name="org.package2" /> 
     </jxb:schemaBindings> 
    </jxb:bindings> 
</jxb:bindings> 
のように一つのファイルに複数のschemaLocationをバインドすることができてうまくいけば、これは将来的に改善することができる

関連する問題