使用XFire實現Web服務

XFire是新一代JavaSoap框架,XFire API易於使用,並且支持各種標準,因此,XFire使得SOA的開發更加簡單明瞭。XFire在性能方面也非常出色,因爲它使用了對內存要求比較低的StAX(Streaming API for XML)模型。現在,XFire更名爲CXF,最新版本爲2.0

 

使用XFire實現Web服務

前面您已經瞭解如何使用AxisSpring,創建標準的web檔案並把它們部署爲web服務,從而來實現Web服務。現在,我們這裏將使用相對輕量級的方式,即使用XFire來實現Web服務。

我們假定您已經從下面的URL下載了XFire1.2.2版本。

http://xfire.codehaus.org/Download

下載後請解壓到本地目錄,然後相應地修改本章源代碼examples. PROPERTIES 文件中的xfire.home屬性。

 

服務器端及客戶端代碼

XFire實現Web服務實例的源代碼位於ch03/04_XFire/src目錄中,現在我們來逐一看看其源代碼((譯者注:本書代碼請從http://www.packtpub.com/files/code/3216_Code.zip處下載)

IHello.java

按照慣例,IHello爲一個簡單的業務接口,只定義了一個sayHello方法。

public interface IHello{
String sayHello(String name);
}  

HelloServiceImpl 

HelloServiceImpl是我們的Web服務實現類,它實現了IHello接口。

public class HelloServiceImpl implements IHello{

private static long times = 0L;

public HelloServiceImpl(){

System.out.println("HelloServiceImpl.HelloServiceImpl()...");

}

public String sayHello(String name){

System.out.println("HelloServiceImpl.sayHello

(" + (++times) + ")");

return "HelloServiceImpl.sayHello :

HELLO! You just said:" + name;

}

}

 

web.xml文件

XFire Web服務,我們需要在web.xml文件中把org.codehaus.xfire.transport.http.XFireConfigurableServlet配置爲一個Servlet,然後,我們把所有類似於/services/模式的URL請求都交由XFireConfigurableServlet這個Sevlet處理,web.xml中的具體配置如下:.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<servlet>

<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>

</web-app>

services.xml文件

services.xml文件是XFire主要的配置文件,現在我們來看看這個實例文件,理解其中細節:

s xmlns="http://xfire.codehaus.org/config/1.0">

<service>

<name>Hello</name>

<namespace>http://xfire.binildas.com</namespace>

<serviceClass>com.binildas.xfire.IHello</serviceClass>

<implementationClass>

com.binildas.xfire.HelloServiceImpl

</implementationClass>

</service>

</beans>

在上面文件中的name元素是必須的,它表示要暴露給外界的服務名稱;namespace元素是可選的,它表明該服務的目標名字空間; serviceClass表示您想要把哪個對象設爲服務對象;而implementationClass元素則表明,當服務被調用時,您希望使用的Web服務的實現類。 

運行服務器和客戶端

 請使用下列命令編譯服務器端代碼:

cd ch03/04_XFire
ant

上面的命令不但編譯服務器端代碼,也編譯客戶端代碼。編譯結束後,您將會在下列位置發現可以部署的war文件:

 ch03/04_XFire/dist

現在,您就可以將上面的war文件拷貝到您的web服務器的webapps目錄,然後重啓服務器。如果部署順利,您可以通過訪問http://localhost:8080/HelloXFire/services/Hello?wsdl這個URL獲得該服務的WSDL。您也可以通過下面命令,執行客戶端代碼測試您的Web服務

cd ch03/04_XFire

ant run

下圖是客戶端代碼的運行界面: 

 

 

 

本章小結

本章我們主要講述了Java世界中Web服務實現的主要方法,而且,我們對這些方法進行了實踐: 

 JAX-WS 2.0 JAX-WS 2.0JAX-WS(Java API for XML web services)規範的參考實現,我們在Java EE應用服務器和Java6標準版中部署了我們JAX-WS的實例程序。 

Apache AxisAxis是來自Apache諸多Web服務產品中的一個開源實現,我們開發並將Web服務代碼打包成標準的war包,並將該服務部署到Apache Tomcat服務器。 

SpringSpring提供了依賴注入和bean交織及其它的功能,我們可以使用Spring核心包或Spring-WS來開發Web服務。在本章的實例程序中,我們使用Spring核心包對Axis的示例程序進行了改進。 

XfireXfire是新一代JavaSoap框架,它使得開發Web服務更加容易,開發過程更爲明瞭。本章通過實例說明,使用Xfire編譯並部署Web服務是非常簡單的。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章