2011-02-02 6 views
2

웹 서비스 클라이언트를 만드는 방법을 이해하는 데 문제가 있습니다. 이야기는 웹 서비스를 호출해야한다는 것입니다. 그러면 웹 서비스의 올바른 클래스를 얻기 위해 어떻게 든 웹 서비스를 사용해야합니다.WSDL 사용 - 어떤 도구를 사용합니까?

나는 이것을 수행하는 많은 방법을 조사했습니다. 예를 들어 나는 스크립트를 사용하여이를 소비 한 다음 클래스를 가져 오려고했습니다.

그러나 이미 Maven-2를 사용하고 있으므로 Maven-plugin wsdl2code를 사용해 보도록 권장했습니다. 이 작업을 수행하지만 그것을 볼 수 많은 정크 파일을 만듭니다. 내 pom.xml 파일에 다음을 추가했습니다 :

<plugin> 
    <groupId>org.apache.axis2</groupId> 
    <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>wsdl2code</goal> 
      </goals> 
      <configuration> 
       <packageName>ws.client.test</packageName> 
       <wsdlFile>http://localhost:8088/test?WSDL</wsdlFile> 
       <databindingName>xmlbeans</databindingName> 
       <outputDirectory>target/ws/test</outputDirectory> 
      </configuration> 
     </execution> 
     </executions> 
</plugin> 

이 성공적으로 파일을 생성하지만 말했듯이, 또한 정크 파일이 많이있다 ( xmlsoap/스키마/비누/인코딩/...) 또는 내가 본 다른 WSDLconsume보다 더 쓸모없는 파일 (적어도 내가 본 것)은 많다.

질문

  • 는 웹 서비스를 소비하는 방법을 일반적인 지침이 있습니까? WSDL에 파일이 외부에 있기 때문에 그것은 또한 변화 될 수 있고, 그 때문에 나는 그것이합니다 ( WSDL이 갑자기 변경 한 경우 이 ... 다른 부작용이있을 것이지만)이 메이븐 자동으로 일을 가진 좋은 수 생각했다. wsdl2code가 좋은 선택 인 경우

  • , 모든 파일은 항상 목표 CATALOUGE 만들어야합니다 그래서 그들은 제거되고
    )는 MVN 깨끗한 실행할 때?

  • 다른 도구가 더 적합할까요?

업데이트 내가 원하는 생성 된 파일을 얻을 예를 JAX-WS의 wsimport의에 대한 사용하여/편집
. 그러나이 파일을/target-folder에 만들어서 같은 프로젝트에서 실제로 웹 서비스를 호출하기를 원합니다. 이것이 가능한가?

답변

3

java-1.6을 사용하고 있다면 jax-ws를 사용할 수 있습니다. jax-ws는 온보드 Java 도구로 매우 쉽게 사용할 수 있습니다. 추가 종속성없이 사용할 수있는 webservice 클라이언트를 만드는 좋은 maven 플러그인이 있습니다. 살펴보기 http://jax-ws-commons.java.net/jaxws-maven-plugin/

자세한 연습은 http://blogs.oracle.com/enterprisetechtips/entry/using_jax_ws_with_maven을 참조하십시오.

+0

고마워요! wsimport가 나를 위해 일하는 것 같습니다. 이것이 나에게 또 다른 의문을 제기했지만. 아이디어가있는 경우 내 소식을 업데이트했습니다. – user373455

+0

같은 프로젝트 나 의존 프로젝트에서 문제없이 호출 할 수 있습니다. m2eclipse를 사용하는 경우 추가 프로젝트 구성 프로젝트가 필요하거나 소스 조회 경로에 target/generated-sources/wsimport를 직접 입력해야합니다.어쨌든 maven 자체는 문제없이 프로젝트를 빌드해야합니다. – mglauche

1

시도해 볼 수 있습니다 CXF wsdl2java plugin. 또한 혼란을 피하기 위해 생성 된 소스를 별도의 소스 폴더에 저장하는 것이 좋습니다. 결국 구성은 다음과 같습니다.

 <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <version>2.3.0</version> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <sourceRoot>src/main/generated</sourceRoot> 
         <wsdlOptions> 
          <wsdlOption> 
           <wsdl>src/main/resources/your-service.wsdl</wsdl> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-clean-plugin</artifactId> 
      <version>2.4.1</version> 
      <executions> 
       <execution> 
        <id>auto-clean</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>clean</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <filesets> 
        <fileset> 
         <directory>src/main/generated</directory> 
         <includes> 
          <include>**/*.java</include> 
         </includes> 
         <followSymlinks>false</followSymlinks> 
        </fileset> 
       </filesets> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <version>1.5</version> 
      <executions> 
       <execution> 
        <id>add-source</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>src/main/generated</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

감사! 결국 wsimport를 사용하기로했습니다. 비록 당신이 팁을 주셔서 감사하지만 그들을 별도의 소스 폴더에 보관하십시오. – user373455

관련 문제