📄 datasourceconnector.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 + -