亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transactionmanager.java

?? java pos,你可以直接編譯運行,
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * Copyright (c) 2004 jPOS.org  * * See terms of license at http://jpos.org/license.html * */package org.jpos.q2.transaction;import java.io.Serializable;import java.util.Map;import java.util.List;import java.util.HashMap;import java.util.ArrayList;import java.util.Iterator;import java.util.StringTokenizer;import org.jpos.util.NameRegistrar;import org.jdom.Element;import org.jpos.space.Space;import org.jpos.space.JDBMSpace;import org.jpos.space.SpaceFactory;import org.jpos.space.SpaceUtil;import org.jpos.q2.QFactory;import org.jpos.q2.QBeanSupport;import org.jpos.core.ConfigurationException;import org.jpos.util.Logger;import org.jpos.util.LogEvent;import org.jpos.transaction.TransactionConstants;import org.jpos.transaction.TransactionParticipant;import org.jpos.transaction.GroupSelector;import org.jpos.transaction.AbortParticipant;import org.jpos.transaction.ContextRecovery;public class TransactionManager     extends QBeanSupport     implements Runnable, TransactionConstants, TransactionManagerMBean{    Space sp;    Space psp;    String queue;    String tailLock;    Map groups;    long head, tail, lastGC;    public static final String  HEAD       = "$HEAD";    public static final String  TAIL       = "$TAIL";    public static final String  CONTEXT    = "$CONTEXT.";    public static final String  STATE      = "$STATE.";    public static final String  GROUPS     = "$GROUPS.";    public static final String  TAILLOCK   = "$TAILLOCK";    public static final Integer PREPARING  = new Integer (0);    public static final Integer COMMITTING = new Integer (1);    public static final Integer DONE       = new Integer (2);    public static final String  DEFAULT_GROUP = "";    public static final long    MAX_PARTICIPANTS = 1000;  // loop prevention    public void initService () throws ConfigurationException {        queue = cfg.get ("queue", null);        if (queue == null)            throw new ConfigurationException ("queue property not specified");        sp   = SpaceFactory.getSpace (cfg.get ("space"));        psp  = SpaceFactory.getSpace (cfg.get ("persistent-space"));        tail = initCounter (TAIL, cfg.getLong ("initial-tail", 1));        head = Math.max (initCounter (HEAD, tail), tail);        tailLock = TAILLOCK + "." + Integer.toString (this.hashCode());        initTailLock ();        groups = new HashMap();        initParticipants (getPersist());    }    public void startService () {        NameRegistrar.register (getName (), this);        recover ();        long sessions = cfg.getLong ("sessions", 1);        for (int i=0; i<sessions; i++) {            Thread t = new Thread (this);            t.setName (getName() + "-" + i);            t.start ();        }    }    public void stopService () {        NameRegistrar.unregister (getName ());        long sessions = cfg.getLong ("sessions", 1);        for (int i=0; i<sessions; i++)            sp.out (queue, this, 60*1000);    }    public void queue (Serializable context) {        sp.out (queue, context);    }    public void run () {        long id;        String threadName = Thread.currentThread().getName();        getLog().info (threadName + " start");        while (running()) {            try {                Object obj = sp.in (queue);                if (obj == this)                    continue;   // stopService ``hack''                if (!(obj instanceof Serializable)) {                    getLog().error (                        "non serializable '" + obj.getClass().getName()                       + "' on queue '" + queue + "'"                    );                    continue;                }                id = nextId ();                List members = new ArrayList ();                Serializable context = (Serializable) obj;                snapshot (id, context, PREPARING);                int action = prepare (id, context, members);                switch (action) {                    case PREPARED:                        setState (id, COMMITTING);                        commit (id, context, members, false);                        break;                    case ABORTED:                        abort (id, context, members, false);                        break;                    case NO_JOIN:                        break;                }                snapshot (id, null, DONE);                if (id == tail) {                    checkTail ();                }            } catch (Throwable t) {                getLog().fatal (t); // should never happen            }         }        getLog().info (threadName + " stop");    }    public long getTail () {        return tail;    }    public long getHead () {        return head;    }    protected void commit         (long id, Serializable context, List members, boolean recover)     {        Iterator iter = members.iterator();        while (iter.hasNext ()) {            TransactionParticipant p = (TransactionParticipant) iter.next();            if (recover && p instanceof ContextRecovery)                context = ((ContextRecovery) p).recover (id, context, true);            commit (p, id, context);        }    }    protected void abort         (long id, Serializable context, List members, boolean recover)     {        Iterator iter = members.iterator();        while (iter.hasNext ()) {            TransactionParticipant p = (TransactionParticipant) iter.next();            if (recover && p instanceof ContextRecovery)                context = ((ContextRecovery) p).recover (id, context, false);            abort (p, id, context);        }    }    protected int prepareForAbort        (TransactionParticipant p, long id, Serializable context)     {        try {            if (p instanceof AbortParticipant)                return ((AbortParticipant)p).prepareForAbort (id, context);        } catch (Throwable t) {            getLog().warn ("PREPARE-FOR-ABORT: " + Long.toString (id), t);        }        return ABORTED | NO_JOIN;    }    protected int prepare         (TransactionParticipant p, long id, Serializable context)     {        try {            return p.prepare (id, context);        } catch (Throwable t) {            getLog().warn ("PREPARE: " + Long.toString (id), t);        }        return ABORTED;    }    protected void commit         (TransactionParticipant p, long id, Serializable context)     {        try {            p.commit (id, context);        } catch (Throwable t) {            getLog().warn ("COMMIT: " + Long.toString (id), t);        }    }    protected void abort         (TransactionParticipant p, long id, Serializable context)     {        try {            p.abort (id, context);        } catch (Throwable t) {            getLog().warn ("ABORT: " + Long.toString (id), t);        }    }    protected int prepare (long id, Serializable context, List members) {        boolean abort = false;        Iterator iter = getParticipants (DEFAULT_GROUP).iterator();        for (int i=0; iter.hasNext (); i++) {            int action = 0;            if (i > MAX_PARTICIPANTS) {                getLog().warn (                    "loop detected - transaction " +id + " aborted."                );                return ABORTED;            }            TransactionParticipant p = (TransactionParticipant) iter.next();            if (abort) {                action = prepareForAbort (p, id, context);            } else {                action = prepare (p, id, context);                abort  = (action & PREPARED) == ABORTED;            }            if ((action & READONLY) == 0) {                snapshot (id, context);            }            if ((action & NO_JOIN) == 0) {                members.add (p);            }            if (p instanceof GroupSelector) {                String groupName = ((GroupSelector)p).select (id, context);                if (groupName != null) {                    StringTokenizer st = new StringTokenizer (groupName, " ,");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩嫩av羞羞动漫久久久| 午夜久久久久久久久| 久久99精品一区二区三区三区| 欧美日韩国产不卡| 亚洲电影一区二区三区| 欧美精品久久一区| 久久97超碰国产精品超碰| 精品国产乱码久久久久久老虎| 国内精品免费在线观看| 国产欧美精品国产国产专区| 成人高清伦理免费影院在线观看| 综合色天天鬼久久鬼色| 欧美日韩国产bt| 国产揄拍国内精品对白| 亚洲美女在线一区| 538prom精品视频线放| 国产风韵犹存在线视精品| 亚洲欧美日韩在线播放| 日韩一卡二卡三卡| 成人永久免费视频| 午夜精品久久久久影视| 久久久久久久电影| 欧洲精品在线观看| 国内久久婷婷综合| 亚洲精品乱码久久久久久黑人| 4438成人网| caoporen国产精品视频| 亚洲va韩国va欧美va| 国产亚洲欧美一级| 欧美美女视频在线观看| 成人一级片网址| 午夜精品久久一牛影视| 国产精品久久久久久久久晋中 | 亚洲男人电影天堂| 在线不卡中文字幕| 99久久精品免费精品国产| 青青草精品视频| 亚洲欧美一区二区三区国产精品| 91精品国产美女浴室洗澡无遮挡| 成人午夜激情在线| 青青草97国产精品免费观看无弹窗版| 中文字幕精品一区二区三区精品| 717成人午夜免费福利电影| 99re这里都是精品| 麻豆视频观看网址久久| 中文字幕亚洲一区二区av在线| 555www色欧美视频| 色香蕉成人二区免费| 国产黄色成人av| 美日韩一区二区| 亚洲国产精品一区二区尤物区| 国产免费久久精品| 精品免费日韩av| 91麻豆精品国产无毒不卡在线观看| 91亚洲精品久久久蜜桃网站| 国产激情视频一区二区在线观看 | 欧美一区二区三区日韩| 91麻豆视频网站| 国产传媒一区在线| 国产在线一区二区| 久久精品国产**网站演员| 午夜电影网一区| 亚洲电影欧美电影有声小说| 亚洲欧美日韩电影| 亚洲视频一区二区在线| 国产精品久久久一本精品| 久久久亚洲欧洲日产国码αv| 日韩一区二区三区视频在线 | 精品一区免费av| 青青青爽久久午夜综合久久午夜| 亚洲一二三四在线观看| 亚洲精品视频在线观看免费| 国产精品国产自产拍高清av | 欧美大白屁股肥臀xxxxxx| 欧美肥胖老妇做爰| 欧美高清视频不卡网| 欧美日韩成人在线| 91麻豆精品国产无毒不卡在线观看| 欧美日韩成人综合在线一区二区| 欧美日韩国产一级二级| 欧美日韩高清不卡| 欧美高清激情brazzers| 91精品国模一区二区三区| 69堂成人精品免费视频| 日韩精品最新网址| 久久男人中文字幕资源站| 久久精品水蜜桃av综合天堂| 国产亚洲欧美一级| 亚洲三级久久久| 亚洲午夜在线视频| 天天影视色香欲综合网老头| 男人的天堂亚洲一区| 韩国一区二区视频| 国产91露脸合集magnet| 91亚洲精华国产精华精华液| 欧美性一二三区| 日韩亚洲欧美综合| 中文字幕欧美国产| 亚洲自拍偷拍九九九| 免费在线成人网| 成人av电影在线| 欧美在线一二三| 欧美电影免费观看完整版| 久久久国产午夜精品| 亚洲精品欧美二区三区中文字幕| 午夜精品久久久久久久久久| 激情图片小说一区| 不卡一区二区在线| 在线播放亚洲一区| 亚洲国产成人一区二区三区| 一区二区三区四区中文字幕| 免费的成人av| 99r国产精品| 日韩欧美一二区| 日韩码欧中文字| 九色综合国产一区二区三区| 不卡的电影网站| 91精品久久久久久久久99蜜臂| 国产亚洲va综合人人澡精品| 亚洲已满18点击进入久久| 久久爱www久久做| 91麻豆精品在线观看| 欧美一区二区三区性视频| 17c精品麻豆一区二区免费| 青青草视频一区| 色狠狠桃花综合| 久久综合丝袜日本网| 一区二区三区日本| 国产精品亚洲а∨天堂免在线| 欧洲亚洲精品在线| 国产精品久久久久一区二区三区| 亚洲一线二线三线视频| 国产a久久麻豆| 日韩欧美在线网站| 亚洲综合一二区| jizz一区二区| 久久这里只有精品6| 亚洲成人免费影院| 91麻豆国产福利精品| 久久久久久免费网| 奇米精品一区二区三区在线观看一| 97精品超碰一区二区三区| 久久免费国产精品| 蜜桃av一区二区| 欧美日韩一区二区在线观看视频| 国产欧美日韩综合| 国产自产高清不卡| 日韩免费高清av| 日韩成人免费电影| 欧美性受xxxx黑人xyx性爽| 亚洲三级在线观看| 国产99久久久国产精品潘金网站| 欧美精品在线观看播放| 亚洲一区二区三区四区在线免费观看| 成人a区在线观看| 久久久99精品久久| 国产一区二区看久久| 精品成人佐山爱一区二区| 人人超碰91尤物精品国产| 欧美久久久久免费| 亚洲成人高清在线| 精品视频在线免费| 亚洲国产日韩av| 欧美三级视频在线| 亚洲国产综合人成综合网站| 在线观看免费视频综合| 亚洲一区二区三区四区不卡| 91美女视频网站| 亚洲专区一二三| 欧美美女激情18p| 日韩中文字幕一区二区三区| 欧美日韩www| 久久99精品一区二区三区 | 欧美丝袜丝nylons| 亚洲超碰精品一区二区| 欧美日本在线看| 人人超碰91尤物精品国产| 亚洲精品一区二区三区蜜桃下载| 狠狠色伊人亚洲综合成人| 国产视频一区二区三区在线观看| 国产91精品一区二区麻豆亚洲| 国产精品网曝门| 色香蕉成人二区免费| 五月天欧美精品| 26uuu精品一区二区| 国产ts人妖一区二区| 亚洲精品乱码久久久久| 777奇米成人网| 国产一区二区成人久久免费影院| 精品国内二区三区| www.成人在线| 婷婷国产在线综合| 精品国产3级a| 一本到三区不卡视频| 午夜精品视频一区| 久久久久久综合| 欧美在线免费观看视频| 狂野欧美性猛交blacked| 中文一区二区完整视频在线观看| 日本精品一级二级|