六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 46|回复: 0

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

[复制链接]

升级  59.33%

116

主题

116

主题

116

主题

举人

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2013-1-15 03:00:32 | 显示全部楼层 |阅读模式
根据那个图片上传处理服务器的思路,小改了一个处理器.尚未测试.
使用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;    }}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表