在写简单例子之前,我们要做好如下准备:
到网上下载xfire-1.2.6.zip包. 然后解压之后,xfire-1.2.6\lib 目录下的所有.jar 文件和 xfire-1.2.6目录下的xfire-all-1.2.6.jar文件,都拷贝到项目中的WEB-INF目录中的lib目录中,
之后,我们开始创建项目XFire_Projects,我们就可以开始在项目中建立包, 在包中创建一个IHelloWorld 接口,
随便写两个简单的方法,
在写一个实现类,这个实现类不需要implements IHelloWorld接口,
只需,把IHelloWorld的方法,重写一遍就行了.
接口代码如下:
package pack.java.demo;
/**
* 接口;
* @author ZhouHaiTao.
*
*/
public interface IHelloWorld {
public String hello(String name);
public int add(int i,int j);
}
实现类代码如下:
package pack.java.demo;
/***
* 该实现类可以不需要implements IHello接口;
* @author ZhouHaiTao
*
*/
public class Hello {
public String hello(String name){
return name+",Hello World";
}
public int add(int i,int j){
return i+j;
}
}
之后,编写完接口和实现类之后,我们在SRC目录下,建立META-INF 文件, META-INF文件夹中在建立,xfire文件夹,之后,在建立services.xml文件,
services.xml文件内容如下:
<!--Start SNIPPET:services--> <beans> <service xmlns="http://xfire.codehaus.org/config/1.0"> <!-- 服务名称 --> <name>HelloWorld_FristXFire</name> <!-- 实现类的命名空间 --> <namespace>http://pack.java.demo/Hello</namespace> <!-- 实现类所指的包和类 --> <serviceClass>pack.java.demo.Hello</serviceClass> <!-- 对应接口的实现 --> <implementationClass>pack.java.demo.Hello</implementationClass> <scope>request</scope> </service> </beans>
web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>WebServiceDemo</display-name> <servlet> <servlet-name>Xfile</servlet-name> <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Xfile</servlet-name> <url-pattern>/servlet/XFireServlet/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Xfile</servlet-name> <url-pattern>/service/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
然后我们启动部署项目,启动tomcat服务, 在浏览器中输入:
http://localhost:9999/XFire_Projects/services/
我们在浏览器中将会看到.以下内容代表部署成功.
Available Services:
- HelloWorld_FristXFire [wsdl]
- <!--Just filling space according to http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807--><!--Just filling space according to http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807-->
Generated by XFire ( http://xfire.codehaus.org )
这个HelloWorld_FristXFire就是我们在services.xml中配置的服务名称,
最后,我们可以新建client 项目了,.同样的把所有的.jar拷贝到客户端项目中WEB-INF/lib中.
建立项目名称:XFire_Projects_Client,
接下来在src创建pack.java.demo.client.
之后,在包中创建一个与服务端对应的一个IHelloWorld接口,注意要与服务器接口里面的方法一摸一样,.
然后,在随便写一个测试类,
代码如下:
package pack.java.demo.client;
import java.net.MalformedURLException;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
/***
* XFire 客户端测试;
* @author ZhouHaiTao.
*
*/
public class XFireClientDemo {
/**
* 测试主方法;
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String url="http://localhost:9999/XFire_Projects/services/HelloWorld_FristXFire";
Service serviceModel=new ObjectServiceFactory().create(IHelloWorld.class);
try {
IHelloWorld service=(IHelloWorld)new XFireProxyFactory().create(serviceModel, url);
int resultInt=service.add(5, 5);
System.out.println(resultInt+"\n");
String resultString=service.hello("彭小婷");
System.out.println(resultString);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
点击运行,
控制台将会显示:
10
彭小婷,Hello World