使用本地WSDL文件生成Metro客户端

时间:2011-03-08 19:02:46

标签: wsdl java-metro-framework wsimport

之前我使用wsimport生成了一个Metro客户端,但在这种情况下,WSDL是通过https访问的。我的遗体看起来像这样:

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

一切正常。现在我正在尝试生成一个客户端,但是,我只有一个WSDL文件的本地副本。我的项目目录设置如下(在c:\ Devel中):

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

基于Metro Guide示例,但没有-p选项(http://metro.java.net/guide/Developing_client_application_with_locally_packaged_WSDL.html)。但是,当我运行bat文件时,我得到一个无限循环的命令被打印到控制台。 E.g。

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

有人可以指出我做错了吗?

更新

我尝试过使用绝对路径(并重新排列参数顺序无效。我仍然得到无尽的命令控制台打印:

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

1 个答案:

答案 0 :(得分:7)

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

如果使用.bat文件来运行wsimport命令,请不要将其命名为wsimport,否则您将处于调用该文件的无限递归循环中。

此外,“-wsdllocation”区分大小写。 “-wsdlLocation”不起作用(虽然我在搜索过程中看过很多例子)。

此wsimport命令从本地WSDL生成客户端代码,并在Service类的'@WebServiceClient注释上设置“wsdlLocation”属性:

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