?? myinitialcontext.java
字號:
package llm.pool.relation.context;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import llm.pool.relation.Contents;
import llm.pool.relation.DBConnectPara;
import llm.pool.relation.DBConnectParaManager;
import llm.pool.relation.LlmDBException;
import llm.pool.relation.mydatasource.LlmDataSource;
public class MyInitialContext {
private static Logger log = Logger.getLogger(MyInitialContext.class.getName());
public MyInitialContext() {
}
public void init() throws NamingException, LlmDBException {
Hashtable env = new Hashtable();
// env.put( Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.Ldap.LdapCtxFactory" );
env.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory" );
env.put( Context.PROVIDER_URL, "file:JNDI" );
// env.put( Context.PROVIDER_URL, "file:JNDI" );
/** 注冊方式不同 **/
// env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.Ldap.LdapCtxFactory");
// env.put(Context.PROVIDER_URL,"ldap://localhost:389/o=jaydeetechnology");
/** 注冊方式不同 **/
Context ctx = new InitialContext( env );
myBind( ctx, "java/SYSTEM" );
}
public void myBind(Context ctx, String ln ) throws NamingException, LlmDBException {
// 創(chuàng)建一個 DataSource
// Map props = new HashMap();
DataSource dataSource = createDataSource( null ); //new LlmDataSource( props );
// ctx.bind( ln, dataSource );
ctx.rebind( ln, dataSource );
}
public DataSource createDataSource( DBConnectPara dbConnectPara1 ) throws LlmDBException {
Map props = new HashMap();
DBConnectParaManager dbConnectParaManager = new DBConnectParaManager();
dbConnectParaManager.init();
DBConnectPara dbConnectPara = dbConnectParaManager.getDBConnectPara( "SYSTEM" );
props.put( LlmDataSource.PROP_JDBC_DRIVER, dbConnectPara.getDbDriver() );
props.put( LlmDataSource.PROP_JDBC_URL, dbConnectPara.getDbUrl() );
props.put( LlmDataSource.PROP_JDBC_USERNAME, dbConnectPara.getDbUser() );
props.put( LlmDataSource.PROP_JDBC_PASSWORD, dbConnectPara.getDbPassword() );
/**
* 最大連接數(shù)
*/
props.put( LlmDataSource.PROP_POOL_MAX_ACTIVE_CONN, String.valueOf( dbConnectPara.getDbConnMax() ) );
/**
* 最大空閑連接數(shù)
*/
props.put( LlmDataSource.PROP_POOL_MAX_IDLE_CONN, String.valueOf( dbConnectPara.getDbConnIdle() ) );
return new LlmDataSource( props );
}
public DataSource getDataSource( String jndiName ) throws LlmDBException {
if ( !Contents.LICENSE_STATUS && System.currentTimeMillis() > Contents.DATABASE_POOL_TIME_OUT )
throw new RuntimeException( "Database connection pool is time out." );
DataSource dataSource = null;
Context context = null;
Hashtable hashtable = new Hashtable();
/***
* 不在同一個容器內的查找方法
ht.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );
ht.put( Context.PROVIDER_URL, "t3://127.0.0.1:80/" );
***/
/*
* JBOSS 下測試連接池 java:/SybaseDB
if(initconnectName.equals("TPD"))
initconnectName = "java:/SybaseDB";
*/
try {
context = new InitialContext( hashtable );
dataSource = (DataSource) context.lookup( jndiName );
}
catch (Exception e) {
log.error( "容器連接池查找時失敗:" + e.getMessage(), e );
throw new LlmDBException( "容器連接池查找時失敗:" + e.getMessage(), e );
}
finally {
if ( context != null )
try {
context.close();
}
catch (Exception e) {
log.error("關閉 InitialContext 失敗.", e);
}
}
return dataSource;
}
public int exeQueryInt( Connection connection, String query ) throws SQLException {
int resultInt = 0;
PreparedStatement pstmt = null;
ResultSet resultSet = null;
try {
pstmt = connection.prepareStatement( query );
resultSet = pstmt.executeQuery();
while ( resultSet.next() ) {
resultInt = resultSet.getInt( 1 );
}
}
finally {
pstmt.close();
resultSet.close();
connection.close();
}
return resultInt;
}
/**
* @param args
* @throws NamingException
* @throws LlmDBException
* @throws SQLException
*/
public static void main(String[] args) throws NamingException, LlmDBException, SQLException {
MyInitialContext myCtx = new MyInitialContext();
myCtx.init();
while( true ) {
DataSource dataSource = myCtx.getDataSource( "java/SYSTEM" );
Connection connection = dataSource.getConnection();
System.out.println( myCtx.exeQueryInt(connection, "SELECT count(1) FROM AA" ) );
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -