最近使用了一下cxf,簡(jiǎn)單的查看了部分源代碼,給我的感覺(jué)它就是一個(gè)可以大大簡(jiǎn)化我們客戶(hù)端編寫(xiě)遠(yuǎn)程方法調(diào)用的一個(gè)工具框架,只需要簡(jiǎn)單的幾行代碼就可以解決這種復(fù)雜的問(wèn)題,下面就舉個(gè)例子:
上面一段是客戶(hù)端調(diào)用遠(yuǎn)程服務(wù)器中HelloWorld接口的getWeather方法 的一個(gè)具體實(shí)現(xiàn)。服務(wù)端的代碼如下:
服務(wù)端將接口以服務(wù)的形式發(fā)布后,必須提供客戶(hù)端訪問(wèn)服務(wù)的地址(http://localhost:9000/Hello),客戶(hù)端可以根據(jù)提供的地址訪問(wèn)服務(wù)端相關(guān)服務(wù)的wsdl文件,客戶(hù)端可以根據(jù)wsdl文件生成對(duì)應(yīng)的客戶(hù)端代碼,也就是HelloWorld接口文件,然后客戶(hù)端可以像調(diào)用本地接口方法一樣,去調(diào)用遠(yuǎn)程方法,客戶(hù)端與服務(wù)端之間的交互是通過(guò)代理完成的,所以開(kāi)發(fā)在編程時(shí)不需要關(guān)系他們是如何交互的,在代理中,上面的客戶(hù)端請(qǐng)求hello.getWeather方法時(shí)會(huì)向服務(wù)端發(fā)送如下的消息: <soap:Envelope xmlns:soap="http://schemas./soap/envelope/"> <soap:Body> <ns1:getWeather xmlns:ns1="http://fixed.adapter.solar2./"> <arg0>2013-06-22T18:56:43.808+08:00</arg0> </ns1:getWeather> </soap:Body> </soap:Envelope> 服務(wù)器端接收?qǐng)?bào)文后,會(huì)解析報(bào)文,按照?qǐng)?bào)文的信息執(zhí)行相應(yīng)的本地方法,然后將返回值又構(gòu)造一個(gè)報(bào)文響應(yīng)給客戶(hù)端,如下: <soap:Envelope xmlns:soap="http://schemas./soap/envelope/"> <soap:Body> <ns1:getWeatherResponse xmlns:ns1="http://fixed.adapter.solar2./"> <return> <forecast>Cloudy with showers </forecast> <howMuchRain>4.5</howMuchRain> <rain>true</rain> <temperature>39.3</temperature> </return> </ns1:getWeatherResponse> </soap:Body> </soap:Envelope> |
|
來(lái)自: 一本正經(jīng)地胡鬧 > 《待分類(lèi)》