日期:2014-05-16  浏览次数:20496 次

H2通过DataSource获取JDBC连接
package com.boonya.h2.jdbc.connection.datasource;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import org.h2.jdbcx.JdbcDataSource;
/**
 * DataSourceDBConnection.java
 * 功能:获取由JNDI绑定的数据源并创建JDBC连接[需要JNDI的支持]
 * @author boonya
 * @version 1.0 2013-03-11
 * 注意:启动会抛出异常,因为数据源没有加载到运行环境
 * [一般在web项目中使用这种方式获取连接]
 */
public class DataSourceDBConnection {
	
	/**
	 * 注册一个JNDI命名调用服务
	 */
	public static void register(){
		 JdbcDataSource ds = new JdbcDataSource();
		 ds.setURL("jdbc:h2:?/test");
		 ds.setUser("sa");
		 ds.setPassword("123456");
		 Context ctx;
		 try {
			ctx = new InitialContext();
			 try {
					ctx.bind("jdbc/dsName", ds);
				} catch (NamingException e) {
					e.printStackTrace();
				}
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 调用获取数据源建立JDBC连接
	 * @return
	 */
	public static Connection getConnection(){
		Context ctx;
		try {
			ctx = new InitialContext();
			 DataSource ds = (DataSource) ctx.lookup("jdbc/dsName");
			 try {
				Connection conn = ds.getConnection();
				return conn;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} catch (NamingException e) {
			e.printStackTrace();
		}
		return null;
		
	}
	public static void main(String[] args) {
		DataSourceDBConnection.register();
		System.out.println(DataSourceDBConnection.getConnection());
	}

}