学习地址: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 实现
copy
?package?com.cn.rwq.test.service;??
import?com.cn.rwq.test.jiekou.IHelloS;??
??
class?HelloService?implements?IHelloS{????
????public?String?sayHello(String?name){????
????????return?name+",你好!";????
????}????
public?Person?creatPerson(String?name,255); font-weight:bold; background-color:inherit">boolean?sex){??
????????Person?user?=?new?Person();??
????????user.setName(name);??
????????user.setAge(age);??
????????user.setSex(sex);??
return?user;??
????}??
public?Person?changePerson(Person?person){??
new?Person();??
????????user.setName(person.getName()+);??
????????user.setAge(person.getAge()+2);??
????????user.setSex(!person.isSex());??
return?user;??
????}??
}????
Person实体类
copy
?package?com.cn.rwq.javabean;??
class?Person?{??
private?String?name;??
private?int?age;??
boolean?sex;??
public?String?getName()?{??
return?name;??
void?setName(String?name)?{??
this.name?=?name;??
int?getAge()?{??
return?age;??
void?setAge(int?age)?{??
this.age?=?age;??
boolean?isSex()?{??
return?sex;??
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"?</methodmethod?name="changePerson"parameter?index="0"?componentType="com.cn.rwq.javabean.Person"????>????
services.xml
注意:namespace是建立客户端时代码生成的包名,倒序
copy
?????
beans?xmlns="http://xfire.codehaus.org/config/1.0"??servicename>HelloService??????namespace>http://jiekou.test.rwq.com.cn/IHelloSserviceClass>com.cn.rwq.test.jiekou.IHelloS???????implementationClass>com.cn.rwq.test.service.HelloService>??
beans<!--?END?SNIPPET:?services?-->????
web.xml与之前相同,省略
4、发布,并测试正确
5、建立客户端,测试
按照xfire开发webservice客户端建立客户端
客户端测试代码
copy
?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;??
class?HelloTest?{????
????????
?????????*?这个方法调用web服务并返回服务执行的结果?
?????????*?@param?yourName?
?????????*?@return?
?????????*/????
????????
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);??
"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
正常完成
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|