您的位置:首页 > 其它

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

2016-08-23 11:14 471 查看
学习地址:http://blog.csdn.net/alex197963/article/details/4366867

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

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


学习项目记录

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

2、文件夹目录如下

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



3、文件内容如下

IHelloS接口

[java] view
plain copy

 print?

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 实现

[java] view
plain copy

 print?

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实体类

[java] view
plain copy

 print?

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

[html] view
plain copy

 print?

<?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是建立客户端时代码生成的包名,倒序

[html] view
plain copy

 print?

<!-- 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客户端建立客户端

客户端测试代码

[java] view
plain copy

 print?

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

正常完成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: