【WebService学习过程记录(五)】复杂对象的加入

学习地址:http://blog.csdn.net/alex197963/article/details/4366867

学习目标:使用javabean作为参数或返回值的使用方式

学习重点:在之前学习的基础上,学会使用.aegis.xml文件

学习项目记录

1、按照 XFire开发Web Service---HelloWord   建立可以发布的web service项目,这里不做多余表述

2、文件夹目录如下

注意:需要一个xml文件来指定所需要的类型。这个文件的路径应该和接口的class文件在同一个包当中,并且它的名字应该是接口.aegis.xml

【WebService学习过程记录(五)】复杂对象的加入_第1张图片

3、文件内容如下

IHelloS接口

package com.cn.rwq.test.jiekou;

import com.cn.rwq.javabean.Person;

public interface IHelloS {
	/**
	 * 最简单的方法
	 */
    String sayHello(String name);
    /**
     * 根据传入的参数构建一个Person
     */
    Person creatPerson(String name,int age,boolean sex);
    /**
     * 将传入的Person转化成一个新的Person 
     */
    Person changePerson(Person person);
}

 HelloService 实现

package com.cn.rwq.test.service;

import com.cn.rwq.javabean.Person;
import com.cn.rwq.test.jiekou.IHelloS;

public class HelloService implements IHelloS{  
    public String sayHello(String name){  
        return name+",你好!";  
    }  
    public Person creatPerson(String name,int age,boolean sex){
        Person user = new Person();
        user.setName(name);
        user.setAge(age);
        user.setSex(sex);
        return user;
    }
    public Person changePerson(Person person){
        Person user = new Person();
        user.setName(person.getName()+",hello");
        user.setAge(person.getAge()+2);
        user.setSex(!person.isSex());
        return user;
    }
}  

Person实体类

package com.cn.rwq.javabean;

public class Person {
	private String name;
	private int age;
	private boolean sex;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public boolean isSex() {
		return sex;
	}
	public void setSex(boolean sex) {
		this.sex = sex;
	}
}

IHelloS.aegis.xml

<?xml version="1.0" encoding="UTF-8"?>  
    <mappings>  
        <mapping>  
            <method name="creatPerson">  
                 <parameter index="1" class="int" />  
                <parameter index="2" class="boolean" />  
                <return-type componentType="com.cn.rwq.javabean.Person" />  
            </method>  
            <method name="changePerson">  
                <parameter index="0" componentType="com.cn.rwq.javabean.Person" />  
                <return-type componentType="com.cn.rwq.javabean.Person" />  
            </method>  
        </mapping>  
   </mappings>  

services.xml

注意:namespace是建立客户端时代码生成的包名,倒序

<!-- START SNIPPET: services -->  
<beans xmlns="http://xfire.codehaus.org/config/1.0">  
  <service>  
    <name>HelloService</name>  
      <namespace>http://jiekou.test.rwq.com.cn/IHelloS</namespace>  
      <serviceClass>com.cn.rwq.test.jiekou.IHelloS</serviceClass>  
       <implementationClass>com.cn.rwq.test.service.HelloService</implementationClass>
  </service>  
</beans>  
<!-- END SNIPPET: services -->  

web.xml与之前相同,省略

4、发布,并测试正确

5、建立客户端,测试

按照xfire开发webservice客户端建立客户端

客户端测试代码

package cn.com.rwq.hellotest;

import cn.com.rwq.test.jiekou.ihellos.HelloServiceClient;
import cn.com.rwq.test.jiekou.ihellos.HelloServicePortType;

import com.cn.rwq.javabean.Person;

public class HelloTest {  
       /**  
         * 这个方法调用web服务并返回服务执行的结果
         * @param yourName
         * @return
         */  
      
        public static void main(String[] args) {  
            HelloServiceClient service=new HelloServiceClient();  
            HelloServicePortType port=service.getHelloServiceHttpPort();  
            String MyName="zhangsan";  
            String name = port.sayHello(MyName);
            System.out.println(name);
             
            Person person = port.creatPerson("张三", 10, false);
            System.out.println("name="+person.getName().getValue()+" ; age="+person.getAge()+" ; sex="+person.isSex());
            Person newPerson =port.changePerson(person);
            System.out.println("name="+newPerson.getName().getValue()+" ; age="+newPerson.getAge()+" ; sex="+newPerson.isSex());
        }  
} 

注意:person.getName()无法直接得到name值需要使用person.getName().getValue()

问题解决学习地址:http://www.2cto.com/kf/201211/166568.html

6、正确运行结果

zhangsan,你好!
name=张三 ; age=10 ; sex=false
name=张三,hello ; age=12 ; sex=true

 

正常完成

你可能感兴趣的:(eclipse,webservice,javabean,xfire)