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

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

?? usertransactionhelper.java

?? Java中非常實用流控制工具
?? JAVA
字號:

/* 
 * Copyright 2004-2005 OpenSymphony 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 
 * use this file except in compliance with the License. You may obtain a copy 
 * of the License at 
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0 
 *   
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
 * License for the specific language governing permissions and limitations 
 * under the License.
 * 
 */

/*
 * Previously Copyright (c) 2001-2004 James House
 */
package org.quartz.ee.jta;

import javax.naming.InitialContext;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.SchedulerException;

/**
 * <p>
 * A helper for obtaining a handle to a UserTransaction...
 * </p>
 * <p>
 * To ensure proper cleanup of the InitalContext used to create/lookup
 * the UserTransaction, be sure to always call returnUserTransaction() when
 * you are done with the UserTransaction. 
 * </p>
 * 
 * @author James House
 */
public class UserTransactionHelper {
    
    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Constants.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    public static final String DEFAULT_USER_TX_LOCATION = "java:comp/UserTransaction";
    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Data members.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    private static String userTxURL = DEFAULT_USER_TX_LOCATION;
    
    private static Log log = LogFactory.getLog(UserTransactionHelper.class);
    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Constructors.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    /**
     * Do not allow the creation of an all static utility class.
     */
    private UserTransactionHelper() {
    }

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * 
     * Interface.
     * 
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    public static String getUserTxLocation() {
        return userTxURL;
    }

    /**
     * Set the JNDI URL at which the Application Server's UserTransaction can
     * be found. If not set, the default value is "java:comp/UserTransaction" -
     * which works for nearly all application servers.
     */
    public static void setUserTxLocation(String userTxURL) {
        if (userTxURL != null) {
            UserTransactionHelper.userTxURL = userTxURL;
        }
    }

    /**
     * Create/Lookup a UserTransaction in the InitialContext via the
     * name set in setUserTxLocation().
     */
    public static UserTransaction lookupUserTransaction() throws SchedulerException {
        return new UserTransactionWithContext();
    }
    
    /**
     * Return a UserTransaction that was retrieved via getUserTransaction().
     * This will make sure that the InitalContext used to lookup/create the 
     * UserTransaction is properly cleaned up.
     */
    public static void returnUserTransaction(UserTransaction userTransaction) {
        if ((userTransaction != null) && 
            (userTransaction instanceof UserTransactionWithContext)) {
            UserTransactionWithContext userTransactionWithContext = 
                (UserTransactionWithContext)userTransaction;
            
            userTransactionWithContext.closeContext();
        }
    }


    /**
     * This class wraps a UserTransaction with the InitialContext that was used
     * to look it up, so that when the UserTransaction is returned to the 
     * UserTransactionHelper the InitialContext can be closed.
     */
    private static class UserTransactionWithContext implements UserTransaction {
        InitialContext context;
        UserTransaction userTransaction;
        
        public UserTransactionWithContext() throws SchedulerException {
            try {
                context = new InitialContext();
            } catch (Throwable t) {
                throw new SchedulerException(
                    "UserTransactionHelper failed to create InitialContext to lookup/create UserTransaction.", t);
            }
            
            try {
                userTransaction = (UserTransaction)context.lookup(userTxURL);
            } catch (Throwable t) {
                closeContext();
                throw new SchedulerException(
                    "UserTransactionHelper could not lookup/create UserTransaction.",
                    t);
            }
            
            if (userTransaction == null) {
                closeContext();
                throw new SchedulerException(
                    "UserTransactionHelper could not lookup/create UserTransaction from the InitialContext.");
            }
        }

        /**
         * Close the InitialContext that was used to lookup/create the
         * underlying UserTransaction.
         */
        public void closeContext() {
            try {
                if (context != null) {
                    context.close();
                }
            } catch (Throwable t) {
                getLog().warn("Failed to close InitialContext used to get a UserTransaction.", t);
            }
            context = null;
        }

