⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datasourceconnector.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
字号:
/*
 * DataSourceConnector.java
 *
 * Created on 2002/03/19, 11:37
 */

package jp.co.intra_mart.framework.base.data;

import java.sql.Connection;
import java.util.Iterator;
import java.util.ResourceBundle;
import javax.sql.DataSource;
import javax.naming.InitialContext;

import jp.co.intra_mart.framework.system.log.LogManager;
import jp.co.intra_mart.framework.system.log.LogConstant;

import java.sql.SQLException;
import java.util.MissingResourceException;
import javax.naming.NamingException;

/**
 * DataSource偵娭楢偡傞僨乕僞僐僱僋僞偱偡丅
 * 偙偺僨乕僞僐僱僋僞偼Java Transaction API(JTA)偺UserTransaction偺拞偱巊偆偙偲偑慜採偲側偭偰偄傑偡丅
 * 傑偨丄{@link #KEY_JNDI_NAME}偱巜掕偝傟傞僷儔儊乕僞偵DataSource偺JNDI柤傪昁偢巜掕偟偰偔偩偝偄丅
 *
 * @author INTRAMART
 * @version 1.0
 */
public class DataSourceConnector extends DBConnector {

    /**
     * DataSource偺JNDI柤偺僉乕
     */
    public static final String KEY_JNDI_NAME = "jndi";

    /**
     * DataSourceConnector傪怴婯偵惗惉偟傑偡丅
     */
    public DataSourceConnector() {
        super();
    }

    /**
     * 僐儈僢僩偟傑偡丅
     * 幚嵺偵偼偙偺僋儔僗偱偼偙偺儊僜僢僪偼壗傕偟傑偣傫丅
     *
     * @throws DataConnectException 僐儈僢僩偵幐攕
     */
    public void commit() throws DataConnectException {
        super.commit();
    }

    /**
     * 儘乕儖僶僢僋偟傑偡丅
     * 幚嵺偵偼偙偺僋儔僗偱偼偙偺儊僜僢僪偼壗傕偟傑偣傫丅
     *
     * @throws DataConnectException 儘乕儖僶僢僋偵幐攕
     */
    public void rollback() throws DataConnectException {
        super.rollback();
    }

    /**
     * 僨乕僞僗僩傾偺帒尮傪夝曻偟傑偡丅
     *
     * @throws DataConnectException 帒尮奐曻偵幐攕
     */
    public void release() throws DataConnectException {
        Iterator connections;
        Connection connection;
        DataConnectException exception = null;

        if (this.resources != null) {
            connections = this.resources.values().iterator();
            while (connections.hasNext()) {
                connection = (Connection)connections.next();
                try {
                    connection.close();
                } catch (Exception e) {
                    LogManager.getLogManager().getLogAgent().sendMessage(
                        DataSourceConnector.class.getName(),
                        LogConstant.LEVEL_ERROR,
                        DataManager.LOG_HEAD + e.getMessage(),
                        e);
                    String message = null;
                    try {
                        message =
                            ResourceBundle.getBundle(
                                "jp.co.intra_mart.framework.base.data.i18n")
                                    .getString(
                                "Common.FailedToReleaseResource");
                    } catch (MissingResourceException ex) {
                    }
                    exception = new DataConnectException(message, e);
                }
            }
        }

        if (exception != null) {
            throw exception;
        }
    }

    /**
     * 愙懕愭偺儕僜乕僗傪捛壛偟傑偡丅
     *
     * @return 僐僱僋僔儑儞
     * @param resource 儕僜乕僗
     * @param params 儕僜乕僗偺僷儔儊乕僞
     * @throws DataConnectException 愙懕偵幐攕 */
    protected Connection putResource(String resource, ResourceParam[] params)
        throws DataConnectException {
        String key;
        String value;
        String jndiName = null;
        Connection connection = null;
        InitialContext context = null;
        DataSource dataSource = null;

        // 僷儔儊乕僞偺庢摼
        if (params != null) {
            for (int i = 0; i < params.length; i++) {
                key = params[i].getName();
                value = params[i].getValue();
                if (key.equals(KEY_JNDI_NAME)) {
                    // DataSource偺JNDI柤偺応崌
                    jndiName = value;
                }
            }
        }
        if (jndiName == null || jndiName.trim().equals("")) {
            String message = null;
            try {
                message =
                    ResourceBundle.getBundle(
                        "jp.co.intra_mart.framework.base.data.i18n").getString(
                        "DataSourceConnector.LookupNameNotDeclared");
            } catch (MissingResourceException e) {
            }
            throw new DataConnectException(
                message + " : resource = " + resource);
        }

        // 僐僱僋僔儑儞偺捛壛
        try {
            context = new InitialContext();
        } catch (NamingException e) {
            throw new DataConnectException(e.getMessage(), e);
        }
        try {
            dataSource = (DataSource)context.lookup(jndiName);
        } catch (NamingException e) {
            throw new DataConnectException(e.getMessage(), e);
        }
        try {
            connection = dataSource.getConnection();
        } catch (SQLException e) {
            throw new DataConnectException(e.getMessage(), e);
        }
        try {
            this.resources.put(resource, connection);
        } catch (Exception e) {
            String message = null;
            try {
                message =
                    ResourceBundle.getBundle(
                        "jp.co.intra_mart.framework.base.data.i18n").getString(
                        "Common.FailedToAddConnection");
            } catch (MissingResourceException ex) {
            }
            throw new DataConnectException(
                message + " : resource = " + resource,
                e);
        }

        return connection;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -