邀月

从.net中走来的Java爱好者
posts - 22, comments - 10, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

《Java与WCF交互(一):Java客户端调用WCF服务》一 文中,我描述了用axis2的一个Eclipse控件生成WCF的Java客户端代理类,后来有朋友建议用Xfire、CXF,一直没有尝试,今天有朋友 指出JDK6可以用java自带的一个WSImport工具,试了下,果然很爽,这是一个exe文件,位于%JAVA_HOME%"\bin下,它的官方使 用说明,见:http://download-llnw.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html,主要参数:

Option

Description

-d <directory>  

Specify where to place generated output files

-b <path>  

Specify external JAX-WS or JAXB binding files (Each <file> must have its own -b)

-B <jaxbOption>

Pass this option to JAXB schema compiler

-catalog

Specify catalog file to resolve external entity references, it supports TR9401, XCatalog, and OASIS XML Catalog format. Please read the documentation of catalog and see catalog sample.

-extension  

Allow vendor extensions (functionality not specified by the specification). Use of extensions may result in applications that are not portable or may not interoperate with other implementations

-help  

Display help

-httpproxy:<host>:<port>  

Specify an HTTP proxy server (port defaults to 8080)

-keep  

Keep generated files

-p  
Specifying a target package via this command-line option, overrides any wsdl and schema binding customization for package name and the default package name algorithm defined in the specification
-s <directory>  

Specify where to place generated source files

-verbose  

Output messages about what the compiler is doing

-version  

Print version information

-wsdllocation <location> 
@WebServiceClient.wsdlLocation value
-target  
Generate code as per the given JAX-WS specification version. version 2.0 will generate compliant code for JAX-WS 2.0 spec.
-quiet  
Suppress wsimport output

示例:wsimport -s JavaSrc http://stockquote.xyz/quote?wsdl

将在当前路径的JavaSrc下生成相关的Java类,直接复制到项目的Src目录下即可使用。
下面还是以上次创建的http://localhost:8000/HelloTimeService?wsdl为类,测试过程如下:
邀月工作室

邀月工作室

新建一java Project,如图:
邀月工作室

将上面生成的java文件复制到Src目录下,项目结构如图:
邀月工作室

测试代码也很简洁:

邀月工作室

小结:这种方式与Axis2生成的Stub方式其实非常类似,只不过没有生成测试代码。结构还算清晰。



邀月注:本文版权由邀月和博客园(BlogJava)共同所有,转载请注明出处。
助人等于自助!   3w@live.cn

评论

# re: Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码[未登录]  回复  更多评论   

2011-07-06 22:32 by 求知者
你好,看了你的文章,受益匪浅,只是我遇到一个问题。我对wcf了解不深,现在也要做java客户端,用wsimport命令,总遇到如下问题
[WARNING] Ignoring SOAP port "WSHttpBinding_IService1": it uses non-standard SOA
P 1.2 binding.
You must specify the "-extension" option to use this binding.
line 1 of http://localhost:8000/HelloTimeService/?wsdl

[WARNING] Service "Service1" does not contain any usable ports. try running wsim
port with -extension switch.
line 1 of http://localhost:8000/HelloTimeService/?wsdl

不知道是何原因,请指教

# re: Java与WCF交互(一)补充:用WSImport生成WSDL的Java客户端代码[未登录]  回复  更多评论   

2015-05-07 09:54 by aaaa
http://localhost:8000/HelloTimeService?wsdl@求知者

只有注册用户登录后才能发表评论。


网站导航: