亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

根據wsdl生成java代碼的方法

今天排查同事的一个很奇怪的问题,现在将今天遇到的问题列举出来。
在调用外围系统的webservice服务时候,一般来说对方会提供一个wsdl,然后我们要根据wsdl生成相应的类,通过这种方式,做到了跨语言的完美方案,但是也带来了一些复杂性。在java中我们一般使用jdk自带的wsimport工具或者其他三方系统的wsdl4j工具生成java版本的stub实现。

使用jdk里面自带的wsimport工具,具体使用办法如下:
在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方。该工具可以用于非Java的服务器,如:用C#编写的WebService,通过wsimport则生成Java的客户端实现。
  在命令提示符中使用如下命令:

   wsimport http://localhost:8080/Demo/services/MyService?wsdl

  命令参数说明:
  -d:生成客户端执行类的class文件的存放目录
  -s:生成客户端执行类的源文件的存放目录
  -p:定义生成类的包名
  其他命令参数请参照:http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html
  使用wsimport命令后,可以得到代码,然后可以将代码拷贝到工程里面,也可以将其编译,打包成jar。
比如 javac com/xxx/.java com/xxx/yyy/.java
jar cvf dest.jar com/
这样我们就能得到一个dest.jar文件
使用一下webservice的框架自带的一下wsdl4j生成,由于众所周知的原因,java的webservice的jar很多,经常由于版本和实现的不同,会出现一下莫名奇妙的问题,所以这个地方还是推荐使用你所使用的框架的wsdl4j工具生成相应的stub。

使用第三方ws框架,以cxf为例:
使用一下webservice的框架自带的一下wsdl4j生成,由于众所周知的原因,java的webservice的框架很多,经常由于版本和实现的不同,会出现一下莫名奇妙的问题,所以这个地方还是推荐使用你所使用的框架的wsdl4j工具生成相应的stub。

下载apache-cxf-2.5.11.zip并解压到D:\apache-cxf-2.5.11,下载地址:http://mirror.bjtu.edu.cn/apache/cxf/2.5.11/apache-cxf-2.5.11.tar.gz
在D:\apache-cxf-2.5.11\bin目录下面执行命令:wsdl2java http://xxx.yyy.com:8102/ws/UserRemoteService?wsdl
命令执行完成后在相关文件夹中会生成相应的代码,将代码全部引入接入系统,与wsimport是相同的
使用过程中遇到的问题:
在使用的过程中发现一个问题,由于jdk6最高只支持ws2.1规范版本,所以在jdk6下面生成的时候,要加上-frontend jaxws21
wsdl2java -frontend jaxws21 http://xxx.yyy.com:8102/ws/UserRemoteService?wsdl

发现可以根据wsdl生成java类,java类中的注释有可能是中文,所以要加上encoding参数,例如:-encoding utf-8
wsdl2java -ecoding utf-8 http://xxx.yyy.com:8102/ws/UserRemoteService?wsdl
统一标准才能高效开发,一种不幸换一种

點擊查看更多內容
2人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
168
獲贊與收藏
3550

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消