天天看點

Web Service實踐之——開始XFire

一、Axis與XFire的比較<br>XFire是與Axis2 并列的新一代WebService平台。之是以并稱為新一代,因為它:<br>1、支援一系列Web Service的新标準--JSR181、WSDL2.0 、JAXB2、WS-Security等;<br>2、使用Stax解釋XML,性能有了質的提高。XFire采用Woodstox 作Stax實作;<br>3、容易上手,可以友善快速地從pojo釋出服務; <br>4、Spring的結合;<br>5、靈活的Binding機制,包括預設的Acegis,xmlbeans,jaxb2,castor。<br>?<br>XFire與Axis1性能的比較<br>1、XFire比Axis1.3快2-6倍<br>2、XFire的響應時間是Axis1.3的1/2到1/5<br>?<br>XFire與Axis2的比較<br>雖然XFire與Axis2都是新一代的WebService平台,但是Axis2的開發者太急于推出1.0版本,是以1.0還不是一個穩定的版本,它的開發者宣稱1.1版本即将推出,希望1.1版本會是個穩定的版本。在XFire捐獻給apache後有人認為Axis2将會滅亡。其實在很多人眼裡,Axis2并不是pojo形式,現在也好象XFire比Axis更有市場,也有很多人開始從Axis轉向XFire。<br>據說,XFire确實比Axis2簡單很多

AXIS VS CXF<br>在SOA領域,我們認為Web Service是SOA體系的建構單元(building block)。對于作過WebService的開發人員來說,AXIS和CXF一定都不會陌生。這兩個産品都是Apache孵化器下面的Web Service開源開發工具。 Axis2的最新版本是1.3,CXF現在已經到了2.0版本。

這兩個架構 都是從已有的開源項目發展起來的。Axis2是從Axis1.x系列發展而來。CXF則是XFire和Celtix項目的結合産品。Axis2是從底層全部重新實作,使用了新的擴充性更好子產品架構。 CXF也重新的深化了XFire和Celtix這兩個開發工具。

新産品的退出導緻了幾個問題。是不是現有的使用Axis 1.x,XFire和Celix的應用需要遷移的新的版本上。如果一個開發人員确定要遷移它的應用到新的架構上,那麼他應該選擇哪一個呢?相反的,如果一個開發者決定從頭開發一個新的Web Service,他應該使用哪個呢? 這兩個架構哪一個更好一些呢?

對于系統遷移來說,也許遷移到新的架構并不難。Axis和CXF都提供了遷移的指導。能夠給開發者一些遷移的技巧和經驗。但是對于這樣遷移,這兩個開源項目都沒有提供遷移的工具。對于這樣的遷移工作,盡管很值得去尋找所有的可行方案。Axis2和CXF都有各自不同的WebService開發方法,每個方法都有相當數量擁護者。

通過一個比較矩陣來比較Axis2和CXF變得有現實的意義。這兩個項目都開發不夠成熟,但是最主要的差別在以下幾個方面:<br>1. CXF支援 WS-Addressing,WS-Policy, WS-RM, WS-Security和WS-I Basic Profile。Axis2不支援WS-Policy,但是承諾在下面的版本支援。<br>2. CXF可以很好支援Spring。Axis2不能<br>3. AXIS2支援更廣泛的資料并對,如XMLBeans,JiBX,JaxMe和JaxBRI和它自定義的資料綁定ADB。注意JaxME和JaxBRI都還是試驗性的。CXF隻支援JAXB和Aegis。在CXF2.1<br>4. Axis2支援多語言-除了Java,他還支援C/C++版本。

比較這兩個架構的Web Service開發方法與比較它們的特性同樣重要。 從開發者的角度,兩個架構的特性相當的不同。 Axis2的開發方式類似一個小型的應用伺服器,Axis2的開發包要以WAR的形式部署到Servlet容器中,比如Tomcat,通過這些容器可以對工作中的Web Service進行很好的監控和管理。Axis2 的Web administrion子產品可以讓我們動态的配置Axis2.一個新的服務可以上載,激活,使之失效,修改web服務的參數。管理UI也可以管理一個或者多個處于運作狀态的服務。這種界面化管理方式的一個弊端是所有在運作時修改的參數沒有辦法儲存,因為在重新開機動之後,你所做的修改就會全部失效。

Axis2允許自己作為獨立的應用來釋出Web Service,并提供了大量的功能和一個很好的模型,這個模型可以通過它本身的架構(modular architecture)不斷添加新的功能。有些開發人員認為這種方式對于他們的需求太過于繁瑣。這些開發人員會更喜歡CXF。

CXF更注重開發人員的工效(ergonomics)和嵌入能力(embeddability)。大多數配置都可以API來完成,替代了比較繁瑣的XML配置檔案, Spring的內建性經常的被提及,CXF支援Spring2.0和CXF's API和Spring的配置檔案可以非常好的對應。CXF強調代碼優先的設計方式(code-first design),使用了簡單的API使得從現有的應用開發服務變得友善。

不過你選擇Axis2還是CXF,你都可以從開源社群得到大量的幫助。這兩個架構都有商業公司提供服務,WSO2提供AXIS2的支援,Iona提供CXF的支援。這兩公司都有很活躍的開發者社群。 Axis2出現的時間較早,CXF的追趕速度快。我的建議是:如果你需要多語言的支援,你應該選擇AXIS2。如果你需要把你的實作側重JAVA并希望和Spring內建,CXF就是更好的選擇,特别是把你的Web Service嵌入其他的程式中。如果你覺得這兩個架構的新特性對于你并沒有太大的用處,你會覺得Axis1也是不錯的選擇,你應該繼續使用它知道你有充分的理由去更換它。

<br>二、開始XFire的生火之旅:<br>1、配置XFire運作環境:<br>在Tomcat下建立一個Web Applications,命名為stove,然後在其WEB-INF目錄下建立一個web.xml檔案,檔案中輸入:

<div class="dp-highlighter">

<div class="bar">

<div class="tools">Xml代碼 <a title="複制代碼" href="http://lishuaishuai.iteye.com/admin/blogs/#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="http://lishuaishuai.iteye.com/images/icon_copy.gif" alt="複制代碼"></a>?<a title="收藏這段代碼"><img class="star" src="http://lishuaishuai.iteye.com/images/icon_star.png" alt="收藏代碼"><img class="spinner" style="display: none;" src="http://lishuaishuai.iteye.com/images/spinner.gif" alt=""></a>

<ol class="dp-xml">

[*]<span>[b]<span style="color: #006699;"><span class="tag"><?</span><span class="tag-name">xml</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">version</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"1.0"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">encoding</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"GB2312"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span></span>

[*]<span><!DOCTYPE?web-app ??</span>

[*]<span>????PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN" ??</span>

<li>

<span>????"http://java.sun.com/dtd/web-app_2_3.dtd"</span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

[*]<span>???? ??</span>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">web-app</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

[*]<span>??</span>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">servlet</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">servlet-name</span><span class="tag">></span></span>[/b]<span>XFireServlet</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">servlet-name</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">display-name</span><span class="tag">></span></span>[/b]<span>XFire?Servlet</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">display-name</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">servlet-class</span><span class="tag">></span></span>[/b]<span>org.codehaus.xfire.transport.http.XFireConfigurableServlet</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">servlet-class</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">servlet</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

[*]<span>??</span>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">servlet-mapping</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">servlet-name</span><span class="tag">></span></span>[/b]<span>XFireServlet</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">servlet-name</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span></span>[/b]<span>/servlet/XFireServlet/*</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">servlet-mapping</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

[*]<span>??</span>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">servlet-mapping</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">servlet-name</span><span class="tag">></span></span>[/b]<span>XFireServlet</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">servlet-name</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span></span>[/b]<span>/services/*</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">servlet-mapping</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

[*]<span>??</span>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">web-app</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

</ol>

其中主要就是引入了XFireServlet,用以處理Web Service請求,并且負責提供Web Service的WSDL,如果你釋出了一個名為BookService的WebService,則可以通過網址:<br>http://<伺服器>[:端口]/<webapp名>/services/BookService<br>來通路這個WebService,并且通過位址:<br>http://<伺服器>[:端口]/<webapp名>/services/BookService?WSDL? 來得到這個WebService的WSDL資訊。

2、開發最簡單的WebService<br>在WEB-INF目錄下建立src檔案夾,然後再建一個package:<br>cn.com.pansky.webservice.xfire.study<br>,在這個包下面建立一個接口:

<div class="dp-highlighter">

<div class="bar">

<div class="tools">Java代碼 <a title="複制代碼" href="http://lishuaishuai.iteye.com/admin/blogs/#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="http://lishuaishuai.iteye.com/images/icon_copy.gif" alt="複制代碼"></a>?<a title="收藏這段代碼"><img class="star" src="http://lishuaishuai.iteye.com/images/icon_star.png" alt="收藏代碼"><img class="spinner" style="display: none;" src="http://lishuaishuai.iteye.com/images/spinner.gif" alt=""></a>

<ol class="dp-j">

[*]<span><span class="keyword">[b]<span style="color: #7f0055;">package</span>[/b]</span><span>?cn.com.pansky.webservice.xfire.study; ??</span></span>

[*]<span>??</span>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">public</span>[/b]</span><span>?</span><span class="keyword">[b]<span style="color: #7f0055;">interface</span>[/b]</span><span>?SayHiService{ ??</span>

</li>

<li>

<span>??</span><span class="keyword">[b]<span style="color: #7f0055;">public</span>[/b]</span><span>?String?sayHi(String?name); ??</span>

</li>

[*]<span>}??</span>

</ol>

這個接口是告訴伺服器你的WebService哪些方法可以被使用者調用的。下面我們再來寫一個SayHiService的實作類,以完成業務邏輯:

<div class="dp-highlighter">

<div class="bar">

<div class="tools">Java代碼 <a title="複制代碼" href="http://lishuaishuai.iteye.com/admin/blogs/#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="http://lishuaishuai.iteye.com/images/icon_copy.gif" alt="複制代碼"></a>?<a title="收藏這段代碼"><img class="star" src="http://lishuaishuai.iteye.com/images/icon_star.png" alt="收藏代碼"><img class="spinner" style="display: none;" src="http://lishuaishuai.iteye.com/images/spinner.gif" alt=""></a>

<ol class="dp-j">

[*]<span><span class="keyword">[b]<span style="color: #7f0055;">package</span>[/b]</span><span>?cn.com.pansky.webservice.xfire.study; ??</span></span>

[*]<span>??</span>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">public</span>[/b]</span><span>?</span><span class="keyword">[b]<span style="color: #7f0055;">class</span>[/b]</span><span>?SayHiServiceImpl?</span><span class="keyword">[b]<span style="color: #7f0055;">implements</span>[/b]</span><span>?SayHiService{ ??</span>

</li>

<li>

<span>??</span><span class="keyword">[b]<span style="color: #7f0055;">public</span>[/b]</span><span>?String?sayHi(String?name){ ??</span>

</li>

<li>

<span>????</span><span class="keyword">[b]<span style="color: #7f0055;">if</span>[/b]</span><span>(name==</span><span class="keyword">[b]<span style="color: #7f0055;">null</span>[/b]</span><span>){ ??</span>

</li>

<li>

<span>??????</span><span class="keyword">[b]<span style="color: #7f0055;">return</span>[/b]</span><span>?</span><span class="string"><span style="color: #0000ff;">"連名字也不肯告訴我嗎?"</span></span><span>; ??</span>

</li>

[*]<span>????} ??</span>

<li>

<span>????</span><span class="keyword">[b]<span style="color: #7f0055;">return</span>[/b]</span><span>?name+</span><span class="string"><span style="color: #0000ff;">",?你吃了嗎?沒吃回家吃去吧。"</span></span><span>; ??</span>

</li>

[*]<span>??} ??</span>

[*]<span>??</span>

<li>

<span>??</span><span class="keyword">[b]<span style="color: #7f0055;">public</span>[/b]</span><span>?String?不告訴你(){ ??</span>

</li>

<li>

<span>????</span><span class="keyword">[b]<span style="color: #7f0055;">return</span>[/b]</span><span>?</span><span class="string"><span style="color: #0000ff;">"我的名字不告訴你!"</span></span><span>; ??</span>

</li>

[*]<span>??} ??</span>

[*]<span>}??</span>

</ol>

?這個類實作了sayHi方法,該方法是可以通過WebService調用通路到的。另外還實作了一個方法“不告訴你”,該方法因為沒有在接口SayHiService中定義,是以不能被WebService調用到。<br>?? 這個例子足夠簡單吧,就跟我們剛學Java時寫的"Hello world"沒什麼兩樣。<br>到這裡為止,我們做的跟平時的Java開發沒啥差別,該如何來釋出WebService呢?

3、把JAVA類釋出為WebService:<br>在WEB-INF/classes目錄下建立檔案夾:META-INF/xfire,然後在該檔案夾下建立一個XML檔案:services.xml,檔案内容如下:

<div class="dp-highlighter">

<div class="bar">

