分享
 
 
 

移动MISC系统sp升级开发

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

版权归 石太祥 (ealpha(AT)msn(DOT).com)所有;

联系: msn: ealpha(AT)msn(DOT).com

QQ : 9690501

系统采用AXIS,如果无axis知识,建议可以到IBM开发者上搜索相关 AXIS 文档浏览

————————————————————————————————————————

1、 配置好AXIS

2、 将wsdl 文件 copy 到 \TOMCAT_HOME\webapps\axis\WEB-INF 下

Wsdl 文件由于MISC提供的不能生成 header ;经过修改以后的新的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>

3、 生成客户端,服务端代码:

使用命令:Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true dsmp.wsdl

4、 deploy.wsdd 用来发布service

MaPortBindingImpl.java 服务短编程使用

MaPortBindingStub.java 客户端编程使用

5、 建立服务:

使用命令 :java org.apache.axis.utils.Admin client|server deploy.wsdd

建立服务端和客户端的服务。

6、 编写客户端测试代码:

package com.smsmail.misc;

import java.math.BigInteger;

import java.net.URL;

import javax.xml.rpc.holders.StringHolder;

import com.monternet.www.dsmp.schemas.Address_info_schema;

import com.monternet.www.dsmp.schemas.SyncOrderRelationReqType;

import com.monternet.www.dsmp.schemas.SyncOrderRelationRespType;

import com.monternet.www.dsmp.schemas.User_id_schema;

import com.monternet.www.dsmp.schemas.holders.SyncOrderRelationRespTypeHolder;

import com.monternet.www.dsmp.wsdl.MaPortBindingStub;

/*

* 移动MISC系统升级,SP客户端测试环境

*/

public class ClientTest {

private static BigInteger msg;

public static void main(String[] args) {

MaPortBindingStub binding = null;

SyncOrderRelationRespType value = null;

SyncOrderRelationReqType req=new SyncOrderRelationReqType();

SyncOrderRelationRespTypeHolder syncOrderRelationOutput = new SyncOrderRelationRespTypeHolder();

StringHolder transactionIDOut = new StringHolder();

/**

*

* TransactionID 由返回的provision包里面的对应字段来决定,然后放到响应包里面的对应字段

* TransactionID不是sp生成的

*

*/

// 根据 - 数据业务管理平台接口规范-1.5.1 定义。可以参考schemas 下的类文件

BigInteger devicetypeSend_Address = BigInteger.valueOf(201);

BigInteger devicetypeDest_Address = BigInteger.valueOf(0);

BigInteger UserIDTypeFeeUser_ID = BigInteger.valueOf(1);

BigInteger ActionID = BigInteger.valueOf(1);

BigInteger ActionReasonID = BigInteger.valueOf(1);

BigInteger AccessMode = BigInteger.valueOf(3);

// 对于一些固定的值来决定

Address_info_schema Send_Address = new Address_info_schema();

Send_Address.setDeviceID("dev");

Send_Address.setDeviceType(devicetypeSend_Address);

Address_info_schema Dest_Address = new Address_info_schema();

Dest_Address.setDeviceID("0011");

Dest_Address.setDeviceType(devicetypeDest_Address);

User_id_schema FeeUser_ID = new User_id_schema();

FeeUser_ID.setMSISDN("13817931870");

FeeUser_ID.setUserIDType(UserIDTypeFeeUser_ID);

User_id_schema DestUser_ID = new User_id_schema();

DestUser_ID.setMSISDN("13817931870");

DestUser_ID.setUserIDType(UserIDTypeFeeUser_ID);

/**

* 给请求赋值

*/

req.setMsgType("SubscribeServiceReq");

req.setVersion("1.5.0");

req.setSend_Address(Send_Address);

req.setDest_Address(Dest_Address);

req.setFeeUser_ID(FeeUser_ID);

req.setDestUser_ID(DestUser_ID);

req.setLinkID(""); // 可选

req.setActionID(ActionID);

req.setActionReasonID(ActionReasonID);

req.setSPID("800001");

req.setSPServiceID("+021");

req.setAccessMode(AccessMode);

try {

URL endpoint = new URL("http://localhost:808/axis/services/maPort"); //详细见说明1 和说明 2 说明3

binding = (MaPortBindingStub) new com.monternet.www.dsmp.wsdl.DsmpLocator().getmaPort(endpoint);

binding.setTimeout(60000);

binding.syncOrderRelation(req,"27",syncOrderRelationOutput,transactionIDOut);

}

catch (Exception e) {

e.printStackTrace();

}

}

}

说明1、 该URL是在真实环境中提交给 MISC平台的地址;

说明2、 该URL指向本地的服务地址,一定要保证 访问该URL时候提示为:

maPort

Hi there, this is an AXIS service!

Perhaps there will be a form for invoking the service here...

说明3 、本出URL的地址中端口为 808 是因为在 TCPMonitor中设置 监听端口转发为 808。 如果不开启TCPMonitor 则直接设置为8080

7、 编写服务短返回代码

// 添加返回

SyncOrderRelationRespType ret = new SyncOrderRelationRespType();

BigInteger hret = BigInteger.valueOf(0);

ret.setMsgType("SubscribeServiceResp");

ret.setHRet(hret);

ret.setVersion("1.5.0");

//return null;

8、 问题解决:

n 由于每次请求的SOAP 报文命名空间问题。

采用修改AXIS 1.2版本的源文件:源文件为 (该文件由网友提供,无源代码)

n 包含 xmls=““ 问题

修改 SerializationContextImpl.java 文件,按照如下修改

public String qName2String(QName qName, boolean writeNS)

{

String prefix = null;

String namespaceURI = qName.getNamespaceURI();

if (namespaceURI.length() == 0) {

if (writeNS) {

// If this is unqualified (i.e. prefix ""), set the default

// namespace to ""

String defaultNS = nsStack.getNamespaceURI("");

if (defaultNS != null && defaultNS.length() > 0) {

//registerPrefixForURI("", "");

}

}

} else {

prefix = getPrefixForURI(namespaceURI);

}

if ((prefix == null) || (prefix.length() == 0))

return qName.getLocalPart();

StringBuffer sb = new StringBuffer(prefix);

sb.append(':');

sb.append(qName.getLocalPart());

return sb.toString();

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有