        /**
         * When we are being garbage collected, make sure we were properly
         * returned to the UserTransactionHelper.
         */
        protected void finalize() throws Throwable {
            try {
                if (context != null) {
                    getLog().warn("UserTransaction was never returned to the UserTransactionHelper.");
                    closeContext();
                }
            } finally {
                super.finalize();
            }
        }

        private static Log getLog() {
            return LogFactory.getLog(UserTransactionWithContext.class);
        }
        
        // Wrapper methods that just delegate to the underlying UserTransaction
        
        public void begin() throws NotSupportedException, SystemException {
            userTransaction.begin();
        }

        public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException {
            userTransaction.commit();        
        }

        public void rollback() throws IllegalStateException, SecurityException, SystemException {
            userTransaction.rollback();
        }

        public void setRollbackOnly() throws IllegalStateException, SystemException {
            userTransaction.setRollbackOnly();
        }

        public int getStatus() throws SystemException {
            return userTransaction.getStatus();
        }

        public void setTransactionTimeout(int seconds) throws SystemException {
            userTransaction.setTransactionTimeout(seconds);
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区在线| 337p亚洲精品色噜噜| 亚洲不卡av一区二区三区| 日韩欧美另类在线| 在线亚洲+欧美+日本专区| 国产精品综合一区二区三区| 亚洲一区二区精品视频| 久久国产剧场电影| 久久一二三国产| 欧美性感一类影片在线播放| 国产a区久久久| 日本一区二区动态图| 91国偷自产一区二区三区成为亚洲经典 | 91在线看国产| 激情综合一区二区三区| 视频在线在亚洲| 亚洲在线免费播放| 亚洲欧美日韩中文字幕一区二区三区| 欧美视频一区二区| 色一区在线观看| www.久久久久久久久| 成人在线视频首页| 国产在线播放一区二区三区| 青草av.久久免费一区| 极品美女销魂一区二区三区| 日韩在线a电影| 同产精品九九九| 亚洲.国产.中文慕字在线| 亚洲婷婷综合色高清在线| 国产视频一区二区在线| 日韩免费在线观看| 日韩欧美国产电影| 欧美一区二区三级| 欧美视频在线不卡| 播五月开心婷婷综合| 成人精品视频一区二区三区尤物| 激情偷乱视频一区二区三区| 麻豆精品在线视频| 三级一区在线视频先锋| 日韩在线卡一卡二| 免费不卡在线视频| 激情综合色播激情啊| 国内成人精品2018免费看| 久久se这里有精品| 国产一区中文字幕| 国产精品一二三在| 久久精品久久久精品美女| 奇米色一区二区| 韩国午夜理伦三级不卡影院| 国产一区二区不卡| 国产老肥熟一区二区三区| 国产福利一区二区三区视频在线| 国产99久久久久久免费看农村| 国产乱理伦片在线观看夜一区| 经典三级一区二区| 午夜视频久久久久久| 日韩高清欧美激情| 一区二区三区在线观看欧美| 亚洲国产精品一区二区久久 | 久久久久久久久久久电影| www欧美成人18+| 欧美一激情一区二区三区| 91麻豆精品国产自产在线| 久久亚洲综合av| 国产精品情趣视频| 亚洲视频在线一区二区| 综合自拍亚洲综合图不卡区| 亚洲精品伦理在线| 午夜成人免费视频| 国产一二精品视频| 国产成人综合在线| 欧美综合欧美视频| 26uuu精品一区二区在线观看| 国产精品久久久久久久久搜平片| 一区二区三区四区不卡视频| 日韩激情一二三区| 高潮精品一区videoshd| 99riav久久精品riav| 色哟哟在线观看一区二区三区| 欧美午夜电影一区| 精品久久久久久综合日本欧美| 中文字幕国产一区| 亚洲第一主播视频| 岛国精品在线播放| 91精品国产黑色紧身裤美女| 日本一区二区三区在线不卡| 香蕉成人伊视频在线观看| 国产91精品入口| 91麻豆精品国产91久久久更新时间 | 91啪亚洲精品| 日韩精品一区二区三区中文不卡| 国产精品美女一区二区三区| 人妖欧美一区二区| 97se狠狠狠综合亚洲狠狠| 91精品国产色综合久久久蜜香臀| 中文字幕在线播放不卡一区| 久久99国产精品尤物| 美国三级日本三级久久99| 久久精品国产免费| 色婷婷综合久久久久中文| 久久久久国产精品厨房| 视频一区二区国产| 日本黄色一区二区| 国产精品嫩草99a| 久久国内精品视频| 99久久免费国产| 久久久久久久一区| 美女尤物国产一区| 777欧美精品| 亚洲已满18点击进入久久| kk眼镜猥琐国模调教系列一区二区| 日韩精品一区二区三区在线观看| 亚洲国产精品自拍| 欧美综合一区二区| 亚洲品质自拍视频网站| 成人免费av网站| 国产日韩欧美电影| 国产精品一区2区| 国产成人av资源| 日韩丝袜情趣美女图片| 亚洲欧洲日韩女同| 成人av网站大全| 国产精品污污网站在线观看| 国产电影精品久久禁18| 日韩欧美电影在线| 免费精品99久久国产综合精品| 欧美日韩夫妻久久| 午夜伦欧美伦电影理论片| 欧美亚洲综合另类| 亚洲小说欧美激情另类| 欧美制服丝袜第一页| 亚洲国产视频直播| 欧美日韩一区 二区 三区 久久精品| 亚洲色图视频网| 色婷婷综合五月| 一区二区三区免费网站| 91黄色小视频| 亚洲va国产天堂va久久en| 欧美日韩国产综合一区二区三区| 亚洲高清三级视频| 91麻豆精品国产91久久久使用方法 | 日韩一级片网址| 老司机午夜精品| 久久精品一区二区三区不卡牛牛| 国产福利一区二区| 国产精品国产三级国产有无不卡| 成人18视频在线播放| 尤物av一区二区| 国产精品日日摸夜夜摸av| 成人app网站| 亚洲第一在线综合网站| 日韩欧美一区二区久久婷婷| 黑人精品欧美一区二区蜜桃| 欧美激情一区二区三区四区| 99久久99久久精品免费观看| 一区二区高清在线| 欧美一区二区三区电影| 国产一区欧美二区| 亚洲欧洲国产日本综合| 欧美视频日韩视频| 久久99精品久久久久久久久久久久| 久久久久久久久久美女| 色综合 综合色| 精品一区二区三区在线播放视频| 日本一区二区综合亚洲| 欧美午夜精品免费| 国产一区不卡视频| 一区二区在线看| 日韩免费视频线观看| 成人黄色免费短视频| 亚洲成人av电影在线| 国产无遮挡一区二区三区毛片日本 | 精品一区二区三区在线观看| 国产精品国产三级国产aⅴ原创| 91福利国产精品| 国产一区二区三区电影在线观看| 中文字幕永久在线不卡| 欧美一级片在线观看| 成人18视频在线播放| 捆绑紧缚一区二区三区视频| 亚洲欧美日韩人成在线播放| 日韩午夜激情av| 一本大道综合伊人精品热热| 久久99国内精品| 亚洲一区二区三区中文字幕 | 无码av免费一区二区三区试看 | 日韩欧美中文字幕一区| a美女胸又www黄视频久久| 免费观看日韩电影| 亚洲免费观看视频| 久久久精品中文字幕麻豆发布| 欧美丝袜第三区| 不卡电影一区二区三区| 精品影视av免费| 天天综合色天天综合色h| 17c精品麻豆一区二区免费| 久久综合久久久久88| 3d动漫精品啪啪一区二区竹菊| 99精品视频在线观看| 国产精品小仙女|