`
雪馨25
  • 浏览: 130046 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

【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

 

正常完成

0
1
分享到:
评论

相关推荐

    CXF使用EndpointImpl发布WebService加入拦截器

    本篇文章将深入探讨如何使用CXF的`EndpointImpl`类来发布一个WebService,并加入拦截器。 首先,我们要理解`EndpointImpl`是CXF框架用于构建和配置Web服务端点的核心类。通过实例化这个类,我们可以自定义服务的...

    infa_webservice

    1. 调用Web服务:当需要从外部Web服务获取数据时,Informatica WebService组件作为一个客户端,通过SOAP(简单对象访问协议)或REST(Representational State Transfer)协议与Web服务交互。它可以接收Web服务返回的...

    Java EE常用框架.xmind

    五、我们还可以使用Idea下的webservice,能够使用图形画面的方式获取本地代理和生成WSDL文件。 Activiti 介绍 Activiti5是一个业务流程管理(BPM)框架 如果我们的业务是比较复杂的话,我们才会用到...

    软考高项大纲

    - **过程与过程组**:项目管理过程包括启动、规划、执行、监控和收尾五个过程组。 - **过程交互**:各个过程组之间存在紧密的交互和依赖关系。 - **对应关系**:项目管理过程组与项目生命周期阶段之间的对应关系...

    ASP.Net.技巧收集.pdf

    - 不能传递复杂对象。 - **实现方法**: - 构造URL地址并包含参数。 - 使用`Response.Redirect()`方法跳转到目标页面。 - 在目标页面使用`Request.QueryString`获取参数值。 #### 使用 Button.PostBackUrl 方式...

    MyEclipse开发手册之Java篇

    - 在Eclipse/MyEclipse环境中,从新建项目到编写、编译、运行程序的全过程都被详细记录下来。 #### 四、Eclipse的基础概念、配置与使用 **1. Eclipse的基本组件** - **界面布局**:包括菜单、工具栏、透视图...

    accpY2考证试题,必备的

    这意味着开发者可以根据实际需求灵活地在每个选项卡中加入不同的内容,比如表格、图表或其他复杂的用户界面元素。 - **TabContainer 和 TabPanel 控件**:TabContainer 是一个容器控件,它可以包含多个 TabPanel ...

    Webpy-coobook-pdf中文教程

    - **使用soaplib实现WebService**:介绍如何利用soaplib库在web.py中实现WebService。 #### 六、模板 - **Templetor: web.py模板系统**:介绍web.py内置的模板系统。 - **使用站点布局模板**:说明如何使用布局...

    MyEclipse 6 Java EE 开发中文手册

    Spring是一个开源框架,提供了一种轻量级的方式来构建复杂的应用。 **14.2 构建Spring应用** - **创建Spring项目**:在MyEclipse中创建新的Spring项目。 - **配置Spring环境**:设置Spring所需的库文件和配置文件...

Global site tag (gtag.js) - Google Analytics