【WebService學習過程記錄(五)】複雜對象的加入

學習地址: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接口

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

 

正常完成

發佈了90 篇原創文章 · 獲贊 107 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章