使用XFire开发WebService入门教程

时间:2022-02-02 18:08:02

首先,我们在eclipse中建立一个WebService工程作为服务端,并编写如下代码:

IHelloService.java  服务接口,有一个方法,参数和返回值均为复杂类型User

 

使用XFire开发WebService入门教程package test;
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public interface IHelloService {
使用XFire开发WebService入门教程   
public User getUser(User user);
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程

 

User.java

注意,这个javabean里必须要有一个默认没有参数的构造方法,否则在进行aegis绑定会有不能实例化user对象的异常

使用XFire开发WebService入门教程package test;
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
import java.io.Serializable;
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public class User{
使用XFire开发WebService入门教程  
private String username;
使用XFire开发WebService入门教程  
private String password;
使用XFire开发WebService入门教程使用XFire开发WebService入门教程  
public User(){
使用XFire开发WebService入门教程      
使用XFire开发WebService入门教程  }

使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public User(String username, String password) {
使用XFire开发WebService入门教程    
super();
使用XFire开发WebService入门教程    
this.username = username;
使用XFire开发WebService入门教程    
this.password = password;
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public String getPassword() {
使用XFire开发WebService入门教程    
return password;
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public void setPassword(String password) {
使用XFire开发WebService入门教程    
this.password = password;
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public String getUsername() {
使用XFire开发WebService入门教程    
return username;
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public void setUsername(String username) {
使用XFire开发WebService入门教程    
this.username = username;
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程

HelloServiceImpl.java

方法实现是传进来一个user对象,把这个对象的username,password变成我们设置的数值,然后返回这个对象

使用XFire开发WebService入门教程package test;
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public class HelloServiceImpl implements IHelloService {
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程使用XFire开发WebService入门教程    
public void print() {
使用XFire开发WebService入门教程        System.out.println(
"action");
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程    }

使用XFire开发WebService入门教程
使用XFire开发WebService入门教程使用XFire开发WebService入门教程    
public User getUser(User user) {
使用XFire开发WebService入门教程    
使用XFire开发WebService入门教程        user.setUsername(
"new name");
使用XFire开发WebService入门教程        user.setPassword(
"new password");
使用XFire开发WebService入门教程        
return user;
使用XFire开发WebService入门教程    }

使用XFire开发WebService入门教程
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程

IHelloService.aegis.xml 为复杂参数和返回类型绑定,和IHelloService在一个包下

 

使用XFire开发WebService入门教程<?xml version="1.0" encoding="UTF-8"?>
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
<mappings>
使用XFire开发WebService入门教程    
<mapping>
使用XFire开发WebService入门教程        
<method name="getUser">
使用XFire开发WebService入门教程            
<parameter index="0" componentType="test.User"/>
使用XFire开发WebService入门教程            
<return-type componentType="test.User"/>
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程        
</method>
使用XFire开发WebService入门教程  
使用XFire开发WebService入门教程      
使用XFire开发WebService入门教程    
</mapping>
使用XFire开发WebService入门教程
</mappings>
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程

services.xml  xFire发布文件

 

使用XFire开发WebService入门教程<?xml version="1.0" encoding="UTF-8"?>
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
<beans>
使用XFire开发WebService入门教程
<service xmlns="http://xfire.codehaus.org/config/1.0">
使用XFire开发WebService入门教程
<name>HelloService</name>
使用XFire开发WebService入门教程
<namespace>http://test/HelloService</namespace>
使用XFire开发WebService入门教程
<serviceClass>test.IHelloService</serviceClass>
使用XFire开发WebService入门教程
<implementationClass>test.HelloServiceImpl</implementationClass>
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
</service>
使用XFire开发WebService入门教程
</beans>

 

部署到tomcat中,在浏览器中运行http://localhost:8080/XFire/services/HelloService?wsdl

如果部署正确,讲出现XFire生成的wsdl文件

 

把IHelloService.java, IHelloService.aegis.xm,User.java打包成jar

下面,我们编写消费WS的客户端

 

新建一个java工程,把服务端的jar放到classpath中,当然,服务和客户端都要有XFire的类库

编写代码

 

使用XFire开发WebService入门教程package test;
使用XFire开发WebService入门教程
import java.net.MalformedURLException;
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
import org.codehaus.xfire.client.XFireProxyFactory;
使用XFire开发WebService入门教程
import org.codehaus.xfire.service.Service;
使用XFire开发WebService入门教程
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
import test.IHelloService;
使用XFire开发WebService入门教程
import test.User;
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程使用XFire开发WebService入门教程
public class Client {
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程使用XFire开发WebService入门教程    
/**
使用XFire开发WebService入门教程     * 
@param args
使用XFire开发WebService入门教程     
*/

使用XFire开发WebService入门教程使用XFire开发WebService入门教程    
public static void main(String[] args) {
使用XFire开发WebService入门教程        User user
=new User("2","2");
使用XFire开发WebService入门教程        String serviceURL
="http://localhost:8080/XFire/services/HelloService";
使用XFire开发WebService入门教程        Service serviceModel 
= new ObjectServiceFactory().create(IHelloService.class,null,"http://test/HelloService",null);
使用XFire开发WebService入门教程        XFireProxyFactory serviceFactory 
= new XFireProxyFactory();
使用XFire开发WebService入门教程        IHelloService service 
= null;    
使用XFire开发WebService入门教程使用XFire开发WebService入门教程         
try {
使用XFire开发WebService入门教程            service 
= (IHelloService) serviceFactory.create(serviceModel, serviceURL);
使用XFire开发WebService入门教程         
使用XFire开发WebService入门教程            user
=service.getUser(user);
使用XFire开发WebService入门教程            
使用XFire开发WebService入门教程            System.out.println(user.getUsername()
+" - "+user.getPassword());
使用XFire开发WebService入门教程使用XFire开发WebService入门教程         }
 catch (MalformedURLException e) {
使用XFire开发WebService入门教程
使用XFire开发WebService入门教程            e.printStackTrace();
使用XFire开发WebService入门教程        }

使用XFire开发WebService入门教程    }

使用XFire开发WebService入门教程
使用XFire开发WebService入门教程}

使用XFire开发WebService入门教程

 

在tomca安装目录下的bin中启动tomcat(注意不要使用eclipse环境中的启动插件,否则运行客户端时候会自动关掉服务)

 

运行结果:

new name - new password

真是我们想要的结果