<div class="tools">Xml代碼 <a title="複制代碼" href="http://lishuaishuai.iteye.com/admin/blogs/#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="http://lishuaishuai.iteye.com/images/icon_copy.gif" alt="複制代碼"></a>?<a title="收藏這段代碼"><img class="star" src="http://lishuaishuai.iteye.com/images/icon_star.png" alt="收藏代碼"><img class="spinner" style="display: none;" src="http://lishuaishuai.iteye.com/images/spinner.gif" alt=""></a>

<ol class="dp-xml">

[*]<span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">beans</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://xfire.codehaus.org/config/1.0"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span></span>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">service</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">name</span><span class="tag">></span></span>[/b]<span>SayHiService</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">name</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">namespace</span><span class="tag">></span></span>[/b]<span>http://cn.com.pansky/SayHiService</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">namespace</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">serviceClass</span><span class="tag">></span></span>[/b]<span>cn.com.pansky.webservice.xfire.study.SayHiService</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">serviceClass</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">implementationClass</span><span class="tag">></span></span>[/b]<span>cn.com.pansky.webservice.xfire.study.SayHiServiceImpl</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">implementationClass</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">service</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">beans</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

</ol>

?這個檔案定義一個WebService: SayHiService,并同時定義了接口和實作類。<br>好了,該建的檔案基本建完了,現在想辦法把src下的java檔案編譯成class,并複制到WEB-INF/classes目錄下

