`
zqding
  • 浏览: 96072 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

利用AXIS开发Webservice传递javabean对象

阅读更多

利用AXIS开发Webservice传递javabean对象:

 

Axis中提供了远程传输对象的方法,通过那些方法我们同样可以随心的传递自己的对象。

 

我们先从传递一个JavaBean开始,首先编写一个JavaBean

 

Java代码

 

package com.starit.bean;   
  
public class OrderBean {   
    private String name;   
    private int age;   
    private String[] items;   
    private int[] price;   
    private boolean checked;   
       
    public OrderBean() {   
    }   
    public int getAge() {   
        return age;   
    }   
    public void setAge(int age) {   
        this.age = age;   
    }   
    public boolean isChecked() {   
        return checked;   
    }   
    public void setChecked(boolean checked) {   
        this.checked = checked;   
    }   
    public String[] getItems() {   
        return items;   
    }   
    public void setItems(String[] items) {   
        this.items = items;   
    }   
    public String getName() {   
        return name;   
    }   
    public void setName(String name) {   
        this.name = name;   
    }   
    public int[] getPrice() {   
        return price;   
    }   
    public void setPrice(int[] price) {   
        this.price = price;   
    }   
}  

 这个JavaBean的前4个属性都很清楚,要解释一下最后一个。因为这个JavaBean被传递到Service端处理之后要接着被传回,用来示例webservce传进和传出。这个变量用来区别传进和传出的差别。解释完我们来看下service

 

Java代码 

 

package com.starit.webservice;   
  
import com.starit.bean.OrderBean;   
  
public class AnalyzeOrder {   
       
    public AnalyzeOrder(){     
    }   
       
    public OrderBean process(OrderBean order){   
        order.setChecked(true);   
        System.out.println("name: " + order.getName() + " age: " + order.getAge());   
        for(int i=0; i<order.getItems().length; i++)   
            System.out.println("Item " + (i+1) + order.getItems()[i] +    
                    " and price is " + order.getPrice()[i]);   
        return order;   
    }   
}  

 Service Object的代码很简单,就不解释了。惯例,我们来编写发布文件。

 Xml代码

 

<deployment xmlns="http://xml.apache.org/axis/wsdd/"    
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">  
       
    <service name="CheckOrder" provider="java:RPC">  
        <parameter name="className" value="com.chnic.webservice.AnalyzeOrder"/>  
        <parameter name="allowedMethods" value="process"/>  
        <beanMapping qname="myNS:Order" xmlns:myNS="urn:AnalyzeOrder"    
            languageSpecificType="java:com.chnic.bean.OrderBean"/>  
    </service>  
</deployment>  

 发布这个webservice,编写测试代码

 

Java代码 

String targetEendPoint = "http://localhost:8080/axis/services/CheckOrder";     

           

OrderBean order = new OrderBean();   

order.setName("Beckham");   

order.setAge(32);   

String [] items = new String[] { "Ipod", "ThinkPad" };   

int [] price = new int [] { 999, 5000 };   

order.setItems(items);   

order.setPrice(price);   

order.setChecked(false);   

           

System.out.println(order.isChecked());   

           

Service  service = new Service();   

Call call = (Call) service.createCall();   

QName qn = new QName("urn:AnalyzeOrder", "Order" );   

call.registerTypeMapping(OrderBean.class, qn,   

   new org.apache.axis.encoding.ser.BeanSerializerFactory(OrderBean.class, qn),           

   new org.apache.axis.encoding.ser.BeanDeserializerFactory(OrderBean.class, qn));   

           

call.setTargetEndpointAddress( new java.net.URL(targetEendPoint) );   

call.setOperationName( new QName("CheckOrder", "process") );   

call.addParameter( "arg1", qn, ParameterMode.IN );   

call.setReturnClass(OrderBean.class);   

           

OrderBean result = (OrderBean) call.invoke( new Object[] {order} );   

           

System.out.println("Success...");   

System.out.println(result.isChecked())  

 

从控制台输出一些信息以便测试,里面大多代码都应该见过。new QName和之后的registerTypeMapping方法也是在实现我上面那段黑体字的内容。之后注册完参数和返回值类型运行。

 

会发现在tomcat控制台和本地控制台都会输出测试结果,值得注意的是checked这个属性在传入之前是false属性,传入之后我们改变了他的属性变为true。返回之后在本地控制台打印出来也为true

 

 

 

事实上Axis除了可以传输JavaBean之外还可以传输一些自定义的类型。比如ListMap和时间日期类型。Axis也为他们提供了专门的SerializerFactoryDeserializerFactory。这些工厂类会产生串行化工具去序列化相应的对象。更多的Factory Object可以在org.apache.axis.encoding.ser下面找到。

 

 

 

对于自定义序列化,Axis也提供了相对性的配置节点。具体配置如下:

 

Xml代码 

<typeMapping qname="ns:local" xmlns:ns="someNamespace"  

             languageSpecificType="java:my.java.thingy"  

             serializer="my.java.Serializer"  

             deserializer="my.java.DeserializerFactory"  

            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>  

typeMapping的前三个属性和上面讲的beanMapping都一样。不一样的是后三个。serializer指定的是串行化类,dserializer指定的是反串行化类。最后一个指定的编码方式。其实对于typeMapping来说beanMapping只不过是他的一个简化版而已。因为beanMapping的串行化和反串行化工厂类都是固定的,而编码方式也是固定的。

 

 

 

因为typemappingbeanMapping很相似,在这里就不再写demo了。

分享到:
评论

相关推荐

    WebService之AXIS传递javabean.7z

    使用AXIS进行javabean传递的知识点主要包括以下几个方面: 1. **创建javabean**:首先,你需要定义一个javabean类,包含你需要在Web服务中传递的属性和getter、setter方法。例如,你可以有一个名为`Person`的bean,...

    Axis2 WebService 开发指南

    ### Axis2 WebService 开发指南 #### 一、准备工作 **1.1 下载与配置** 为了能够顺利地进行Axis2 ...对于希望利用Axis2进行高效、灵活的WebService开发的开发者来说,本指南提供了一个全面且实用的参考指南。

    axis2 webservice开发指南.pdf

    ### Axis2 WebService 开发指南知识点详述 #### 一、Axis2 WebService 技术概览 **Axis2** 是Apache的一个开源项目,旨在提供一个高性能、灵活且可扩展的Web服务框架,用于实现基于SOAP协议的Web服务。与前代产品*...

    axis2_WebService_开发指南

    为了更好地管理和配置WebService,Axis2允许开发者利用Spring框架的JavaBean来发布WebService,这样做可以使得服务的配置更加灵活和模块化。 最后,Axis2还支持使用SoapMonitar这样的工具来监视WebService的请求和...

    Axis2 WebService 开发指南 技术文档 入门文档

    《Axis2 WebService 开发指南》 Axis2是一款强大的Web服务框架,它是Apache Axis1的升级版,提供了更高效、更灵活的服务实现和部署机制。本指南将详细讲解如何使用Axis2进行Web服务的开发,从基础准备到高级特性,...

    axis1.4开发webservice

    标题中的“axis1.4开发webservice”指的是使用Apache Axis1.4框架创建Web服务的过程。Apache Axis是Java中广泛使用的开源工具,用于实现SOAP(简单对象访问协议)Web服务。Axis1.4是该工具的一个版本,它支持Java-to...

    axis2 WebService 开发指南(中文版).docx

    【Axis2 WebService 开发指南】是针对使用Apache Axis2框架创建和使用Web服务的一份中文教程。Apache Axis2是Apache SOAP(简单对象访问协议)实现的第二代产品,提供了高性能且灵活的服务基础架构。本指南主要涵盖...

    axis2;WebService

    【Axis2 WebService 开发指南】是关于使用Apache Axis2框架创建和操作Web服务的教程。Axis2是Axis1的升级版,提供了更多的功能和改进的性能。在开始之前,你需要下载并安装必要的开发工具,包括Axis2的jar包和...

    WebService Axis初学者

    WebService Axis是基于Java的Web服务框架,用于创建和部署SOAP(简单对象访问协议)服务。这个初学者指南将深入探讨Axis的基本概念、安装过程、创建第一个WebService以及如何进行调用。 1. WebService简介: ...

    WebService大讲堂之Axis2.pdf

    在Axis2中,利用公共接口的Java对象(POJO)即可轻松实现WebService的开发与发布,无需额外的配置文件。这极大地简化了开发流程,提高了效率。以下是一个示例代码,展示如何创建一个简单的POJO类,并将其发布为...

    axis2建webservice文档

    2. **复合类型数据的传递**:在“WebService大讲堂之Axis2(2):复合类型数据的传递.doc”中,可能详细解释了如何处理复杂的数据结构,如自定义对象或数组,以及如何在Web服务请求和响应中传递这些数据。...

    axis2_WebService_开发指南.docx

    《Axis2 WebService开发指南》 在Web服务开发领域,Apache Axis2是一个强大的工具,它提供了构建和部署Web服务的高效平台。本指南主要针对Axis2.x版本,涵盖了从基础到高级的各类Web服务开发技术,旨在帮助开发者...

    axis2_webservice

    总结:Axis2.x WebService开发涵盖了从基础准备、实例创建到高级功能的实现,如会话管理、异步调用和模块扩展。通过熟悉这些知识,开发者可以更有效地构建和管理Web服务,提升应用的灵活性和可维护性。

    Webservice之Axis高级编程

    在本文中,我们将探索Axis的高级编程技巧,涵盖如何发布Web服务、使用Handler增强功能、建立安全服务、处理JavaBean传递及监控SOAP消息等方面。 1. **AXIS第一课:最简单的发布AXIS的Web Service** 在这一课中,...

    WebService大讲堂之Axis2,多个实例

    WebService是一种网络服务技术,允许在不同操作系统和编程语言之间实现应用程序的通信...通过本系列教程,读者可以掌握从WebService开发、发布、调用到管理的全方位知识,从而有效地利用Axis2进行Web服务的开发和应用。

Global site tag (gtag.js) - Google Analytics