XFire实现自定义类型参数传递和调用返回自定义类型方法

这段时间一直在捣鼓xfire实现web service的工作,发现了很多问题,其中最受大家关注的要属复杂类型的参数传递问题和调用返回复杂类型web service的问题。这些问题在网上很少有个详细的解决方案,于是经过自己的研究,终于得到解决问题的方法,收获颇多。为了让所有的xfire初学者少走弯路,我将给出解决方案如下。

第一步:使用MyEclipse创建一个web service工程,编写服务端代码,即发布web service.

//定义复杂类型

package nudt;

public class Member {
private String name;
private String sex;
private int age;
private String telephone;

public Member() {

}

public void setName(String name) {
   this.name = name;
}

public void setSex(String sex) {
   this.sex = sex;
}

public void setAge(int age) {
   this.age = age;
}

public void setTelephone(String telephone) {
   this.telephone = telephone;
}

public String getName() {
   return this.name;
}

public String getSex() {
   return this.sex;
}

public int getAge() {
   return this.age;
}

public String getTelephone() {
   return this.telephone;
}

}
//

//定义接口类

package nudt.server;

import nudt.Member;

public interface MemberInfo {

public Member[] getMembers();
public String memberToString(Member member);

}

///

//定义接口实现类

package nudt.server;

import nudt.Member;

public class MemberInfoImpl implements MemberInfo{

public Member[] getMembers() {
   Member[] members = new Member[3];
   for(int i=0;i<3;i++){
    members[i] = new Member();
    members[i].setName("name" + i);
    members[i].setSex("sex" + i);
    members[i].setAge(i);
    members[i].setTelephone("telephone" + i);
   }
   return members;
}

public String memberToString(Member member) {
   return member.getName()+"," + member.getSex() + "," + member.getAge() + "," + member.getTelephone();
  
}

}

//services.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="
http://xfire.codehaus.org/config/1.0">
<service>
   <name>MemberInfo</name>
   <namespace>memberInfo</namespace>
   <serviceClass>nudt.server.MemberInfo</serviceClass>
   <implementationClass>
    nudt.server.MemberInfoImpl
   </implementationClass>
</service>
</beans>

第二步:使用Myeclipse Plugin生成Client Stub。

第三步:编写客户端代码。

package test;

import java.util.List;

import nudt.MemberInfoClient;
import nudt.MemberInfoPortType;

public class TestCase {

public static void main(String[] args) {

   MemberInfoClient client = new MemberInfoClient();
   MemberInfoPortType service = client.getMemberInfoHttpPort();
  
   nudt.ObjectFactory factory = new nudt.ObjectFactory();
   nudt.Member member = factory.createMember();
   member.setName(factory.createMemberName("honggaoqi"));
   member.setName(factory.createMemberSex("boy"));
   member.setAge(23);
   member.setTelephone(factory.createMemberTelephone("xxxxxxxxxx"));
   System.out.println(service.memberToString(member));
   List<nudt.Member> member2 = service.getMembers().getMember();
   for(int i=0;i<member2.size();i++){
    System.out.println(service.memberToString(member2.get(i)));
   }

}

}

输出结果为:

null,boy,23,xxxxxxxxxx
name0,sex0,0,telephone0
name1,sex1,1,telephone1
name2,sex2,2,telephone2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值