日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Webservice初接触

發(fā)布時間:2024/4/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Webservice初接触 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ?公司用到了Powerbuilder+Webserice的技術(shù),能將數(shù)據(jù)窗口中對數(shù)據(jù)庫的請求,以SQL語句的形式,發(fā)到Webservice中,然后由Webservice完成對數(shù)據(jù)庫的請求,并將結(jié)果返回給PB客戶端。這樣的形式,對于我這個原來只知道用Powerbuilder開發(fā)C/S程序的人來說,就像打了一針強心針。通過這樣的方式,拋開程序的執(zhí)行效率和開發(fā)效率不說,就是PB代碼中的隨處可見的SQL語句,以及對事務控制的語句commit,rollback等等,都不見了,對事務管理都交給了Webservice,這樣,我們在維護PB代碼的時候,輕松了很多,同時也可以將部分的業(yè)務邏輯丟到Webservice這個中間層中來處理,讓我們的客戶端瘦起來。

? 可是我用到的只一個封裝好的函數(shù),對內(nèi)部的處理一無所只,pb是如何與webservice通信的呢?

1.Webservice

??從字面上來翻譯Web服務,網(wǎng)絡服務,一個發(fā)布在網(wǎng)絡上的程序,照這么說,Tomcat應該也算是個Webservice,因為他也是一個發(fā)布在網(wǎng)絡上的程序,說道Tomcat,我們就知道,他處理的是http協(xié)議,接受請求,返回相應;不過,這里說的Webserice是指能將自己的組件發(fā)布在網(wǎng)絡上供客戶端調(diào)用,中間的傳輸對客戶端是透明的,不過典型的還是Http協(xié)議,http協(xié)議只是承載數(shù)據(jù)的,做為方法的調(diào)用,客戶端必須知道,服務端有哪些方法發(fā)布在網(wǎng)絡上,這個方法有些什么參數(shù),參數(shù)的類型是什么(整形?字符?對象),這個方法返回的類型是什么?而做為服務端必須要知道客戶端調(diào)用的是哪個方法,傳遞了哪些參數(shù)?要描述這部分數(shù)據(jù),必須也要一個協(xié)議,這就是我們說的SOAP(簡單對象傳輸協(xié)議)。當然要描述這樣的信息并不只是SOAP協(xié)議,還有其它的協(xié)議比如(Rest Style),書上題到的,也沒見過,我覺得完全也可以自己寫。

?

?? 客戶端通過soap的包講我們需要請求的數(shù)據(jù)加工成soap包消息,發(fā)送給服務端,服務端解析soap消息,進行相應的處理,講響應的消息同樣加工成soap包,作為響應返回給客戶端。

? 那么我們來建立一個webservice吧

package ch01.ts; // time serverimport javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style;/*** The annotation @WebService signals that this is the* SEI (Service Endpoint Interface). @WebMethod signals * that each method is a service operation.** The @SOAPBinding annotation impacts the under-the-hood* construction of the service contract, the WSDL* (Web Services Definition Language) document. Style.RPC* simplifies the contract and makes deployment easier. */ @WebService @SOAPBinding(style = Style.RPC) // more on this later public interface TimeServer {@WebMethod String getTimeAsString();@WebMethod long getTimeAsElapsed(); }package ch01.ts; import java.util.Date; import javax.jws.WebService;/*** The @WebService property endpointInterface links the* SIB (this class) to the SEI (ch01.ts.TimeServer).* Note that the method implementations are not annotated* as @WebMethods. */ @WebService(endpointInterface = "ch01.ts.TimeServer") public class TimeServerImpl implements TimeServer {public String getTimeAsString() { return new Date().toString(); }public long getTimeAsElapsed() { return new Date().getTime(); } }

服務端的接口,以及實現(xiàn)類

public class TimeServerPublisher {public static void main(String[ ] args) {// 1st argument is the publication URL// 2nd argument is an SIB instanceEndpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl());} }

這個類將實現(xiàn)的服務發(fā)布在網(wǎng)絡上,我們通過
% java ch01.ts.TimeServerPublisher,運行發(fā)布程序

我們就可以通過http://127.0.0.1:9876/ts?wsdl,就可以到描述整個服務的wsdl文件了,我們的客戶端,利用soap的組件或者是包,解析這個wsdl文件,就能自動生成訪問我們webservice服務的相關方法。

2.PowerBuilder客戶端

?當服務發(fā)布成功以后,就可以通過客戶端發(fā)送對服務端的請求了,由于我現(xiàn)在用熟悉的工具是是Powerbuilder,因此我用Powerbuilder來建立一個客戶端。

進入webservice向?qū)?/p>

輸入發(fā)布的webserice的wsdl文件的地址

?這樣Pb會沒反應,但是,直接填寫用瀏覽器另存為的xml的wsdl文件,確能一切正常,這是怎么回事?

SIB(Service Implementation Bean)已經(jīng)出現(xiàn)在界面中了,一路Next,最后形成了Project,

deploy以后形成一個timeserverimplPort對象,這個對象根據(jù)wsdl文件形成,包含了webserice對象的方法,我們就能夠根據(jù)這個對象與服務端進行通訊了,而又管soap消息是如何封裝的,我們不用去管,只管調(diào)用對象中的方法就行。 接下來就能夠更具客戶端的webservice對象進行編程了 soapConnection conn //Define SoapConnection timeserverimplport lts_port int li_rVal string ls_time conn = create SoapConnection li_rVal = conn.CreateInstance(lts_port, "timeserverimplport") /*實例化*/ tryls_time= lts_port.gettimeasstring( )// Invoke servicemessagebox("", ls_time) catch ( SoapException e )messagebox ("ErrDAT* d or", "Cannot invoke Web service") // error handling end try destroy conn

運行程序,消息彈出,已經(jīng)得到了服務端得相應。 這就是一個webserce的基本的雛形,有關實現(xiàn)的細節(jié),比如soap的消息是如何封裝的,服務端是如何對客戶端發(fā)送過來的請求如何解析的,這些都還不清楚;還需要多多看書,多多了解,先這樣吧。

轉(zhuǎn)載于:https://www.cnblogs.com/szxiaofei14/p/3216246.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的Webservice初接触的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。