2016-08-11 3 views
1

현재 Apache CXF의 cxf-codegen-plugin을 사용하여 SOAP 웹 서비스 클라이언트를 개발 중입니다. 여러 WSDL을 가지고 있기 때문에 자바 프로젝트의 다른 패키지에 바인드해야한다.다중 WSDL 바인딩을위한 단일 파일

제 질문은 여러 개의 WSDL 파일에 대해 하나의 단일 바인딩 파일을 정의 할 수 있습니까? 다음은

, 그것은 참으로 불가능하고 명확하게이 사이트에 명시된 내 플러그인 구성 내가

<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> 

입니다

1.1.1 루트 바인딩 요소

jaxws : bindings 선언은 다른 모든 바인딩 선언의 루트로 나타납니다. 이 최상위 jaxws : bindings 요소 이어야합니다. wsdlLocation 특성의 값으로 URI로 WSDL 파일의 위치를 ​​지정하십시오.

그러나 자식 요소의 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를 바인딩 할 수 있습니다으로 앞으로 개선 될 수있다