you only can find some English resource

解决方案 »

  1.   

    wsdd虽然有很多参数,其实通常你只要关注两三个即可。Web Service的工作方式,主要有2种。远程调用方式和消息发送方式,一般是远程调用方式,这样使用比较自然,简便。两端可以直接使用对象而不必关心怎样解析。
    消息方式(style="message")一般直接传递xml,适合要传递的数据已经是xml信息的情况。
    <service name="Rpc" provider="java:RPC" style="rpc" use="encoded">
    名字空间,可能客户端调用时需要用。
    <parameter name="wsdlTargetNamespace" value="urn:MyNS"/>要发布的SOAP实现类,不用说,这个是必须的了。
    <parameter name="className" value="MyClassNameWithPackage"/>
    发布的方法,通常用*表示你要发布所有的方法,
    这是如果有不想发布的方法,就不要写成public的了。
    <parameter name="allowedMethods" value="*"/>如果你有自定义的对象,还要加TypeMapping参数,
    比如你有一个对象叫做PersonInfo,这样定义它
    <typeMapping
    qname="ns:PersonInfo"
    type="java:com.mycomp.myproj.model.PersonInfo"
    serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
    deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
    encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    />如果你的对象是标准的Value Object对象(这也是最常见的情形),
    serializer deserializer就象上面一样使用Axis内置的标准Bean解析器即可。
    对于其他类型的对象,Axis也有相应的解析器。如果你的数据比较复杂,
    Axis支持你使用Castor来系列化,如果你的数据非常非常复杂,提供的任何解析器都不能
    满足你的要求,你还可以自己编写解析器(这种情形目前我还没碰到过)。
      

  2.   

    能否将typeMapping中的参数再讲解一下呢,谢谢了。
      

  3.   

    qname 是你的对象的名字空间,客户端以后要用,随便取一个。
    type就是你的自定义的对象类名,带包名。
    serializer deserializer一般填上面默认的解析器名。
    encodeStyle是个死的值,照上面的写。
      

  4.   

    呵呵,多谢了,多谢了。再问一下typeMapping和beanMapping有什么区别呢?
      

  5.   

    beanMapping指简单JavaBean,一般是Value Object,只包含Getter Setter
    typeMapping可以处理比较复杂的类型。比如附件的DataHandler
    当然也包括简单类型。所以只用TypeMapping即可。