18禁亚洲深夜福利人口,91亚洲一区二区在线观看不卡,亚洲熟女乱综合一区二区http://m.tkk7.com/yifeng/category/35043.html光是知道是不夠的,必須要加以應用;光是希望是不夠的,非去做不可。zh-cnThu, 09 Oct 2008 21:21:23 GMTThu, 09 Oct 2008 21:21:23 GMT60Apache CXF 之 HelloWorldhttp://m.tkk7.com/yifeng/archive/2008/10/10/233474.html憶風憶風Thu, 09 Oct 2008 16:51:00 GMThttp://m.tkk7.com/yifeng/archive/2008/10/10/233474.htmlhttp://m.tkk7.com/yifeng/comments/233474.htmlhttp://m.tkk7.com/yifeng/archive/2008/10/10/233474.html#Feedback0http://m.tkk7.com/yifeng/comments/commentRss/233474.htmlhttp://m.tkk7.com/yifeng/services/trackbacks/233474.htmlApache CXF = Celtix + XFire,Apache CXF 的前身是叫Apache CeltiXfire,現在已經正式更名為Apache CXF 了,以下簡稱CXF。CXF繼承了 Celtix 和 XFire 兩大開源項目的精華,提供了對 JAX-WS全面的支持,并且提供了多種 Binding 、Data Binding、Transport 以及 Format的支持,并且可以根據實際項目的需要,采用 Code First 或者 WSDL First 來輕松地實現 Web Services 的發布和使用。

一、從http://cxf.apache.org/得到CXF的jar包支持

二、創建接口“HelloWorldService.java”:
package org.yifeng.service;

public interface HelloWorldService {
    String sayHi(String text);
}


三、實現接口”HelloWorldServiceImpl.java“:
package org.yifeng.service.impl;

import org.yifeng.service.HelloWorldService;

public class HelloWorldServiceImpl implements HelloWorldService {
    
public String sayHi(String text) {
        
return "歡迎 " + text +",學習Apache CXF.";
    }

}


四、發布服務接口”Server.java“:
package org.yifeng.server;

import org.apache.cxf.frontend.ServerFactoryBean;
import org.yifeng.service.HelloWorldService;
import org.yifeng.service.impl.HelloWorldServiceImpl;


public class Server {
    
public static void main(String[] args) {
        
        
// Create our service implementation
        HelloWorldServiceImpl helloWorldImpl = new HelloWorldServiceImpl();

        
// Create our Server
        ServerFactoryBean svrFactory = new ServerFactoryBean();
        svrFactory.setServiceClass(HelloWorldService.
class);
        svrFactory.setAddress(
"http://localhost:9000/Hello");
        svrFactory.setServiceBean(helloWorldImpl);
        svrFactory.create();
    }


}

 

五、創建Client,訪問服務接口“Client.java”:

package org.yifeng.client;

import org.apache.cxf.frontend.ClientProxyFactoryBean;
import org.yifeng.service.HelloWorldService;


public class Client {
    
public static void main(String[] args) {
        
        ClientProxyFactoryBean factory 
= new ClientProxyFactoryBean();
        factory.setServiceClass(HelloWorldService.
class);
        factory.setAddress(
"http://localhost:9000/Hello");
        HelloWorldService client 
= (HelloWorldService) factory.create();
        System.out.println(client.sayHi(
"周大慶"));
    }


}

六、結果:
歡迎,周大慶 學習Apache CXF.

呵呵,簡單吧,這就是WebService ,希望能給入門的朋友提供幫助。

憶風 2008-10-10 00:51 發表評論
]]>
WebService的基本概念http://m.tkk7.com/yifeng/archive/2008/10/08/233040.html憶風憶風Tue, 07 Oct 2008 20:12:00 GMThttp://m.tkk7.com/yifeng/archive/2008/10/08/233040.htmlhttp://m.tkk7.com/yifeng/comments/233040.htmlhttp://m.tkk7.com/yifeng/archive/2008/10/08/233040.html#Feedback0http://m.tkk7.com/yifeng/comments/commentRss/233040.htmlhttp://m.tkk7.com/yifeng/services/trackbacks/233040.html

WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。

這種技術允許網絡上的所有系統進行交互。隨著技術的發展,一個Web服務可以包含額外的指定功能并且可以在多個B2B應用中協作通訊。 Web服務可以理解請求中上下文的關系,并且在每一個特定的情況下產生動態的結果。這些服務會根據用戶的身份,地點以及產生請求的原因來改變不同的處理,用以產生一個唯一的,定制的方案。這種協作機制對那些只對最終結果有興趣的用戶來說,是完全透明的。

UDDI

在用戶能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的接口定義,還要在服務端來編制軟件。所以,我們需要一種方法來發布我們的Web服務。 UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目。UDDI 項目中的成員可以通過UDDI Business Registry (UBR) 來操作Web服務的調用,UBR是一個全球性的服務。 Web服務供應商可以在UBR中描述并且注冊他們的服務。 用戶可以在UBR中查找并定位那些他們需要的服務。 UDDI是一種根據描述文檔來引導系統查找相應服務的機制。 UDDI包含標準的“白皮書”類型的商業查詢方式, “黃皮書”類型的局部查找,以及 “綠皮書”類型的服務類型查找。 UDDI利用SOAP消息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查找注冊信息。它采用XML格式來封裝各種不同類型的數據,并且發送到注冊中心或者由注冊中心來返回需要的數據。

WSDL

對于商業用戶來說,要找到一個自己需要使用的服務,他必須知道如何來調用。 WSDL (Web Services Description Language) 規范是一個描述接口,語義以及Web服務為了響應請求需要經常處理的工作的XML文檔。這將使簡單地服務方便,快速地被描述和記錄。以下是一個WSDL的樣例:

<?xml version="1.0"?>
<definitions name="StockQuote"
                targetNamespace="http://example.com/stockquote.wsdl"
                xmlns:tns="http://example.com/stockquote.wsdl"
                xmlns:xsd1="http://example.com/stockquote.xsd"
                xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
   <schema targetNamespace=http://example.com/stockquote.xsd
                 xmlns="http://www.w3.org/2000/10/XMLSchema">
      <element name="TradePriceRequest">
        <complexType>
           <all>
                <element name="tickerSymbol" type="string"/>
              </all>
           </complexType>
        </element>
        <element name="TradePrice">
            <complexType>
                <all>
                   <element name="price" type="float"/>
                 </all>
              </complexType>
           </element>
        </schema>
     </types>
     <message name="GetLastTradePriceInput">
         <part name="body" element="xsd1:TradePriceRequest"/>
     </message>
     <message name="GetLastTradePriceOutput">
         <part name="body" element="xsd1:TradePrice"/>
    </message>
    <portType name="StockQuotePortType">
        <operation name="GetLastTradePrice">
            <input message="tns:GetLastTradePriceInput"/>
            <output message="tns:GetLastTradePriceOutput"/>
         </operation>
      </portType>
      <binding name="StockQuoteSoapBinding"
                    type="tns:StockQuotePortType">
         <soap:binding style="document"
                                 transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetLastTradePrice">
            <soap:operation
                           soapAction="http://example.com/GetLastTradePrice"/>
            <input>
               <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
         </operation>
      </binding>
     <service name="StockQuoteService">
        <documentation>My first service</documentation>
        <port name="StockQuotePort" binding="tns:StockQuoteBinding">
            <soap:address location="http://example.com/stockquote"/>
        </port>
     </service>
  </definitions>

它包含了以下的關鍵信息: 消息的描述和格式定義可以通過XML文檔中的<types>和<message> 標記來傳送。 <portType> 標記中表示了消息傳送機制。 (e.g. request-only, request-response, response-only) 。 <binding> 標記指定了編碼的規范 。 <service> 標記中表示服務所處的位置 (URL)。 WSDL在UDDI中總是作為一個接口描述文檔。因為UDDI是一個通用的用來注冊WSDL規范的地方,UDDI的規范并不限制任何類型或者格式描述文檔。這些文檔可能是一個WSDL文檔,或者是一個正規的包含導向文檔的Web頁面,也可能只是一個包含聯系信息的電子郵件地址。現在Java提供了一個 Java API for WSDL (JWSDL)規范。它提供了一套能快速處理WSDL文檔的方法,并且不用直接對XML文檔進行操作,它會比JAXP更方便,更快速。

SOAP

當商業用戶通過UDDI找到你的WSDL描述文檔后,他通過可以Simple Object Access Protocol (SOAP) 調用你建立的Web服務中的一個或多個操作。 SOAP是XML文檔形式的調用商業方法的規范,它可以支持不同的底層接口,象HTTP(S)或者SMTP。 之所以使用XML是因為它的獨立于編程語言,良好的可擴展性以及強大的工業支持。之所以使用HTTP是因為幾乎所有的網絡系統都可以用這種協議來通信,由于它是一種簡單協議,所以可以與任何系統結合,還有一個原因就是它可以利用80端口來穿越過防火墻。 SOAP的強大是因為它簡單。SOAP是一種輕量級的,非常容易理解的技術,并且很容易實現。它有工業支持,可以從各主要的電子商務平臺供應商那里獲得。從技術角度來看,SOAP詳細指明了如何響應不同的請求以及如何對參數編碼。一個SOAP封裝了可選的頭信息和正文,并且通常使用HTTP POST方法來傳送到一個HTTP 服務器,當然其他方法也是可以的,例如SMTP。SOAP同時支持消息傳送和遠程過程調用。以下是一個SOAP請求。

POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn 
SOAPAction: "Some-URI" <SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
    <SOAP-ENV:Header>
        <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
           5
        </t:Transaction>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <m:GetLastTradePrice xmlns:m="Some-URI">
            <symbol>SUNW</symbol>
        </m:GetLastTradePrice>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

JAXR

為了支持UDDI在Java平臺上的功能,Java APIs for XML Registries (JAXR)允許開發者來訪問注冊中心。 值得注意的是,JAXR并不是建立Web服務必需的,你可以利用其他常用的XML APIs來直接集成這些協議。 JAXR是一個方便的API,它提供了Java API來發布,查找以及編輯那些注冊信息。它的重點在于基于XML的B2B應用,復雜的地址本查找以及對XML消息訂閱的支持等Web服務。 它也可以用來訪問其他類型的注冊中心,象ebXML注冊中心。這些對Web服務的注冊信息進行的操作,可以使用當前的一些Web服務工具來完成(例如第三方的SOAP和ebXML消息工具)。另外,當JAXP提供了一致并具有針對性的API來完成這些操作,這將使開發變得更加容易。

JAX/RPC

為了使開發人員專注于建立象SOAP那樣的基于XML的請求,JCP正在開發基于RPC (JAX/RPC) 的Java API。JAX/RPC是用來發送和接收方法調用請求的,它基于XML協議,象SOAP,或者其他的象XMLP (XML Protocol,要了解更多可以參考http://www.w3.org/2000/xp/)。JAX/RPC使你不用再關注這些協議的規范,使應用的開發更快速。不久,開發人員就不用直接以XML表示方法調用了。目前有很多第三方實現了SOAP,開發人員可以在不同的層次上調用SOAP,并選擇使用哪一種。將來,JAX/RPC會取代這些APIs并提供一個統一的接口來構造以及處理SOAP RPC請求。在接收一個從商業伙伴那里過來的SOAP請求的時候,一個Java servlet用JAX/RPC來接收這個基于XML的請求。一旦接收到請求后,servlet會調用商務方法,并且把結果回復給商業伙伴。

JAXM

當從商業合作伙伴那里接收一個Web服務的請求時,我們需要Java API實現一個Servlet來處理ebXML消息,就象我們用JAX/RPC來處理SOAP請求一樣。 Java API for XML Messaging (JAXM) 是集成XML消息標準(象ebXML消息或者SOAP消息)的規范。 這個API是用來推動XML消息處理的,它檢測那些預定單的消息格式以及約束。它控制了所有的消息封裝機制,用一種直觀的方式分割了消息中的信息,象路由信息,發貨單。這樣,開發人員只要關注消息的有效負載,而不用去擔心那些消息的重復處理。目前的開發人員用JAXP來實現JAXM將要提供的功能,JAXM將會提供一套非常具有針對性的API來處理基于XML的消息傳送。這將大大簡化開發人員的代碼,并使它們具有統一的接口。 JAXM和JAX/RPC的差別在于處理消息導向的中間件以及遠程過程調用的不同。JAXM注重于消息導向,而JAX/RPC是用來完成遠程過程調用的。

請注意,在JAXM 和 JAX/RPC技術成熟之前,開發人員還是依賴于第三方的SOAP APIs,象Apache SOAP, IdooXOAP, 以及 GLUE。當JAXM 和 JAX/RPC正式發布后,它將為當前不同的SOAP和ebXML消息提供統一的接口。就象JDBC位多種不同的數據庫提供統一的接口。

JAXB

XML綁定技術可以把XML文檔和Java對象進行自由轉換。 用JAXB,你可以在后臺的EJB層,把XML文檔轉換成Java對象。同樣你也可以把從EJB中取出的Java對象轉換成XML文檔返回給用戶。 JAXB接口提供了比SAX和DOM更高級的方法來處理XML文檔。它提供的特性可以在XML數據和Java類之間互相映射,提供了一個簡單的方法來轉換XML數據。它比逐個解析標記更簡單。



憶風 2008-10-08 04:12 發表評論
]]>
主站蜘蛛池模板: 亚洲欧洲日产国码在线观看| 亚洲精品美女久久777777| 91午夜精品亚洲一区二区三区| 国产又大又粗又硬又长免费| 亚洲色图古典武侠| 精品国产亚洲AV麻豆| 成人免费无码精品国产电影| 色偷偷尼玛图亚洲综合| 国产美女精品久久久久久久免费| 久久亚洲AV成人无码国产最大| 精品国产免费一区二区| 91情国产l精品国产亚洲区| 热re99久久6国产精品免费| 久久久久噜噜噜亚洲熟女综合| 亚洲а∨天堂久久精品9966| 久久青草精品38国产免费| 亚洲日本在线观看| 一级特黄aaa大片免费看| 国产精品无码免费播放| 亚洲欧洲无码一区二区三区| 1000部国产成人免费视频| 亚洲欧洲校园自拍都市| 在线视频免费观看www动漫 | 日本一区免费电影| 怡红院亚洲红怡院在线观看| 亚洲美日韩Av中文字幕无码久久久妻妇 | 亚洲中文字幕第一页在线| 日本在线免费观看| 亚洲一区二区三区四区视频 | 午夜亚洲国产精品福利| 亚洲最大激情中文字幕| 亚洲香蕉免费有线视频| 亚洲一区二区三区日本久久九| 99久久99久久精品免费看蜜桃| 亚洲福利视频网站| 蜜臀98精品国产免费观看| 亚洲日韩亚洲另类激情文学| 自拍偷自拍亚洲精品第1页| 51在线视频免费观看视频| 香蕉视频免费在线| 亚洲欧洲日产国码一级毛片|