【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,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,你好! 正常完成 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |