欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【WebService学习过程记录(五)】复杂对象的加入 博客分类: javaWeb知识总结 webservicejavabeaneclipsexfire

程序员文章站 2024-03-22 21:35:04
...

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

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

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

学习项目记录

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

2、文件夹目录如下

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

【WebService学习过程记录(五)】复杂对象的加入 
            
    
    博客分类: javaWeb知识总结 webservicejavabeaneclipsexfire

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

 

正常完成