转 axis 自定义对象序列化阿甘正传.docx
- 文档编号:642846
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:5
- 大小:16.36KB
转 axis 自定义对象序列化阿甘正传.docx
《转 axis 自定义对象序列化阿甘正传.docx》由会员分享,可在线阅读,更多相关《转 axis 自定义对象序列化阿甘正传.docx(5页珍藏版)》请在冰豆网上搜索。
转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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- axis 自定义对象序列化阿甘正传 自定义 对象 序列 阿甘正传