转 axis 自定义对象序列化阿甘正传.docx

上传人:b****1 文档编号:642846 上传时间:2022-10-11 格式:DOCX 页数:5 大小:16.36KB
下载 相关 举报
转 axis 自定义对象序列化阿甘正传.docx_第1页
第1页 / 共5页
转 axis 自定义对象序列化阿甘正传.docx_第2页
第2页 / 共5页
转 axis 自定义对象序列化阿甘正传.docx_第3页
第3页 / 共5页
转 axis 自定义对象序列化阿甘正传.docx_第4页
第4页 / 共5页
转 axis 自定义对象序列化阿甘正传.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

转 axis 自定义对象序列化阿甘正传.docx

《转 axis 自定义对象序列化阿甘正传.docx》由会员分享,可在线阅读,更多相关《转 axis 自定义对象序列化阿甘正传.docx(5页珍藏版)》请在冰豆网上搜索。

转 axis 自定义对象序列化阿甘正传.docx

转axis自定义对象序列化阿甘正传

转axis自定义对象序列化--阿甘正传

基于Axis的自定义对象序列化

1.在Axis服务端,注册自定义对象的序列化/反序列化器

主要是修改axis安装目录下WEB-INF/server-config.wsdd文件。

<servicename="SimpleObjectService"provider="java:

RPC">

<parametername="allowedMethods"value="*"/>

<parametername="className"value="com.whcyit.axis.SimpleObjectService"/>

<beanMappinglanguageSpecificType="java:

com.whcyit.axis.SimpleObject"

qname="ns:

SimpleObject"xmlns:

ns="urn:

BeanService"/>

</service>

注意service/beanMapping的定义。

languageSpecificType中定义使用那个类,qname定义类的名称。

2.在Axis客户端,注册自定义对象的序列化/反序列化器。

核心代码如下:

//创建调用对象

Serviceservice=newService();

Callcall=null;

call=(Call)service.createCall();

//注册SimpleObject的序列化类型

QNameqn=newQName("urn:

BeanService","SimpleObject");

call.registerTypeMapping(SimpleObject.class,qn,

newBeanSerializerFactory(SimpleObject.class,qn),

newBeanDeserializerFactory(SimpleObject.class,qn));全部代码示例如下:

//SimpleObject.java

//WebService对象传递的对象,必需继承Serializable

packagecom.whcyit.axis;

importjava.io.Serializable;

publicclassSimpleObjectimplementsSerializable{

privatestaticfinallongserialVersionUID=-6414428095965735488L;

privateinti=0;

privatefloatf=0.0f;

privateStringstr="";

publicSimpleObject(){

}

publicfloatgetFloat(){

returnf;

}

publicvoidsetFloat(floatf){

this.f=f;

}publicintgetInt(){

returni;

}

publicvoidsetInt(inti){

this.i=i;

}

publicStringgetString(){

returnstr;

}publicvoidsetString(Stringstr){

this.str=str;

}

}//SimpleObjectService.java

//服务程序

packagecom.whcyit.axis;

publicclassSimpleObjectService{

publicStringsayHello(Stringname){

return"Hello"+name+"!

";

}

publicStringgetString(SimpleObjectobj){

System.out.println("SimpleObjectServicegetStringinvoked!

");

return"returnbyserviced:

"+obj.getString();

}publicSimpleObjectcreateSimpleObject(inti,floatf,Stringstr){

System.out.println("SimpleObjectServicecreateSimpleObjectinvoked!

");

SimpleObjectso=newSimpleObject();

so.setInt(i);

so.setFloat(f);

so.setString(str);

returnso;

}

}

//SimpleObjectClient.java

//客户端调用文件

packagecom.whcyit.axis;

importjavax.xml.namespace.QName;

importorg.apache.axis.client.Call;

importorg.apache.axis.client.Service;

importorg.apache.axis.encoding.ser.BeanDeserializerFactory;

importorg.apache.axis.encoding.ser.BeanSerializerFactory;publicclassSimpleObjectClient{publicstaticvoidmain(String[]args){

Stringret="";

try{

StringwsdlUrl="http:

//localhost:

8080/axis/services/SimpleObjectService?

wsdl";StringnameSpaceUri="http:

//localhost:

8080/axis/services/SimpleObjectService";//创建调用对象Serviceservice=newService();Callcall=null;call=(Call)service.createCall();//注册SimpleObject的序列化类型QNameqn=newQName("urn:

BeanService","SimpleObject");

call.registerTypeMapping(SimpleObject.class,qn,newBeanSerializerFactory(SimpleObject.class,qn),newBeanDeserializerFactory(SimpleObject.class,qn));//调用sayHello

System.out.println(">>>sayHello");

call.setOperationName(newQName(nameSpaceUri,"sayHello"));call.setTargetEndpointAddress(new.URL(wsdlUrl));ret=(String)call.invoke(newObject[]{"liu2"});

System.out.println("returnvalueis"+ret);//调用getDescSystem.out.println(">>>getString");SimpleObjectso=newSimpleObject();so.setString("hello!

");QNamegetDescQn=newQName(nameSpaceUri,"getString");call.setOperationName(getDescQn);

call.setTargetEndpointAddress(new.URL(wsdlUrl));ret=(String)call.invoke(newObject[]{so});System.out.println("returnvalueis"+ret);//调用createSimpleObject

System.out.println(">>>createSimpleObject");QNamegetObjectQn=newQName(nameSpaceUri,"createSimpleObject");call.setOperationName(getObjectQn);call.setTargetEndpointAddress(new.URL(wsdlUrl));SimpleObjectrtnSO=(SimpleObject)call.invoke(newObject[]{newInteger

(1),newFloat(0.1f),"liu2"});System.out.println("returnobject"+rtnSO.getString());}catch(Exceptionex){ex.printStackTrace();}}}//server-config.wsdd//服务端配置文件<?

xmlversion="1.0"encoding="UTF-8"?

>

<deploymentxmlns:

java="http:

//xml.apache.org/axis/wsdd/providers/java"

xmlns="http:

//xml.apache.org/axis/wsdd/"><handlertype="java:

org.apache.axis.handlers.http.URLMapper"name="URLMapper"/><servicename="SimpleObjectService"provider="java:

RPC"><parametername="allowedMethods"value="*"/><parametername="className"value="com.whcyit.axis.SimpleObjectService"/><beanMappinglanguageSpecificType="java:

com.whcyit.axis.SimpleObject"

qname="ns:

SimpleObject"xmlns:

ns="urn:

BeanService"/>

</service><transportname="http">

<requestFlow>

<handlertype="URLMapper"/>

</requestFlow>

</transport></deployment>ServiceStyles

AXIS有四种servicestyles,分别是:

RPC,Document,W

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1