当前位置 : 主页 > 网页制作 > Nodejs >

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

来源:互联网 收集:自由互联 发布时间:2021-06-24
学习地址:http://blog.csdn.net/alex197963/article/details/4366867 学习目标:使用javabean作为参数或返回值的使用方式 学习重点:在之前学习的基础上,学会使用 .aegis.xml 文件 学习项目记录 1、按

学习地址: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 ?
  1. package com.cn.rwq.test.jiekou;  
  2.   
  3. import com.cn.rwq.javabean.Person;  
  4.   
  5. public interface IHelloS {  
  6.     /** 
  7.      * 最简单的方法 
  8.      */  
  9.     String sayHello(String name);  
  10.     /** 
  11.      * 根据传入的参数构建一个Person 
  12.      */  
  13.     Person creatPerson(String name,int age,boolean sex);  
  14.     /** 
  15.      * 将传入的Person转化成一个新的Person  
  16.      */  
  17.     Person changePerson(Person person);  
  18. }  

 HelloService 实现

[java]  view plain  copy  print ?
  1. package com.cn.rwq.test.service;  
  2.   
  3. import com.cn.rwq.javabean.Person;  
  4. import com.cn.rwq.test.jiekou.IHelloS;  
  5.   
  6. public class HelloService implements IHelloS{    
  7.     public String sayHello(String name){    
  8.         return name+",你好!";    
  9.     }    
  10.     public Person creatPerson(String name,int age,boolean sex){  
  11.         Person user = new Person();  
  12.         user.setName(name);  
  13.         user.setAge(age);  
  14.         user.setSex(sex);  
  15.         return user;  
  16.     }  
  17.     public Person changePerson(Person person){  
  18.         Person user = new Person();  
  19.         user.setName(person.getName()+",hello");  
  20.         user.setAge(person.getAge()+2);  
  21.         user.setSex(!person.isSex());  
  22.         return user;  
  23.     }  
  24. }    
Person实体类

[java]  view plain  copy  print ?
  1. package com.cn.rwq.javabean;  
  2.   
  3. public class Person {  
  4.     private String name;  
  5.     private int age;  
  6.     private boolean sex;  
  7.     public String getName() {  
  8.         return name;  
  9.     }  
  10.     public void setName(String name) {  
  11.         this.name = name;  
  12.     }  
  13.     public int getAge() {  
  14.         return age;  
  15.     }  
  16.     public void setAge(int age) {  
  17.         this.age = age;  
  18.     }  
  19.     public boolean isSex() {  
  20.         return sex;  
  21.     }  
  22.     public void setSex(boolean sex) {  
  23.         this.sex = sex;  
  24.     }  
  25. }  
IHelloS.aegis.xml
[html]  view plain  copy  print ?
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2.     <mappings>    
  3.         <mapping>    
  4.             <method name="creatPerson">    
  5.                  <parameter index="1" class="int" />    
  6.                 <parameter index="2" class="boolean" />    
  7.                 <return-type componentType="com.cn.rwq.javabean.Person" />    
  8.             </method>    
  9.             <method name="changePerson">    
  10.                 <parameter index="0" componentType="com.cn.rwq.javabean.Person" />    
  11.                 <return-type componentType="com.cn.rwq.javabean.Person" />    
  12.             </method>    
  13.         </mapping>    
  14.    </mappings>    
services.xml

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

[html]  view plain  copy  print ?
  1. <!-- START SNIPPET: services -->    
  2. <beans xmlns="http://xfire.codehaus.org/config/1.0">    
  3.   <service>    
  4.     <name>HelloService</name>    
  5.       <namespace>http://jiekou.test.rwq.com.cn/IHelloS</namespace>    
  6.       <serviceClass>com.cn.rwq.test.jiekou.IHelloS</serviceClass>    
  7.        <implementationClass>com.cn.rwq.test.service.HelloService</implementationClass>  
  8.   </service>    
  9. </beans>    
  10. <!-- END SNIPPET: services -->    
web.xml与之前相同,省略

4、发布,并测试正确

5、建立客户端,测试

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

客户端测试代码

[java]  view plain  copy  print ?
  1. package cn.com.rwq.hellotest;  
  2.   
  3. import cn.com.rwq.test.jiekou.ihellos.HelloServiceClient;  
  4. import cn.com.rwq.test.jiekou.ihellos.HelloServicePortType;  
  5.   
  6. import com.cn.rwq.javabean.Person;  
  7.   
  8. public class HelloTest {    
  9.        /**   
  10.          * 这个方法调用web服务并返回服务执行的结果 
  11.          * @param yourName 
  12.          * @return 
  13.          */    
  14.         
  15.         public static void main(String[] args) {    
  16.             HelloServiceClient service=new HelloServiceClient();    
  17.             HelloServicePortType port=service.getHelloServiceHttpPort();    
  18.             String MyName="zhangsan";    
  19.             String name = port.sayHello(MyName);  
  20.             System.out.println(name);  
  21.                
  22.             Person person = port.creatPerson("张三"10false);  
  23.             System.out.println("name="+person.getName().getValue()+" ; age="+person.getAge()+" ; sex="+person.isSex());  
  24.             Person newPerson =port.changePerson(person);  
  25.             System.out.println("name="+newPerson.getName().getValue()+" ; age="+newPerson.getAge()+" ; sex="+newPerson.isSex());  
  26.         }    
  27. }   
注意: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


正常完成

网友评论