4、啟動Tomcat,測試WebService<br>如果Tomcat還沒配置好,抽兩分鐘再配一下。再把Tomcat啟動起來。<br>再打開浏覽器,輸入:<br>[url=http://localhost/stove/services]<span style="color: #006699;">http://localhost/stove/services</span>[/url]<br>,伺服器傳回的結果如下:<br>Available Services:<br>??? * SayHiService [wsdl]<br>???? Generated by XFire ( [url=http://xfire.codehaus.org/]<span style="color: #006699;">http://xfire.codehaus.org</span>[/url] ) <br>我們看到我們的WebService已經布署成功了,我們再看看它的WSDL資訊:

<div class="dp-highlighter">

<div class="bar">

<div class="tools">Xml代碼 <a title="複制代碼" href="http://lishuaishuai.iteye.com/admin/blogs/#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="http://lishuaishuai.iteye.com/images/icon_copy.gif" alt="複制代碼"></a>?<a title="收藏這段代碼"><img class="star" src="http://lishuaishuai.iteye.com/images/icon_star.png" alt="收藏代碼"><img class="spinner" style="display: none;" src="http://lishuaishuai.iteye.com/images/spinner.gif" alt=""></a>

<ol class="dp-xml">

[*]<span>[b]<span style="color: #006699;"><span class="tag"><?</span><span class="tag-name">xml</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">version</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"1.0"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">encoding</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"UTF-8"</span></span><span class="tag">[b]<span style="color: #006699;">?></span>[/b]</span><span>??</span></span>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:definitions</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">targetNamespace</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://cn.com.pansky/SayHiService"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:tns</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://cn.com.pansky/SayHiService"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:wsdlsoap</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://schemas.xmlsoap.org/wsdl/soap/"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:soap12</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://www.w3.org/2003/05/soap-envelope"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:xsd</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://www.w3.org/2001/XMLSchema"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:soapenc11</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://schemas.xmlsoap.org/soap/encoding/"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:soapenc12</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://www.w3.org/2003/05/soap-encoding"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:soap11</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://schemas.xmlsoap.org/soap/envelope/"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:wsdl</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://schemas.xmlsoap.org/wsdl/"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:types</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:schema</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">xmlns:xsd</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://www.w3.org/2001/XMLSchema"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">attributeFormDefault</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"qualified"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">elementFormDefault</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"qualified"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">targetNamespace</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://cn.com.pansky/SayHiService"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:element</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHi"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:complexType</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:sequence</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:element</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">maxOccurs</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"1"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">minOccurs</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"1"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"in0"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">nillable</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"true"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">type</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"xsd:string"</span></span><span class="tag">[b]<span style="color: #006699;">/></span>[/b]</span><span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">xsd:sequence</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">xsd:complexType</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">xsd:element</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:element</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHiResponse"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:complexType</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:sequence</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">xsd:element</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">maxOccurs</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"1"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">minOccurs</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"1"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"out"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">nillable</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"true"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">type</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"xsd:string"</span></span><span class="tag">[b]<span style="color: #006699;">/></span>[/b]</span><span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">xsd:sequence</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">xsd:complexType</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">xsd:element</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">xsd:schema</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:types</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:message</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHiRequest"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:part</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"parameters"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">element</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"tns:sayHi"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:part</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:message</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:message</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHiResponse"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:part</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"parameters"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">element</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"tns:sayHiResponse"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:part</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:message</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:portType</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"SayHiServicePortType"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:operation</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHi"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:input</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHiRequest"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">message</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"tns:sayHiRequest"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:input</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:output</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHiResponse"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">message</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"tns:sayHiResponse"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:output</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:operation</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:portType</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:binding</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"SayHiServiceHttpBinding"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">type</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"tns:SayHiServicePortType"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdlsoap:binding</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">style</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"document"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">transport</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://schemas.xmlsoap.org/soap/http"</span></span><span class="tag">[b]<span style="color: #006699;">/></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:operation</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHi"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdlsoap:operation</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">soapAction</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">""</span></span><span class="tag">[b]<span style="color: #006699;">/></span>[/b]</span><span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:input</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHiRequest"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdlsoap:body</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">use</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"literal"</span></span><span class="tag">[b]<span style="color: #006699;">/></span>[/b]</span><span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:input</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:output</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"sayHiResponse"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdlsoap:body</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">use</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"literal"</span></span><span class="tag">[b]<span style="color: #006699;">/></span>[/b]</span><span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:output</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:operation</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:binding</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:service</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"SayHiService"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdl:port</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">name</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"SayHiServiceHttpPort"</span></span><span>?</span><span class="attribute"><span style="color: #ff0000;">binding</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"tns:SayHiServiceHttpBinding"</span></span><span class="tag">[b]<span style="color: #006699;">></span>[/b]</span><span>??</span>

</li>

<li>

<span>??????</span>[b]<span style="color: #006699;"><span class="tag"><</span><span class="tag-name">wsdlsoap:address</span></span>[/b]<span>?</span><span class="attribute"><span style="color: #ff0000;">location</span></span><span>=</span><span class="attribute-value"><span style="color: #0000ff;">"http://localhost/stove/services/SayHiService"</span></span><span class="tag">[b]<span style="color: #006699;">/></span>[/b]</span><span>??</span>

</li>

<li>

<span>????</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:port</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

<span>??</span>[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:service</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

<li>

[b]<span style="color: #006699;"><span class="tag"></</span><span class="tag-name">wsdl:definitions</span><span class="tag">></span></span>[/b]<span>??</span>

</li>

</ol>

?這個檔案跟我們用Axis生成的基本是一樣的。

5、享受美味的時刻<br>WebService這道大餐算是烹制好了,現在是享用美餐的時候了。<br>我們寫一個用戶端吃掉這道大餐:

<div class="dp-highlighter">

<div class="bar">

<div class="tools">Java代碼 <a title="複制代碼" href="http://lishuaishuai.iteye.com/admin/blogs/#" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" ><img src="http://lishuaishuai.iteye.com/images/icon_copy.gif" alt="複制代碼"></a>?<a title="收藏這段代碼"><img class="star" src="http://lishuaishuai.iteye.com/images/icon_star.png" alt="收藏代碼"><img class="spinner" style="display: none;" src="http://lishuaishuai.iteye.com/images/spinner.gif" alt=""></a>

<ol class="dp-j">

[*]<span><span class="keyword">[b]<span style="color: #7f0055;">package</span>[/b]</span><span>?cn.com.pansky.webservice.xfire.study; ??</span></span>

[*]<span>??</span>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">import</span>[/b]</span><span>?java.net.MalformedURLException; ??</span>

</li>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">import</span>[/b]</span><span>?java.util.Map; ??</span>

</li>

[*]<span>??</span>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">import</span>[/b]</span><span>?org.codehaus.xfire.client.Client; ??</span>

</li>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">import</span>[/b]</span><span>?org.codehaus.xfire.client.XFireProxyFactory; ??</span>

</li>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">import</span>[/b]</span><span>?org.codehaus.xfire.service.Service; ??</span>

</li>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">import</span>[/b]</span><span>?org.codehaus.xfire.service.binding.ObjectServiceFactory; ??</span>

</li>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">import</span>[/b]</span><span>?org.codehaus.xfire.transport.http.CommonsHttpMessageSender; ??</span>

</li>

[*]<span>??</span>

<li>

<span class="keyword">[b]<span style="color: #7f0055;">public</span>[/b]</span><span>?</span><span class="keyword">[b]<span style="color: #7f0055;">class</span>[/b]</span><span>?SayHiClient{ ??</span>

</li>

<li>

<span>??</span><span class="keyword">[b]<span style="color: #7f0055;">public</span>[/b]</span><span>?</span><span class="keyword">[b]<span style="color: #7f0055;">static</span>[/b]</span><span>?</span><span class="keyword">[b]<span style="color: #7f0055;">void</span>[/b]</span><span>?main(String?args[])?{ ??</span>

</li>

<li>

<span>????String?serviceURL?=?</span><span class="string"><span style="color: #0000ff;">"http://localhost/stove/services/SayHiService"</span></span><span>; ??</span>

</li>

<li>

<span>????Service?serviceModel?=?</span><span class="keyword">[b]<span style="color: #7f0055;">new</span>[/b]</span><span>?ObjectServiceFactory().create(SayHiService.</span><span class="keyword">[b]<span style="color: #7f0055;">class</span>[/b]</span><span>,</span><span class="keyword">[b]<span style="color: #7f0055;">null</span>[/b]</span><span>,</span><span class="string"><span style="color: #0000ff;">"http://cn.com.pansky/SayHiService"</span></span><span>,</span><span class="keyword">[b]<span style="color: #7f0055;">null</span>[/b]</span><span>); ??</span>

</li>

[*]<span>??</span>

<li>

<span>????XFireProxyFactory?serviceFactory?=?</span><span class="keyword">[b]<span style="color: #7f0055;">new</span>[/b]</span><span>?XFireProxyFactory(); ??</span>

</li>

[*]<span>??</span>

<li>

<span>????</span><span class="keyword">[b]<span style="color: #7f0055;">try</span>[/b]</span><span>{ ??</span>

</li>

[*]<span>??????SayHiService?service?=?(SayHiService)?serviceFactory.create(serviceModel,?serviceURL); ??</span>

[*]<span>??????Client?client?=?Client.getInstance(service); ??</span>

<li>

<span>??????</span><span class="comment"><span style="color: #008200;">//client.addOutHandler(new?OutHeaderHandler()); </span></span><span>??</span>

</li>

[*]<span>??</span>

<li>

<span>??????</span><span class="comment"><span style="color: #008200;">//?disable?timeout </span></span><span>??</span>

</li>

<li>

<span>??????client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT,?</span><span class="string"><span style="color: #0000ff;">"1"</span></span><span>); ??</span>

</li>

[*]<span>??</span>

<li>

<span>??????String?hello?=?service.sayHi(</span><span class="string"><span style="color: #0000ff;">"張山瘋"</span></span><span>); ??</span>

</li>

<li>

<span>??????System.out.println(</span><span class="string"><span style="color: #0000ff;">"伺服器對[張山瘋]?的回答是:"</span></span><span>?+?hello?); ??</span>

</li>

[*]<span>??</span>

<li>

<span>??????hello?=?service.sayHi(</span><span class="keyword">[b]<span style="color: #7f0055;">null</span>[/b]</span><span>); ??</span>

</li>

<li>

<span>??????System.out.println(</span><span class="string"><span style="color: #0000ff;">"伺服器胡言亂語說:"</span></span><span>?+?hello?); ??</span>

</li>

[*]<span>??</span>

<li>

<span>????}?</span><span class="keyword">[b]<span style="color: #7f0055;">catch</span>[/b]</span><span>?(MalformedURLException?e)?{ ??</span>

</li>

[*]<span>??????e.printStackTrace(); ??</span>

[*]<span>????} ??</span>

[*]<span>??} ??</span>

[*]<span>}??</span>

</ol>

?編譯這個類,再執行一下,伺服器服務的結果是:

2008-5-22 17:39:17 org.apache.commons.httpclient.HttpMethodBase writeRequest<br>資訊: 100 (continue) read timeout. Resume sending the request<br>2008-5-22 17:39:17 org.apache.commons.httpclient.HttpMethodBase readResponse<br>資訊: Discarding unexpected response: HTTP/1.1 100 Continue<br>伺服器對[張山瘋] 的回答是:張山瘋, 你吃了嗎?沒吃回家吃去吧。<br>2008-5-22 17:39:20 org.apache.commons.httpclient.HttpMethodBase writeRequest<br>資訊: 100 (continue) read timeout. Resume sending the request<br>2008-5-22 17:39:20 org.apache.commons.httpclient.HttpMethodBase readResponse<br>資訊: Discarding unexpected response: HTTP/1.1 100 Continue<br>伺服器胡言亂語說:連名字也不肯告訴我嗎?

好了,WebService布署成功。

下課!