2011-03-08 7 views
5

이전에 wsimport를 사용하여 Metro 클라이언트를 생성했지만 그 경우에는 https를 통해 WSDL에 액세스했습니다. 내게 명령 한 내용은 다음과 같습니다.로컬 WSDL 파일을 사용하여 메트로 클라이언트 생성

wsimport https://service.net/services/Service?wsdl -d C:\ClientProject\src\main\java -keep 

모든 것이 정상적으로 처리되었습니다. 이제는 클라이언트를 생성하려고하는데, WSDL 파일의 로컬 복사본 만 있습니다. 내 프로젝트 디렉토리 (C에서 : \ (STABLE)) : 다음과 같이 설정되어

ClientProject 
    |- src 
    |- main 
     |- java 
    |- resources 
     |- META-INF 
      |- service.wsdl 
    |- wsimport.bat 

wsimport.bat 파일은 다음과 같다 : 메트로 가이드 예에 있지만없이 기반으로했다

wsimport -keep -d ../src/main/java -wsdlLocation ../src/resources/META-INF/service.wsdl 

-p 옵션 (http://metro.java.net/guide/Developing_client_application_with_locally_packaged_WSDL.html). 그러나, 박쥐 파일을 실행할 때 콘솔에 인쇄되는 명령의 무한 루프가 발생합니다. 예 :

C:\Devel\ClientProject>wsimport -keep -d ../src/main/java -wsdlLocation ../src/resources/META-INF/service.wsdl 

누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?

UPDATE

나는 절대 경로를 사용하여 (그리고 아무 소용에 PARAM 순서를 재 배열 난 아직도 끝없는 명령 콘솔 인쇄 얻을 시도 : 사용하는 경우

wsimport C:\Devel\ClientProject\src\resources\META-INF\service.wsdl -d C:\Devel\ClientProject\src\main\java -keep 

답변

7

http://www.java.net/forum/topic/glassfish/metro-and-jaxb/problems-generating-client-using-local-wsdl-file#comment-812705

합니다. wsimport 명령을 실행하는 .bat 파일 인 경우 wsimport로 이름을 지정하지 마십시오. 그렇지 않으면 해당 파일을 호출하는 끝없는 재귀 루프에있게됩니다.

또한 "-wsdllocation"은 대소 문자를 구분합니다. "-wsdlLocation"은 작동하지 않습니다 (검색 중에 많은 예제를 보았지만).

이 wsimport의 명령은 로컬 WSDL에서 클라이언트 코드를 생성하고 서비스 클래스에 "그러나 wsdlLocation"속성을 설정합니다 '@WebServiceClient 주석 :

wsimport src/resources/META-INF/service.wsdl -keep -d src/main/java -wsdllocation META-INF/service.wsdl