IsmpSp接口开发
2009-08-24 15:19 乱世文章 阅读(355) 评论(0) 编辑 收藏 举报
中国电信Ismp接口改造,参考文档:
1、《中国电信综合业务管理平台ISMP接口规范(RC1.0.1)-SP接口.pdf》
2、《IsmpSpEngine.wsdl》
一、 接口服务的开发
以下是具体的开发过程:
1、 在Eclipse中新建一个web工程zdflsmsservice。JAVA EE 5.0规范
2、 在build path中添加User Libraray :Axis2库
3、 在WebRoot目录下新建目录wsdl,把IsmpSpEngine.wsdl文件放进来
4、 使用newàother…àAxis2 code generator生成服务端代码,选择“通过wsdl文件生成代码”,wsdl文件指向IsmpSpEngine.wsdl,如图:
5、 下一步,照下图填写:
6、 下一步,选择 ,然后点“browser”,选择当前工程作为目标目录
7、 点击finish,完成。
8、 刷新项目文件夹,打开文件com.chinatelecom.ismp.sp.IsmpSpEngineServiceSkeleton.java,进行编辑,实现其中的3个方法:
public com.chinatelecom.ismp.sp.OrderRelationUpdateNotifyReturn orderRelationUpdateNotify
(
com.chinatelecom.ismp.sp.OrderRelationUpdateNotifyReqE orderRelationUpdateNotifyReq0
)
{
OrderRelationUpdateNotifyReqE reqe=orderRelationUpdateNotifyReq0;
OrderRelationUpdateNotifyReturn ret=new OrderRelationUpdateNotifyReturn();
OrderRelationUpdateNotifyReq req=reqe.getOrderRelationUpdateNotifyReq();
int i=SpOrder.OrderUpdate(req);
Response resp=new Response();
resp.setResultCode(i);
resp.setStreamingNo(req.getStreamingNo());
ret.setOrderRelationUpdateNotifyReturn(resp);
return ret;
}
/**
* Auto generated method signature
*
* @param serviceConsumeNotifyReqPara2
*/
public com.chinatelecom.ismp.sp.ServiceConsumeNotifyReturn serviceConsumeNotify
(
com.chinatelecom.ismp.sp.ServiceConsumeNotifyReqPara serviceConsumeNotifyReqPara2
)
{
……略
int i=SpOrder.ServiceConsume(req);
……略
}
/**
* Auto generated method signature
*
* @param notifyManagementInfoReq4
*/
public com.chinatelecom.ismp.sp.NotifyManagementInfoReturn notifyManagementInfo
(
com.chinatelecom.ismp.sp.NotifyManagementInfoReqE notifyManagementInfoReq4
)
{
……略
int i=SpOrder.ManagementNotify(req);
……略
}
9、 新建类SpOrder,编写业务逻辑:
package com.chinatelecom.ismp.sp;
import com.chinatelecom.ismp.sp.req.NotifyManagementInfoReq;
import com.chinatelecom.ismp.sp.req.OrderRelationUpdateNotifyReq;
import com.chinatelecom.ismp.sp.req.ServiceConsumeNotifyReq;
public class SpOrder {
public static int OrderUpdate(OrderRelationUpdateNotifyReq req)
{
String streamNo=req.getStreamingNo(); //流水号
String packageId=req.getPackageID(); //套餐id
String productId=req.getProductID(); //产品id
String userId=req.getUserID(); //用户id
int opType=req.getOPType(); //操作:0-订购,3-退订
int userIdType=req.getUserIDType(); //用户id类别:0-MSISDN,1-PHS,2-PSTN,3-伪码
System.out.println(String.format(
"流水号:%1$s,套餐id:%2$s,产品id:%3$s,用户id:%4$s,用户id类别:%5$s,操作:%6$s",
streamNo,packageId,productId,userId,userIdType,opType));
return 0;
}
public static int ServiceConsume(ServiceConsumeNotifyReq req){
……略
}
public static int ManagementNotify(NotifyManagementInfoReq req){
……略
}
}
10、 打开向导Axis2 service Archiver, NEXT,选择类文件所在目录:
11、 下一步,选择wsdl文件:
12、 下一步,加入外部包:
13、 下一步,选择service.xml文件:
14、 下一步,选择aar存放文件路径和文件名:
15、 访问http://10.180.13.53:5845/axis2/services/IsmpSpEngineService?wsdl,查看服务是否发布成功
二、 客户端开发
1、 新建java 工程zdflsmsserviceTest
2、 导入用户库axis2到build path
3、 用axis2 code generator生成客户端代码,使用同一个wsdl文件:
4、 下一步,生成选项:
5、 下一步,生成的目标路径,当前工程目录:
6、 Finish,完成。刷新工程文件目录。
7、 新建类ClientTest,编写测试客户端代码:
package com.chinatelecom.ismp.sp;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.NotifyManagementInfoRsp;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.OrderRelationUpdateNotifyReq;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.OrderRelationUpdateNotifyReqE;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.Response;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.NotifyManagementInfoReq;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.NotifyManagementInfoReqE;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.ServiceConsumeNotifyReq;
import com.chinatelecom.ismp.sp.IsmpSpEngineServiceStub.ServiceConsumeNotifyReqPara;
public class ClientTest {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
stub=new IsmpSpEngineServiceStub(
"http://222.172.222.40:5845/axis2/services/IsmpSpEngineService");
//orderRelationUpdateNotfy();
//notifyManagementInfo();
serviceConsumeNotfy();
}
public static IsmpSpEngineServiceStub stub;
public static void orderRelationUpdateNotfy()throws Exception{
OrderRelationUpdateNotifyReqE e=new OrderRelationUpdateNotifyReqE();
OrderRelationUpdateNotifyReq req=new OrderRelationUpdateNotifyReq();
req.setOPType(0); //订购
req.setPackageID("000");//套餐id
req.setProductID("123");//产品id
req.setStreamingNo("1999001112233554676");//流水号
req.setUserID("15969508550");//号码
req.setUserIDType(0); //号码类型:MSISDN
e.setOrderRelationUpdateNotifyReq(req);
Response rsp=stub.orderRelationUpdateNotify(e).getOrderRelationUpdateNotifyReturn();
System.out.println(String.format("resp------------/n流水号:%1$s,返回码:%2$s",
rsp.getStreamingNo(),rsp.getResultCode()));
}
public static void notifyManagementInfo()throws Exception{
NotifyManagementInfoReqE e=new NotifyManagementInfoReqE();
NotifyManagementInfoReq req=new NotifyManagementInfoReq();
req.setStreamingNo("888888888888888888");//流水号
req.setID("444");//id
req.setIDType(0);//id类型:产品 id
req.setStatus(0);//状态:正常
e.setNotifyManagementInfoReq(req);
NotifyManagementInfoRsp rsp=stub.notifyManagementInfo(e).getNotifyManagementInfoReturn();
System.out.println(String.format("resp------------/n流水号:%1$s,返回码:%2$s",
rsp.getStreamingNo(),rsp.getResultCode()));
}
public static void serviceConsumeNotfy()throws Exception{
ServiceConsumeNotifyReqPara e=new ServiceConsumeNotifyReqPara();
ServiceConsumeNotifyReq req=new ServiceConsumeNotifyReq();
req.setFeatureStr("DF#106295598#17050100");//特征码
req.setLinkID("");//linkid
req.setProductID("123");//产品id
req.setStreamingNo("111111111");//流水号
req.setUserID("15969508550");//号码
req.setUserIDType(0);//号码类型:MSISDN
e.setServiceConsumeNotifyReqPara(req);
Response rsp=stub.serviceConsumeNotify(e).getServiceConsumeNotifyReturn();
System.out.println(String.format("resp------------/n流水号:%1$s,返回码:%2$s",
rsp.getStreamingNo(),rsp.getResultCode()));
}
}
....>>图片比较多,实在懒得上传了,大家也可以去资源中下载word文档(含所有图片)。资源名《中国电信
IsmpSp接口开发》。
杨宏焱 2009-8-24