邀月

          從.net中走來的Java愛好者
          posts - 22, comments - 10, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          在上篇《 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)用程序

          https://www6.software.ibm.com/developerworks/cn/education/webservices/ws-eclipse-javase1/section3.html

          Introducing JAX-WS 2.0 With the Java SE 6 Platform, Part 1

          http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/



          邀月注:本文版權(quán)由邀月和博客園(BlogJava)共同所有,轉(zhuǎn)載請(qǐng)注明出處。
          助人等于自助!   3w@live.cn

          評(píng)論

          # re: Java與WCF交互(二):WCF客戶端調(diào)用Java web service  回復(fù)  更多評(píng)論   

          2010-08-26 15:04 by 朔望魔刃
          很帥很帥,最近剛好用到

          # re: Java與WCF交互(二):WCF客戶端調(diào)用Java web service  回復(fù)  更多評(píng)論   

          2010-08-31 11:36 by 邀月
          @朔望魔刃
          ^-^
          主站蜘蛛池模板: 香格里拉县| 商水县| 信丰县| 遂宁市| 巫山县| 莆田市| 平泉县| 合山市| 车致| 浦城县| 大埔县| 西充县| 子长县| 个旧市| 车致| 温宿县| 苗栗县| 潼关县| 弥勒县| 株洲市| 兖州市| 鹤壁市| 梧州市| 凭祥市| 左云县| 叙永县| 新邵县| 鹿泉市| 岳阳县| 乌审旗| 金川县| 柳林县| 武鸣县| 康保县| 枣庄市| 邵阳市| 永宁县| 安徽省| 石城县| 鄢陵县| 江北区|