Java與WCF互動(一):Java客戶端呼叫WCF服務 (轉)

weixin_30588675發表於2020-04-05
http://blog.csdn.net/downmoon/article/details/5834773

最近開始瞭解WCF。寫了個最簡單的Helloworld,想通過java客戶端實現通訊。沒想到以我的基礎,居然花了整整兩天(當然是工作以外的時間,呵呵),整個過程大費周折,特寫下此文,以供有需要的朋友參考:

第一步:生成WCF服務

新建WCF解決方案,分別新增三個專案,HelloTimeService(類庫),HelloTimehost(控制檯程式),HelloTimeClient(控制檯程式),專案結構如圖:
邀月工作室
各個專案的主要程式碼:
service:
邀月工作室

Host:
邀月工作室

Client:
邀月工作室

編譯通過後,測試Host和Client分別成功:
邀月工作室

邀月工作室

保持Host程式開啟,這樣,WCF服務就一直可以被外部程式呼叫。當然也包括Java客戶端。

我們看看生成的WSDL

邀月工作室

邀月工作室

第二步:呼叫WCF生成的WSDL生成java客戶端。

首先,請允許我介紹下axis2,它的官方地址:http://ws.apache.org/axis2/

這是一個java平臺的web service解決方案。我們最常用的是WSDL2Java和Java2WSDL兩個功能。

關於Web service的另一個解決方案是xFire,我沒試過。

關於命令列執行WSDL2Java,我也沒有執行成功! 我這裡介紹的是Code Generator Wizard - eclipse Plug-in,一個Eclipse的外掛。而且是在參考了眾多解決方案才配置成功!

特別感謝yycxbjl 的這篇文章:http://www.cnblogs.com/yycxbjl/archive/2010/06/14/1758063.html

我的Java整個配置環境:

1.安裝JDK並配置環境變數

  JAVA_HOME=D:/2000/Java/JDKUpdate(注意,不帶版本號是為了以後升級時只複製檔案,而不必修改環境變數。)
path=%JAVA_HOME%/bin;
classpath=.;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar

 

2.下載並安裝Eclipse3.6 ,就是大家熟悉的太陽神Helios (解壓即可)
  解壓到:D:/2000/Java/Eclipse

 

3.下載Tomcat6.0.29 (本文中使用的是綠色版,故解壓即完成)
  解壓到:D:/2000/Java/tomcat(注意,不帶版本號是為了以後升級時只複製檔案,而不必修改環境變數。)
  由於安裝的是tomcat6.0不用配置tomcat的環境變數,至於以前的版本可以查資料。
  需要設定TOMCAT_HOME,CATAlINA等環境變數


4.從    http://ws.apache.org/axis2/download/1_4_1/download.cgi 下載 axis2-1.4.1-bin.zip
解壓到:D:/2000/Java/Axis2,注意不要下載Axis2 1.5.1,原因 yycxbjl 說: “最新版的 1.5.0 與 1.5.1 中沒有 backport-util-concurrent-3.1.jar, 無法解決:使用axis2-eclipse-codegen-wizard外掛,從wsdl檔案生成java檔案時出錯無法繼續的問題,故不使用。)

 

5.下載1.4.1版的 axis2-eclipse-codegen-wizard 與 axis2-eclipse-service-archiver-wizard

http://ws.apache.org/axis2/tools/1_0/eclipse/wsdl2java-plugin.html#operation1

(但解壓后里面顯示是1.3.0, 解壓到:D:/2000/java/Eclipse/dropins  (連壓縮包中的根目錄一起解壓出來)。也可以用傳統的link方法部署。

複製  D:/2000/Java/Axis2/lib/backport-util-concurrent-3.1.jar 與 geronimo-stax-api_1.0_spec-1.0.1.jar
到:D:/2000/Java/Eclipse/dropins/Axis2_Codegen_Wizard_1.3.0/lib,  並編輯:D:/2000/Java/Eclipse/dropins/Axis2_Codegen_Wizard_1.3.0/plugin.xml
在 runtime 下 新增
      <library name="lib/backport-util-concurrent-3.1.jar">
         <export name="*"/>
      </library>
      <library name="lib/geronimo-stax-api_1.0_spec-1.0.1">
         <export name="*"/>
      </library>

將Axis2_Codegen_Wizard_1.3.0重新命名為Axis2_Codegen_Wizard_1.4.1,(這是整個部署的關鍵!這裡邀月折騰了整整一天!)

轉載於:https://www.cnblogs.com/quietwalk/archive/2011/11/19/2255102.html

相關文章