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

7

我之前使用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

这段内容是关于IT技术的,基于Metro Guide示例编写而成,但没有使用-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

有人能指出我做错了什么吗?

更新

我已经尝试使用绝对路径(并重新排列参数顺序),但仍然无法解决问题。我仍然不断地在命令控制台上打印:

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

9

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接