卓望MISC1.6 的provision --无web服务器

本文介绍了一个基于CMPP3协议的小型Provision服务器实现,该服务器使用Java语言开发,能够接收并处理XML格式的消息请求,通过DOM4J解析XML,并返回相应的处理结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据那个图片上传处理服务器的思路,小改了一个处理器.尚未测试.
使用dom4j解析收到的XML 并返回处理结果

需要JDK6


/**
* provision
* @author rikugun
*/
public class CMPP3Provision {

private static HttpServer hs;
private static Logger logger = Logger.getLogger(CMPP3Provision.class.getName());

static {
try {
logger.debug("初始化Http Server");
hs = HttpServer.create(new InetSocketAddress(1234), 0); //设置HttpServer的端口为1234
hs.createContext("/provision", new ProvisionHandler());
} catch (IOException ex) {
logger.warn("初始化Provision出错!", ex);
}

}

public CMPP3Provision() {
}

public void Start() {
hs.start();
}

public void Stop() {
hs.stop(1);
}
}


处理模块

/**
* provision处理模块
* @author rikugun
*/
public class ProvisionHandler implements HttpHandler {

private static Logger logger = Logger.getLogger(ProvisionHandler.class.getName());
private static Document dom, repDom;
private static SAXReader saxReader = new SAXReader();

@Override
public void handle(HttpExchange t) throws IOException {
logger.debug("获取同步信息,来自:"+t.getRemoteAddress().toString());
logger.debug(t.getRequestHeaders().entrySet().toString());
OutputStream os = t.getResponseBody();
try {
dom = saxReader.read(t.getRequestBody());
repDom = doSync(dom);
t.sendResponseHeaders(200, repDom.asXML().length());
os.write(repDom.asXML().getBytes());
} catch (DocumentException ex) {
logger.warn("解析XML错误", ex);

}

os.close();
}

private Document doSync(Document dom) {
logger.debug("--------获取到的XML--------");
logger.debug(dom.asXML());
logger.debug("--------获取到的XML--------");

Element header = (Element) dom.getRootElement().element("Header");
//transactionID
String transactionID = header.elementText("TransactionID");
Element body = (Element) dom.getRootElement().element("Body");
Element syncOrderRelationReq = (Element) body.element("SyncOrderRelationReq");
//UserId
List<Element> msidn = body.selectNodes("ActionID");
List<Element> user = body.selectNodes("//FeeUser_ID");

//动作类型
String actionId = syncOrderRelationReq.elementText("ActionID");

//动作原因
String actionReasonId = syncOrderRelationReq.elementText("ActionReasonID");

//业务ID
String serviceId = syncOrderRelationReq.elementText("SPServiceID");

//附加参数
String featureStr = syncOrderRelationReq.elementText("FeatureStr");

//TODO 更新数据库中的用户订购信息

SyncOrderRelationResp ret = new SyncOrderRelationResp(transactionID,"0");
logger.debug("--------返回的XML--------");
logger.debug(ret.getDocument().asXML());
logger.debug("--------返回的XML--------");
//返回执行成功的XML
return ret.getDocument();
}
}



辅助类

/**
* 同步信息响应
* @author rikugun
*/
public class SyncOrderRelationResp {
//原始XML
private static String raw = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<SOAP-ENV:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
" <SOAP-ENV:Header>\n" +
"<TransactionID xmlns=\"http://www.monternet.com/dsmp/schemas/\">00240301659556</TransactionID>\n" +
"</SOAP-ENV:Header>\n" +
"<SOAP-ENV:Body>\n" +
"<SyncOrderRelationResp xmlns:=\"http://www.monternet.com/dsmp/schemas/\">\n" +
"<Version xsi:type=\"xsd:string\">1.5.0</Version>\n" +
"<MsgType xsi:type=\"xsd:string\">SyncOrderRelationResp</MsgType>\n" +
"<hRet xsi:type=\"xsd:integer\">1</hRet>\n" +
"</SyncOrderRelationResp>\n" +
"</SOAP-ENV:Body>\n" +
"</SOAP-ENV:Envelope>";
private static Document dom;
private static Element transaction, hRet;

static {
try {
dom = DocumentHelper.parseText(raw);
} catch (DocumentException ex) {
Logger.getLogger(SyncOrderRelationResp.class.getName()).warn("生成响应XML出错!", ex);
}
transaction = dom.getRootElement().element("Header").element("TransactionID");
hRet = dom.getRootElement().element("Header").element("hRet");
}

/**
* 定制消息反馈
* @param transactionID 事务ID
*/
public SyncOrderRelationResp(String transactionID) {
transaction.setText(transactionID);
}

/**
* 定制消息反馈
* @param transactionID 事务ID
* @param ret 返回值
*/
public SyncOrderRelationResp(String transactionID, String ret) {
transaction.setText(transactionID);
hRet.setText(ret);
}

/**
* 获取生成的结果Document
* @return
*/
public Document getDocument() {
return dom;
}
}
标题基于SpringBoot+Vue的社区便民服务平台研究AI更换标题第1章引言介绍社区便民服务平台的研究背景、意义,以及基于SpringBoot+Vue技术的研究现状和创新点。1.1研究背景与意义分析社区便民服务的重要性,以及SpringBoot+Vue技术在平台建设中的优势。1.2国内外研究现状概述国内外在社区便民服务平台方面的发展现状。1.3研究方法与创新点阐述本文采用的研究方法和在SpringBoot+Vue技术应用上的创新之处。第2章相关理论介绍SpringBoot和Vue的相关理论基础,以及它们在社区便民服务平台中的应用。2.1SpringBoot技术概述解释SpringBoot的基本概念、特点及其在便民服务平台中的应用价值。2.2Vue技术概述阐述Vue的核心思想、技术特性及其在前端界面开发中的优势。2.3SpringBoot与Vue的整合应用探讨SpringBoot与Vue如何有效整合,以提升社区便民服务平台的性能。第3章平台需求分析与设计分析社区便民服务平台的需求,并基于SpringBoot+Vue技术进行平台设计。3.1需求分析明确平台需满足的功能需求和性能需求。3.2架构设计设计平台的整体架构,包括前后端分离、模块化设计等思想。3.3数据库设计根据平台需求设计合理的数据库结构,包括数据表、字段等。第4章平台实现与关键技术详细阐述基于SpringBoot+Vue的社区便民服务平台的实现过程及关键技术。4.1后端服务实现使用SpringBoot实现后端服务,包括用户管理、服务管理等核心功能。4.2前端界面实现采用Vue技术实现前端界面,提供友好的用户交互体验。4.3前后端交互技术探讨前后端数据交互的方式,如RESTful API、WebSocket等。第5章平台测试与优化对实现的社区便民服务平台进行全面测试,并针对问题进行优化。5.1测试环境与工具介绍测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值