微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用XFire开发WebService入门教程

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

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

 

package  test;


public   interface  IHelloService  {

   
public User getUser(User user);

}

 

User.java

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

package  test;


import  java.io.Serializable;


public   class  User {

  
private String username;

  
private String password;

  
public User(){

      

  }

public User(String username, String password) {

    
super();

    
this.username = username;

    
this.password = password;

}

public String getpassword() {

    
return password;

}

public void setPassword(String password) {

    
this.password = password;

}

public String getUsername() {

    
return username;

}

public void setUsername(String username) {

    
this.username = username;

}

}

HelloServiceImpl.java

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

package  test;


public   class  HelloServiceImpl  implements  IHelloService  @H_620_404@... {


    
public void print() {

        System.out.println(
"action");


    }


    
public User getUser(User user) {

    

        user.setUsername(
"new name");

        user.setPassword(
"new password");

        
return user;

    }


}

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

 

<? xml version="1.0" encoding="UTF-8" ?>


< mappings >

    
< mapping >

        
< method  name ="getUser" >

            
< parameter  index ="0"  componentType ="test.User" />

            
< return-type  componentType ="test.User" />


        
</ method >

  

      

    
</ mapping >

</ mappings >



services.xml  xFire发布文件

 

<? xml version = " 1.0 "  encoding = " UTF-8 " ?>



< beans >

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

< name > HelloService </ name >

< namespace > http: // test/HelloService</namespace>

< serviceClass > test.IHelloService </ serviceClass >

< implementationClass > test.HelloServiceImpl </ implementationClass >


</ service >

</ beans >

 

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

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

 

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

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

 

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

编写代码

 

package  test;

import  java.net.MalformedURLException;


import  org.codehaus.xfire.client.XFireProxyFactory;

import  org.codehaus.xfire.service.Service;

import  org.codehaus.xfire.service.binding.ObjectServiceFactory;


import  test.IHelloService;

import  test.User;






public   class  Client  {


    
/**

     * 
@param args

     
*/

    
public static void main(String[] args) {

        User user
=new User("2","2");

        String serviceURL
="http://localhost:8080/XFire/services/HelloService";

        Service serviceModel 
= new ObjectServiceFactory().create(IHelloService.class,null,"http://test/HelloService",null);

        XFireProxyFactory serviceFactory 
= new XFireProxyFactory();

        IHelloService service 
= null;    

         
try {

            service 
= (IHelloService) serviceFactory.create(serviceModel, serviceURL);

         

            user
=service.getUser(user);

            

            System.out.println(user.getUsername()
+" - "+user.getpassword());

         }
 catch (MalformedURLException e) {


            e.printstacktrace();

        }

    }


}

 

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

 

运行结果:

new name - new password

真是我们想要的结果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