CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > WebService领域

WebService之axis的复杂对象传输

作者: 迷途,  出处:中国IT实验室, 责任编辑: 包春林, 
2008-04-10 00:00
  从程序中摘出的一些东东,跟大家分享一下。

  先自定义发布:

  写一个deploy.wsdd 文件:

  

< deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

  < service name="mShop" provider="java:RPC">

  < parameter name="className" value="tests.shop"/>

  < parameter name="allowedMethods" value="*"/>

  < typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"

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

  qname="ns1:book"

  serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"

  type="java:tests.book"

  xmlns:ns1="http://127.0.0.1:8080/axis/services/mShop"/>

  < /service>

  < /deployment>

        服务发布后,以上的发布信息都会被添加到server-config.wsdd文件里~

  若服务发布出了什么问题(比如View里面看不到任何服务等……==!)一个考虑的就是这个server-config.wsdd~

  上面的高亮显示,这是关键,它在server端定义如何序列化和反序列化complexType

  若没有这个,那么你在客户端registry.getDefaultTypeMapping()将什么都得不到~~

  这里的< typeMapping .../>定义了一个book对象,它是服务方法 public book[] getAllBooks() 的返回类型,类定义在tests.book,namespace是服务的namespace

  具体的wsdd文件说明在axisUserguide里面,具体位置 : %axis_home%/docs/reference.html

  以此类推,服务中所有的非原子类型返回都必须typeMapping一下~~~(= =!汗)

  注册复杂类型的客户端代码:

  

org.apache.axis.client.Service service = new org.apache.axis.client.Service();

  TypeMappingRegistry registry = service.getTypeMappingRegistry();

  TypeMapping map = registry.getDefaultTypeMapping();

  QName qType = new QName("http://localhost/tests","book");

  Class qClass = Class.forName("tests.book");

  map.register(qClass,qType,new BeanSerializerFactory(qClass, qType),

  new BeanDeserializerFactory(qClass, qType));

        要注意,Service是org.apache.axis.client.Service,而不是javax.xml.rpc.Service,如果用错了axis会发出一大堆http500来抱怨的~~~

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i