Java與WCF交互(二):WCF客戶端調(diào)用Java web service
Posted on 2010-08-25 11:22 邀月 閱讀(3137) 評(píng)論(2) 編輯 收藏 所屬分類: Eclipse在上篇《 Java與WCF交互(一):Java客戶端調(diào)用WCF服務(wù)》中,我介紹了自己如何使用axis2生成java客戶端的悲慘經(jīng)歷。有同學(xué)問起使用什么協(xié)議,經(jīng)初步驗(yàn)證,發(fā)現(xiàn)只有wsHttpBinding可行,而NetTcpBinding不可行,具體原因待查。昨晚回去重新測(cè)試WCF客戶端調(diào)用Java Web Service,并將過程公布如下:
其實(shí)本不需要做web service,只是原來公開的經(jīng)典的Web service像(http://soapinterop.java.sun.com/round2.base?WSDL)等不可訪問了。于是邀月重寫了一個(gè)本地的web service,以作演示。
第一步:建立本地java環(huán)境,并構(gòu)建 web Service代碼,發(fā)布web service
1、設(shè)置Java環(huán)境:
JDK6/J2SE1.6以上,必須!!后面邀月會(huì)說明原因。
Eclipse 3.6
Axis2_Codegen_Wizard_1.4.1插件,配置見上文《 Java與WCF交互(一):Java客戶端調(diào)用WCF服務(wù)》
假定以上環(huán)境都OK
2、Services 服務(wù)端應(yīng)用程序
在Eclipse中新建一個(gè)java project,名為JavaServiceForWCFClient,如圖:
選擇一個(gè)運(yùn)行時(shí)庫
在src下新建一個(gè)package,如圖:
在該package下新建一個(gè)類HelloTimeForWCF,代碼如下:
請(qǐng)注意上圖中:@WebService的 使用。這稱為 Annotation 或元數(shù)據(jù),由 Java SE 5 中引入的 Web Services 元數(shù)據(jù)規(guī)范 (Web Services Metadata Specification) 所使用。開發(fā)人員在對(duì)類和方法應(yīng)用 Annotation 之前定義類和方法,以向運(yùn)行時(shí)引擎指明如何將類及其方法作為 Web Services 和 Web Services 操作來啟用。Java SE 6 附帶了這樣一個(gè)引擎。@WebService Annotation 將 SayHello 類標(biāo)記為實(shí)現(xiàn)某個(gè) Web Services ,從而產(chǎn)生可部署的 Web Services 。這個(gè)特定的 Annotation 是一個(gè) WSDL 映射 Annotation,并將 Java 源代碼與表示 Web Services 的 WSDL 元素相關(guān)聯(lián)。(注:本段內(nèi)容來自IBM官方網(wǎng)站,https://www6.software.ibm.com/developerworks/cn/education/webservices/ws-eclipse-javase1/section3.html)
下一步,就是Ant工具大派用場(chǎng)的時(shí)候了,
在項(xiàng)目根路徑下新建一build.xml,內(nèi)容如圖:
以"Ant Build"方式運(yùn)行該文件:
應(yīng)該在控制臺(tái)收到如下信息:
以上信息,表明ant創(chuàng)建成功!此時(shí),刷新項(xiàng)目視圖,應(yīng)該得到如圖所示的結(jié)果,其中黃色部分為剛生成的內(nèi)容:
在package中新增一個(gè)主類,是否感覺有點(diǎn)像WCF中的Host引擎?其實(shí)作用就是如此。
其內(nèi)容如下:
運(yùn)行程序,就如同運(yùn)行WCF中的Host:
可以用內(nèi)部的瀏覽器來瀏覽這個(gè)地址:http://localhost:8080/JavaServiceForWCFClient?wsdl
至此,Java web端部署完成。
第二步:建立本地WCF客戶端,調(diào)用第一步生成的web service
新建一個(gè)普通的控制臺(tái)項(xiàng)目,名為WCFClientFromJava,, 并按下圖所示使用SvcUtil命令:(Svcutil.exe,ServiceModel 元數(shù)據(jù)實(shí)用工具用于依據(jù)元數(shù)據(jù)文檔生成服務(wù)模型代碼,以及依據(jù)服務(wù)模型代碼生成元數(shù)據(jù)文檔。ServiceModel 元數(shù)據(jù)實(shí)用工具可在 Windows SDK 安裝位置中找到,一般位置為 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin)
生成后,將生成的文件包含在項(xiàng)目中,項(xiàng)目結(jié)構(gòu)如下:
生成的app.config文件如下:
此時(shí),在program.cs文件中添加如下方法:
至此,WCF客戶端調(diào)用Java Web service成功!
小結(jié),這是一個(gè)很簡單的demo,主要技術(shù)點(diǎn)在于:
1、@Webservice的使用,參看http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/
2、SvcUtil的使用,參看MSDN:http://msdn.microsoft.com/zh-cn/library/aa347733%28VS.90%29.aspx
本文參考:
使用 Eclipse 和 Java SE 6 創(chuàng)建獨(dú)立 Web Services 應(yīng)用程序,第 1 部分: Web Services 服務(wù)端應(yīng)用程序
Introducing JAX-WS 2.0 With the Java SE 6 Platform, Part 1
http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/
助人等于自助! 3w@live.cn