Web應(yīng)用的部署描述
在Java中,Web應(yīng)用至少使用一個名叫web.xml的部署描述來部署. XFire本身就是基于Severlet的應(yīng)用,因此我們需要向文件中添加一些必要的參照.那么我們就需要配置我們創(chuàng)建的Web服務(wù).我們使用名叫services.xml的文件來完成配置.
web.xml
首先想讓我們看一下web.xml.我們需要加上如下語句:
????????<servlet-name>XFireServlet</servlet-name>
????????<display-name>XFire Servlet</display-name>
????????<servlet-class>org.codehaus.xfire.transport.http.XfireConfigurableServlet
???????? </servlet-class>
????</servlet>
????<servlet-mapping>
????????<servlet-name>XFireServlet</servlet-name>
????????<url-pattern>/servlet/XFireServlet/*</url-pattern>
????</servlet-mapping>
????
????<servlet-mapping>
????????<servlet-name>XFireServlet</servlet-name>
????????<url-pattern>/services/*</url-pattern>
????</servlet-mapping>
services.xml
下面我們就要描述一下我們的Web服務(wù)都包含什么.這個工作在services.xml中完成.這個文件位于META-INF/xfire目錄下,下面是基本的配置條目:
<beans xmlns="http://xfire.codehaus.org/config/1.0">
??
??<service>
????<name>Banking</name>
????<namespace>mybank</namespace>
????<serviceClass>com.mybank.xfire.example.IBankingService</serviceClass>
????<implementationClass>com.mybank.xfire.example.BankingService</implementationClass>
??</service>??
??
</beans>
第一個子元素是<name>, 你可以提供任何有效的xml名字,這個名字會被客戶端程序和服務(wù)器上的其他組件使用.例如,當服務(wù)器起來以后,你可以在瀏覽器上使用這個名稱來查看WSDL.
下一個子元素是<namespace>. 任何有效地xml名稱都可以, <namespace>將作為你服務(wù)器的唯一標識變量使用.
<serviceClass>元素包含Java類名用來指明方法的簽名.在我們的這個例子中是IBankingService接口.如果你的Java類沒有實現(xiàn)任何接口,那就填入類名.在你的Java類或接口中也許含有不知一個方法,只需要一個入口來將他們轉(zhuǎn)換成Web服務(wù).
<implementationClass>元素記錄實現(xiàn)接口的Java類名.這是一個可選元素.如果前一個元素<serviceClass>填入的是接口,那么此處就要填入相應(yīng)的實現(xiàn)類名.
至此,我們的Web服務(wù)配置工作就完成了.
XFire和其他庫
現(xiàn)在,我們做最后一步工作--獲得所有必要的庫文件.我們怎么獲得他們呢? 訪問XFire官方網(wǎng)站http://xfire.codehaus.org/?下載xfire-distribution-1.0.zip并解壓到本地文件夾中.將下列文件拷貝到WEB-INF\lib:
activation-1.0.2.jar commons-codec-1.3.jar commons-httpclient-3.0.jar commons-logging-1.0.4.jar jaxen-1.1-beta-8.jar jdom-1.0.jar log4j-1.2.x.jar mail-1.3.3_01.jar spring-1.2.x.jar stax-api-1.0.jar wsdl4j-1.5.2.jar wstx-asl-2.9.jar xbean-2.1.0.jar xbean-spring-2.2.jar xfire-all-1.0.jar XmlSchema-1.0.jar 大功告成!讓我們部署并啟動應(yīng)用.要部署這個例子,只需要將websvc.war復(fù)制到Apache Tomcat?環(huán)境的webapps目錄下,等待幾分鐘,應(yīng)用會自動啟動. 例子的所有源代碼也包含在這個war文件中(文件太大,我將其分卷壓縮)part1? part2??part3? part4? part5.現(xiàn)在,我們的應(yīng)用已經(jīng)是一個Web服務(wù)了.?
我們怎么知道Web服務(wù)有效?
我們來做一些測試,看看Web服務(wù)是否有效.
首先,我們先來看看WSDL是否有效。在瀏覽器中輸入URL。哪個URL?因為我們的war文件名叫websvc.war,services.xml 中給出的servicenames是Banking, 那么WSDL URL為http://localhost:8080/websvc/services/Banking?wsdl。
請注意:URL的前一部分,例如:http://localhost:8080會根據(jù)你安裝的應(yīng)用服務(wù)不同而不同。如果你輸入了URL,你將會看到以<wsdl:definitions>為根結(jié)點的xml文件。這個文件叫做web服務(wù)的WSDL.如果你看到了這個文件,那么初步驗證你的Web服務(wù)有效。
但是這個驗證還不夠。有時候情況會復(fù)雜一些,你可以看到WSDL,但是客戶端卻無法訪問Web服務(wù)。因此要真正檢驗Web服務(wù)是否真的好使,就要用客戶端程序?qū)eb服務(wù)作一次真正的調(diào)用。
后面我將介紹如何開發(fā)客戶端-->XFire:開發(fā)Web服務(wù)的簡易之道(三)--開發(fā)客戶端程序