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

下图是客户端代码的运行界面: 

 

 使用XFire实现Web服务_第1张图片

 

本章小结

本章我们主要讲述了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服务是非常简单的。

 

 

你可能感兴趣的:(java,spring,String,服务器,SOAP,web服务)