/*
* 创建日期 2010-10-22
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package common.db;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import java.io.File;
import java.util.Hashtable;
import java.util.List;
import java.util.ArrayList;
public class DBPool
{
static Logger logger = Logger.getLogger(DBPool.class);
// 为了以后支持多数据库,所以也需要多数据库连接池
public static String JNDI_ROOT = "D:\\Tomcat 5.0\\conf\\Catalina\\localhost";
public static String jndiFileName = "hardware.xml";
private static Hashtable<String, DataSource> poolList = new Hashtable<String, DataSource>();
static {
String dbName = "";
String jndiName = "";
ArrayList list = getAllDbName();
try {
InitialContext ctx = new InitialContext();
for (int i = 0; i < list.size(); i++) {
dbName=list.get(i).toString();
jndiName = "java:comp/env/jdbc/" + dbName;
System.out.println("JNDIName:"+jndiName);
DataSource pool = (DataSource) ctx.lookup(jndiName);
if (pool != null) {
poolList.put(dbName, pool);
//System.out.println("数据库联接成功"+pool.toString());
} else {
//System.out.println("数据库联接失败");
}
}
} catch (NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool(String dbName) {
return (DataSource) poolList.get(dbName);
}
public static ArrayList getAllDbName() {
ArrayList<String> list = new ArrayList<String>();
Document doc = null;
try {
SAXBuilder builder = new SAXBuilder();
doc = builder.build(new File(JNDI_ROOT+"\\"+jndiFileName));
// System.out.println("good");
} catch (JDOMException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Element root = doc.getRootElement();// 获得根元素element
// System.out.println(root.getAttribute("docBase").getValue());
List resourceList = root.getChildren("Resource");
Element resource;
String resourceName = "";
String dbName = "";
for (int i = 0; i < resourceList.size(); i++) {
resource = (Element) resourceList.get(i);
resourceName = resource.getAttribute("name").getValue();
dbName = resourceName.substring("jdbc/".length(), resourceName
.length());
list.add(dbName);
}
return list;
}
public static void main(String[] args) {
DBPool.getAllDbName();
}
}
分享到:
相关推荐
- **手动导入**: 下载SQLite3源码,将其添加到Xcode项目中,并在Build Phases中设置Link Binary With Libraries。 2. **初始化SQLite连接**: 使用`GRDB.swift`为例,首先创建一个`DatabasePool`实例,这将打开到...
<ResourceLink name="jdbc/MyDB" global="jdbc/MyDB" type="javax.sql.DataSource"/> ``` 这将把全局的`<Resource>`引用到当前Web应用中。 三、使用数据源 在Java代码中,通过JNDI查找机制获取数据源并创建数据库...
CREATE DATABASE LINK master_db_link CONNECT TO streams_admin IDENTIFIED BY password USING 'master_db'; ``` 这样就完成了 DBlink 的创建。 ##### 创建流队列 流队列用于存储 Streams 捕捉到的数据更改事件...
<description>MySQL DB Connection Pool <res-ref-name>jdbc/DBPool <res-type>javax.sql.DataSource <res-auth>Container <res-sharing-scope>Shareable ``` 这个配置中,我们设置了数据源参考的描述、名称、...
CREATE DATABASE LINK db_link_name CONNECT TO remote_user IDENTIFIED BY remote_password USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=remote_host)(PORT=port_number))(CONNECT_DATA=(SERVER=DEDICATED)...
<jdbc-connection-pool name="h2Pool" res-type="javax.sql.DataSource" driver-classname="org.h2.Driver"> ~/test"> <property name="User" value="sa"></property> <property name="Password" value=""></...
OLEDB providers can run in-process or out of process. When running out of process, they run under the context of DLLHOST.EXE. Memory Leak To reserve or commit memory and unintentionally not release ...
out.print("DB connection pool run OK!"); conn.close(); } catch (Exception ex) { out.print(ex.getMessage()); ex.printStackTrace(); } %> ``` 在这个例子中,我们使用`InitialContext`创建了一个JNDI...
- 基于异步在线日志 CDC 进行优化,引入了 DB Link 机制,允许源表和目标表位于不同的数据库实例中。 ##### 归档日志 CDC (Asynchronous Auto Log Archive Change Data Capture Configuration) - 使用归档日志作为...
<ResourceLink name="jdbc/OracleDB" global="jdbc/OracleDB" type="javax.sql.DataSource"/> ``` 这里`global`属性引用了`server.xml`中的资源名称。 4. **应用中获取数据源**:在Java代码中,通过JNDI查找并...
<description>MySQL DB Connection Pool <res-ref-name>jdbc/DBPool <res-type>javax.sql.DataSource <res-auth>Container <res-sharing-scope>Shareable ... ``` 在这里: - `description`:描述数据源的...
其次,DataSource支持连接池(Connection Pool)和分布式事务处理,这大大提高了性能和系统的可扩展性。连接池能够预先创建并管理多个数据库连接,当应用需要时,可以从池中获取连接,用完后再归还,而不是每次请求...
Tomcat默认使用的是Apache的DBCP(DB Connection Pool)或更现代的C3P0连接池。这两种连接池组件都可以通过修改Tomcat的配置文件来启用和配置。配置主要涉及以下几个步骤: 1. **添加依赖**:首先,确保你的项目...
- SHARED_POOL_SIZE: 共享池的大小,包含了PL/SQL代码、解析树等。 3. - DBWn: 数据写进程,负责将数据缓冲区中的更改写入数据文件。 - LGWR: 日志写进程,将日志缓冲区的内容写入重做日志文件。 - SMON: 系统...
database: setting.mysql.db }); module.exports = pool; ``` ##### 模糊查询逻辑 当用户在前端提交查询请求时,后端需要解析请求参数,并执行SQL语句来查询匹配的数据。 ```javascript app.get('/like', ...