移动订购通知接口集成

移动订购通知接口集成

          之前写过一篇联通的,现在来写一篇移动的,估计很多人被移动的那个正向同步通知接口的WSDL搞的头晕

1、首先呢当然是要有移动的那个WSDL文件,但是移动给的那个文件没法直接生成代码,所以改改之后成了这样:

<definitions xmlns:ws="http://www.monternet.com/dsmp/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.ort/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:dsmp="http://www.monternet.com/dsmp/schemas/" targetNamespace="http://www.monternet.com/dsmp/wsdl/">
<types>
  <schema targetNamespace="http://www.monternet.com/dsmp/schemas/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" attributeFormDefault="unqualified">
   <complexType name="address_info_schema">
    <sequence>
     <element name="DeviceType" type="xsd:integer"/>
     <element name="DeviceID" type="xsd:string"/>
    </sequence>
   </complexType>
   <complexType name="user_id_schema">
    <sequence>
     <element name="UserIDType" type="xsd:integer"/>
     <element name="MSISDN" type="xsd:string"/>
     <element name="PseudoCode" type="xsd:base64Binary"/>
    </sequence>
   </complexType>
   <!-- request & response -->
   <element name="TransactionID" type="xsd:string"/>
   <element name="SyncOrderRelationReq" type="dsmp:SyncOrderRelationReqType"/>
   <complexType name="SyncOrderRelationReqType">
    <sequence>
     <element name="Version" type="xsd:string"/>
     <element name="MsgType" type="xsd:string"/>
     <element name="Send_Address" type="dsmp:address_info_schema"/>
     <element name="Dest_Address" type="dsmp:address_info_schema"/>
     <element name="FeeUser_ID" type="dsmp:user_id_schema"/>
     <element name="DestUser_ID" type="dsmp:user_id_schema"/>
     <element name="LinkID" type="xsd:string" minOccurs="0"/>
     <element name="ActionID" type="xsd:integer"/>
     <element name="ActionReasonID" type="xsd:integer"/>
     <element name="SPID" type="xsd:string" minOccurs="0"/>
     <element name="SPServiceID" type="xsd:string"/>
     <element name="AccessMode" type="xsd:integer" minOccurs="0"/>
     <element name="FeatureStr" type="xsd:base64Binary" minOccurs="0"/>
    </sequence>
   </complexType>
   <element name="SyncOrderRelationResp" type="dsmp:SyncOrderRelationRespType"/>
   <complexType name="SyncOrderRelationRespType">
    <sequence>
     <element name="Version" type="xsd:string"/>
     <element name="MsgType" type="xsd:string"/>
     <element name="hRet" type="xsd:integer"/>
    </sequence>
   </complexType>
  </schema>
</types>
 
 
<message name="ma.SyncOrderRelationReq">
  <part name="SyncOrderRelationInput" element="dsmp:SyncOrderRelationReq"/>
  <part name="TransactionIDInput" element="dsmp:TransactionID"/>
</message>
 
<message name="ma.SyncOrderRelationResp">
  <part name="SyncOrderRelationOutput" element="dsmp:SyncOrderRelationResp"/>
  <part name="TransactionIDOut" element="dsmp:TransactionID"/>
</message>
 
<portType name="maPort">
  <operation name="SyncOrderRelation">
   <input message="ws:ma.SyncOrderRelationReq"/>
   <output message="ws:ma.SyncOrderRelationResp"/>
  </operation>
</portType>
 
<binding name="maPortBinding" type="ws:maPort">
  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="SyncOrderRelation">
   <soap:operation  style="document" soapAction="sim.SyncOrderRelation"/>
   <input>   
    <soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.monternet.com/dsmp/schemas/"/>
    <soap:header  message="ws:ma.SyncOrderRelationReq" part="TransactionIDInput" use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding" namespace="http://www.w3.org/2001/XMLSchema"/>   
   </input>
   <output>
    <soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://www.monternet.com/dsmp/schemas/"/>
    <soap:header style="document"  message="ws:ma.SyncOrderRelationResp" part="TransactionIDOut" use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding" namespace="http://www.w3.org/2001/XMLSchema"/>
   </output>
  </operation>
</binding>
<service name="dsmp">
  <port name="maPort" binding="ws:maPortBinding">
   <soap:address location="http://localhost/axis/services/maPort"/>
  </port>
</service>
</definitions>
有了这个描述文件估计很多人都可以自己生成对应的代码了,这里呢我也提供一份Axis 1.4生成的代码一份,要的自己去下载吧,拿到就能直接部署在Tomcat里面运行的

地址:http://download.csdn.net/detail/hjjoe1213123/8390079

2、至于要集成到Spring里面的一定要注意server-config.wsdd文件service的编写,参考如下:

<service name="ChinaMobileAcceptService" provider="java:RPC" style="document" use="literal">
        <parameter name="allowedMethods" value="syncOrderRelation"/>
        <parameter name="typeMappingVersion" value="1.2"/>
        <parameter name="wsdlPortType" value="maPort"/>
        <parameter name="className" value="com.cmpany.ChinaMobileAcceptProxyService"/>
        <parameter name="wsdlServicePort" value="maPort"/>
        <parameter name="wsdlTargetNamespace" value="http://www.monternet.com/dsmp/wsdl/"/>
        <parameter name="wsdlServiceElement" value="dsmp"/>
        <parameter name="schemaUnqualified" value="http://www.monternet.com/dsmp/schemas/"/>
        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns1:SyncOrderRelationReqType" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.cmpany.entity.SmsCmccSyncOrderRelationReqType" xmlns:ns1="http://www.monternet.com/dsmp/schemas/" xmlns:ns2="http://xml.apache.org/axis/wsdd/"/>
        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns2:address_info_schema" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.cmpany.entity.SmsAddress_info_schema" xmlns:ns2="http://www.monternet.com/dsmp/schemas/"/>
        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns3:SyncOrderRelationRespType" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.cmpany.entity.SmsCmccSyncOrderRelationRespType" xmlns:ns3="http://www.monternet.com/dsmp/schemas/"/>
        <typeMapping deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="" qname="ns4:user_id_schema" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" type="java:com.cmpany.entity.SmsUser_id_schema" xmlns:ns4="http://www.monternet.com/dsmp/schemas/"/>
    </service>
