1、服务端

1.1、新建web工程,复制需要的jar包到lib文件夹

XFire创建WebService服务端和客户端

1.2、web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <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/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  
  3.   <display-name>XFireTest</display-name>  
  4.   <servlet>  
  5.     <servlet-name>XFireServlet</servlet-name>  
  6.     <servlet-class>    
  7.         org.codehaus.xfire.transport.http.XFireConfigurableServlet    
  8.     </servlet-class>  
  9.   </servlet>  
  10.   <servlet-mapping>  
  11.     <servlet
  12. -name>XFireServlet</servlet-name>  
  13.     <url-pattern>/services/*</url-pattern>  
  14.   </servlet-mapping>  
  15. </web-app> 
1.3、程序结构

XFire创建WebService服务端和客户端

1.3.1、写service接口

  1. package service;  
  2.   
  3. import entity.User;  
  4.   
  5. public interface IHelloWorld {  
  6.  public String getHello();  
  7.  public User getUser(User user);  
  8. }  
1.3.2、写实现类

  1. package service;  
  2.   
  3. import entity.User;  
  4.   
  5. public class HelloWorld implements IHelloWorld {  
  6.   
  7.  public String getHello() {  
  8.   return "Hello";  
  9.  }  
  10.   
  11.  public User getUser(User user) {  
  12.   User helloUser = new User();  
  13.   helloUser.setName("hello," + user.getName());  
  14.   return helloUser;  
  15.  }  
  16. }  
1.3.3、接口中用到了User对象的代码如下

  1. package entity;  
  2.   
  3. public class User {  
  4.  private String name;  
  5.   
  6.  public String getName() {  
  7.   return name;  
  8.  }  
  9.   
  10.  public void setName(String name) {  
  11.   this.name = name;  
  12.  }  
  13.    
  14. }  

1.3.4、写services.xml

services.xml的路径:src/META-INF/xfire/

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans>  
  3.  <service xmlns="http://xfire.codehaus.org/config/1.0">  
  4.   <!-- 服务名称,客户端调用时需要这个 -->  
  5.   <name>HelloWorld</name>  
  6.   <!-- 一般是网址,意义不大 -->  
  7.   <namespace>http://www.hello.com</namespace>  
  8.   <!-- 接口类 -->  
  9.   <serviceClass>service.IHelloWorld</serviceClass>  
  10.   <!-- 实现类 -->  
  11.   <implementationClass>service.HelloWorld</implementationClass>  
  12.  </service>  
  13. </beans>  

服务端程序完成。

 

1.4、测试服务端

将项目部署到tomcat中,并启动tomcat

XFire创建WebService服务端和客户端

在浏览器中输入:

http://localhost:8080/XfireTest/services/HelloWorld?wsdl

看到如下即服务端部署成功

XFire创建WebService服务端和客户端

2、写客户端

2.1、客户端和服务端在同一项目中;或者客户端有服务端的接口和实体类,例如:IHelloWorld.java、User.java

路径:/XFireTest/src/client/ClientTest.java

  1. package client;  
  2.   
  3. import java.net.MalformedURLException;  
  4.   
  5. import org.codehaus.xfire.XFireFactory;  
  6. import org.codehaus.xfire.client.XFireProxyFactory;  
  7. import org.codehaus.xfire.service.Service;  
  8. import org.codehaus.xfire.service.binding.ObjectServiceFactory;  
  9.   
  10. import service.IHelloWorld;  
  11.   
  12.   
  13. import entity.User;  
  14.   
  15. public class ClientTest {  
  16.  public static void main(String[] args) throws MalformedURLException {  
  17.   Service service = new ObjectServiceFactory().create(IHelloWorld.class);  
  18.   XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());  
  19.   String url = "http://localhost:8080/XFireTest/services/HelloWorld";  
  20.   IHelloWorld helloWorld = (IHelloWorld)factory.create(service, url);  
  21.     
  22.   //String  
  23.   String str = helloWorld.getHello();  
  24.   System.out.println(str);  
  25.     
  26.   //User  
  27.   User user = new User();  
  28.   user.setName("张三");  
  29.   String userName = helloWorld.getUser(user).getName();  
  30.   System.out.println(userName);  
  31.  }  
  32.   
  33. }  

运行结果:

Hello
hello,张三

附:源码,http://download.csdn.net/download/binyulong/10149416

相关文章: