一、一些概念
????WebService技術現在幾乎無處不在,以前玩.NET的時候最開始接觸這個概念,C#語言對WebService近似原生性的支持使我們用C#可以非常迅速的開發出一個WebService,沒有任何復雜煩擾的步驟。
????后來沒有機會再在.Net Framework上面開發,轉投了Java的懷抱,想要開發出一個WebService感覺比較,搞一堆命令生成一堆什么代碼,好不容易才能搭出來,嘗試一次之后終于還是放棄了,覺得麻煩。
????Java6.0出來之后對WebService也說原生支持了,所以再做畢業設計的時候想到體驗一下Java6.0的WebService,果然容易上手很多,易用。畢業設計把這個計算在內,智能設備+WebService可以作為系統應用的一部分。
???開始代碼之前先大概說說我對這幾個概念的理解
????WebService 是分布式應用程序組件,這么說可能太抽象,這其實以經不是一個新的概念了,但是突然間要解釋這個名次還比較不容易。它其實是構建在已有技術基礎上的一個概念,WebService的核心是xml、soap、wsdl等,客戶可以通過web請求的方式使用WebService。或者說得更通俗點就是服務提供商把他提供的服務發布到Internet上,然后客戶可以通過Internet使用這個服務。
????RMI這個東西上手也不那么容易,不過這個概念可以簡單點來理解,就是不同JVM之間通訊的一個手段,這里調用的是Java代碼。不同的JVM可以在不同的機器上或者是同一臺機器上。這個純Java的分布式應用的一個典型的Solution. RMI技術和CORBA互為補充。
???
???對于CORBA我沒有詳細學習過,不過概念很容易懂,CORBA 允許應用程序和其他的應用程序通訊,而不論他們在什么地方或者由誰來設計。CORBA和語言實現是無關的,C++和Java實現的系統通過CORBA通信。EMA里面就有這個CORBA。
二、協作的需求模型
????下面切入正題,說說WebService和RMI的協作。我們先來看這個需求的模型是怎么樣的??聪聢D
???????????????????????????????
?
???系統要求有Smart device對遠程的JVM2里的程序控制,所以我們引入了WebService,通過WebService間接調用JVM2里的東西,WebSerivce本身運行在JVM1,JVM1和JVM2可以在不同機器上,這里demo程序是在一臺機器上運行的。
???WebService在這里既是SmartDevice的Server端,又是RMI的Client端。RMI的Server端在JVM2的App里作為一部分服務存在。
三、代碼分解,下面我們開始demo這個協作的代碼
3.1 首先我們抽象一個RMI的Interface















簡單的接口,一個是獲得時間的,一個是獲取隨便什么消息的接口
3.2實現RMI的Server端






































?





































3.3我們可以先寫個RMI的Client測試一下








































??????由于在本機上,省略了ip什么的,如果對這段代碼不是很懂,建議看后面的參考資料
??????測試方法,先運行Server,再運行Client,不出以外,你能看到2008年5月10號。
3.4我們開始實現我們的WebService Server端
??????Java6.0實現WebService也很簡單,我直接貼代碼了。Server端如下,如果不太懂,還是建議看后面的參考資料









































































3.6實現WebService的客戶端
??????首先cd到src目錄,然后敲wsimport -keep http://localhost:8435/MyTimeServer?wsdl這個會自動生成一堆代碼,基本上可以理解為stub一類的東西
??????然后我們就可以直接調用啦




























到此為止,這個WebService和RMI的協作完成了,代碼盡量精簡了
參考資料:
??????JAVA RMI 實例-damies -JavaEye技術社區,? RMI的入門資料,很容易看懂
??????交口稱贊?blog中 關于java 6.0?WebService的部分,也是很好的新手學習資料
??????