3、需要注意的一点是,移动MISG系统发送过来的报文还包含了soapenv:Header节点,所以ProxyService一定要实现extends ServletEndpointSupport implements ChinaMobileAcceptService, Skeleton,参考如下:

import javax.xml.rpc.ServiceException;
import javax.xml.rpc.holders.StringHolder;
import org.apache.axis.wsdl.Skeleton;
import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
import com.cmpany.entity.SmsCmccSyncOrderRelationReqType;
import com.cmpany.entity.SmsCmccSyncOrderRelationRespType;
import com.cmpany.entity.SmsCmccSyncOrderRelationRespTypeHolder;

public class ChinaMobileAcceptProxyService extends ServletEndpointSupport implements ChinaMobileAcceptService, Skeleton
{
    private ChinaMobileAcceptService chinamobileacceptservice;
    private static java.util.Map _myOperations = new java.util.Hashtable();
    private static java.util.Collection _myOperationsList = new java.util.ArrayList();

    protected void onInit() throws ServiceException
    {
        chinamobileacceptservice = (ChinaMobileAcceptService) getApplicationContext().getBean("ChinaMobileAcceptService");
    }

    /**
     * Returns List of OperationDesc objects with this name
     */
    public static java.util.List getOperationDescByName(java.lang.String methodName)
    {
        return (java.util.List) _myOperations.get(methodName);
    }

    /**
     * Returns Collection of OperationDescs
     */
    public static java.util.Collection getOperationDescs()
    {
        return _myOperationsList;
    }

    static
    {
        org.apache.axis.description.OperationDesc _oper;
        org.apache.axis.description.FaultDesc _fault;
        org.apache.axis.description.ParameterDesc[] _params;
        _params = new org.apache.axis.description.ParameterDesc[]
        {
                new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("http://www.monternet.com/dsmp/schemas/", "SyncOrderRelationReq"),
                        org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.monternet.com/dsmp/schemas/",
                                "SyncOrderRelationReqType"), SmsCmccSyncOrderRelationReqType.class, false, false),
                new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("http://www.monternet.com/dsmp/schemas/", "TransactionID"),
                        org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"),
                        java.lang.String.class, true, false),
                new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("http://www.monternet.com/dsmp/schemas/", "SyncOrderRelationResp"),
                        org.apache.axis.description.ParameterDesc.OUT, new javax.xml.namespace.QName("http://www.monternet.com/dsmp/schemas/",
                                "SyncOrderRelationRespType"), SmsCmccSyncOrderRelationRespType.class, false, false),
                new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("http://www.monternet.com/dsmp/schemas/", "TransactionID"),
                        org.apache.axis.description.ParameterDesc.OUT, new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"),
                        java.lang.String.class, false, true), };
        _oper = new org.apache.axis.description.OperationDesc("syncOrderRelation", _params, null);
        _oper.setElementQName(new javax.xml.namespace.QName("http://www.monternet.com/dsmp/schemas/", "SyncOrderRelation"));
        _oper.setSoapAction("sim.SyncOrderRelation");
        _myOperationsList.add(_oper);
        if (_myOperations.get("syncOrderRelation") == null)
        {
            _myOperations.put("syncOrderRelation", new java.util.ArrayList());
        }
        ((java.util.List) _myOperations.get("syncOrderRelation")).add(_oper);
    }

    public ChinaMobileAcceptService getChinamobileacceptservice()
    {
        return chinamobileacceptservice;
    }

    public void setChinamobileacceptservice(ChinaMobileAcceptService chinamobileacceptservice)
    {
        this.chinamobileacceptservice = chinamobileacceptservice;
    }

    public void syncOrderRelation(SmsCmccSyncOrderRelationReqType syncOrderRelationInput, String transactionIDInput,
            SmsCmccSyncOrderRelationRespTypeHolder syncOrderRelationOutput, StringHolder transactionIDOut) throws java.rmi.RemoteException
    {
        chinamobileacceptservice.syncOrderRelation(syncOrderRelationInput, transactionIDInput, syncOrderRelationOutput, transactionIDOut);
    }
}
AcceptService参考如下:

import java.rmi.Remote;
import java.rmi.RemoteException;
import javax.xml.rpc.holders.StringHolder;
import com.cmpany.entity.SmsCmccSyncOrderRelationReqType;
import com.cmpany.entity.SmsCmccSyncOrderRelationRespTypeHolder;

/**
 * 中国移动订购通知接收服务
 * @author hejun
 * @version 1.0
 * @time 2015年1月14日 上午9:27:11
 * @todo
 */
public interface ChinaMobileAcceptService extends Remote
{
    public void syncOrderRelation(SmsCmccSyncOrderRelationReqType syncOrderRelationInput, String transactionIDInput, SmsCmccSyncOrderRelationRespTypeHolder syncOrderRelationOutput, StringHolder transactionIDOut) throws RemoteException;
}





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值