Tauruser

          JSF will hibernate in spring.

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            24 隨筆 :: 2 文章 :: 19 評論 :: 0 Trackbacks

          #

            最近去圖書館借了本《Java Web 服務(wù)編程指南》,讀了第一章,寫點自己的看法吧。
            在還沒有接觸這本書的時候,我一直的以為WS就只是網(wǎng)絡(luò)上的web應(yīng)用,這么說吧,就是我們經(jīng)常上的網(wǎng)站。看了第一章之后,我才發(fā)現(xiàn)之前的直觀的看法是錯誤的,Web Service并不只是一個網(wǎng)站。Web Service使我們能夠?qū)W(wǎng)絡(luò)上的一個對象進行遠(yuǎn)程調(diào)用,也就是Remote Procedure Calls,RPC。
            我是這么理解的,一般性的網(wǎng)站我們也可以看成是廣義上的Web Service,但是Web Service并不僅局限行一般性的網(wǎng)站,他更加強大的功能在于提供一個公開的,標(biāo)準(zhǔn)化的接口,讓所有的客戶都能通過一服務(wù)注冊表,查找到此項服務(wù),并對此項服務(wù)進行綁定。客戶可以通過這個公開的,標(biāo)準(zhǔn)化的API接口,進行遠(yuǎn)程的服務(wù)調(diào)用。這些服務(wù)如,查詢天氣預(yù)報,查詢機場服務(wù),在一個網(wǎng)絡(luò)商場進行下訂單操作,等等。只要服務(wù)商愿意公開他的Web服務(wù),并在服務(wù)注冊表發(fā)布其服務(wù),所有的潛在客戶都可以通過在服務(wù)注冊表中查找此服務(wù),并得到關(guān)于此項服務(wù)的一些具體的描述,從而在服務(wù)商與客戶之間建立bind關(guān)系,遠(yuǎn)程調(diào)用這些服務(wù)。
          ?  在Web服務(wù)中,我們可以看到有三個不同的角色。他們之間的交互關(guān)系如下圖所示。
          ??
            
            從這個圖我們可以很清楚地看到三者之間的關(guān)系。服務(wù)提供者提供Web Service,服務(wù)消費者是使用此服務(wù)客戶,而位于最頂端的服務(wù)注冊表,則為兩者互相尋找對方提供了一個橋梁。服務(wù)提供者在服務(wù)注冊表上發(fā)布自己提供的服務(wù),服務(wù)消費者從服務(wù)注冊表上查找自己需要的服務(wù),找到后,就可以在服務(wù)消費者和服務(wù)提供者之間進行綁定,服務(wù)消費者就可以對服務(wù)提供者提供的服務(wù)進行訪問,遠(yuǎn)程調(diào)用。這里需要注意的是,服務(wù)提供者提供的服務(wù)可能是一個非常復(fù)雜的服務(wù),他這項服務(wù)可能還會調(diào)用其它服務(wù)提供者提供的服務(wù),他將所有的這些信息整合處理,最終為服務(wù)消費者完成此項服務(wù)。當(dāng)然這項服務(wù)也可以很簡單,簡單到服務(wù)消費者發(fā)起一個訪問,直接返回一個響應(yīng)就可以了。
            三個實體之間要進行通信,為了保證這些通信都能順利的進行,我們需要為這些通信定義規(guī)則,如果大家都遵守這些規(guī)則行事,這樣我們提供的服務(wù)就可以給任何消費者使用,消費者也就可以使用任何的服務(wù)提供者的服務(wù)了。這些規(guī)則有:
            
          1. Web Service Description Language, WSDL,Web服務(wù)描述語言,用來描述Web服務(wù)。
              
          2. Universal Description, Discovery, and Integration, UDDI,通用描述,發(fā)現(xiàn),集成標(biāo)準(zhǔn)。這個是用來發(fā)布和查找Web服務(wù)的標(biāo)準(zhǔn)協(xié)議。
          3. Simple Object Access Protocol,SOAP,簡單對象訪問協(xié)議。用于綁定到Web服務(wù)的標(biāo)準(zhǔn)應(yīng)用程序協(xié)議。

            這三個協(xié)議可以簡單的和上圖的三個操作對應(yīng)。
            最終我們得到了基本W(wǎng)eb服務(wù)棧:
            
          上面的功能都需要下面的支持。從最底層我們可以看到,Web服務(wù)不一定是建立在HTTP之上的,我們可以使用多種基于TCP/IP的應(yīng)用層協(xié)議來實現(xiàn)我們的web service。

          posted @ 2006-11-28 12:34 Tauruser 閱讀(858) | 評論 (2)編輯 收藏

          中大沙發(fā),大家常來坐坐啊!
          posted @ 2006-11-25 17:36 Tauruser 閱讀(269) | 評論 (0)編輯 收藏

          在我負(fù)責(zé)的一個個人日程模塊中,使用了一個<t:inputCalendar/>進行日期的選擇,并用一個<h:outputText/>將所選擇的日期顯示出來。這時候問題就出來了,如要我在<t:inputCalendar/>中選擇一個日期,在<h:outputText/>中輸出的日期總是會比選擇的日期提前一天。搞得很久都沒有辦法解決,最后還是用多一個<t:inputCalendar/>解決了問題,為了保持樣式和<h:outputText/>一致。可以設(shè)置<t:inputCalendar/>的屬性。
          <t:inputCalendar?displayValueOnly="true"?renderAsPopup="true"?readonly="true"?value="#{yourBackingBean.selectDate?}"/>
          如此就可以正常顯示了,樣式和<h:outputText/>無異。
          為什么<f:outputText/>用來輸出Date類型就會比預(yù)期的日期提前一天呢?
          posted @ 2006-11-25 14:16 Tauruser 閱讀(1018) | 評論 (2)編輯 收藏

          僅列出標(biāo)題
          共3頁: 上一頁 1 2 3 
          主站蜘蛛池模板: 尉犁县| 开封县| 开化县| 柳江县| 云南省| 兴业县| 张北县| 阳春市| 手游| 桐乡市| 南川市| 新闻| 定兴县| 金坛市| 南安市| 湖南省| 舞阳县| 上思县| 孝感市| 长岛县| 济阳县| 泗水县| 右玉县| 同德县| 乌拉特中旗| 龙江县| 西丰县| 外汇| 龙川县| 伊金霍洛旗| 津市市| 垣曲县| 益阳市| 阿鲁科尔沁旗| 故城县| 会泽县| 兴业县| 堆龙德庆县| 新丰县| 井研县| 桓台县|