META-INF 下创建content.xml
<?xml version='1.0' encoding='utf-8'?>
<!-- reloadable="true" crossContext="true"> -->
<Context>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="10" maxWait="200000" username="root" password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/key_manage?characterEncoding=UTF-8" />
</Context>
DBHelper.java
package com.kfx.commons;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBHelper {
/**
* MySQL数据库的默认驱动
*/
public static final String DATABASE_MYSQL = "org.gjt.mm.mysql.Driver";
/**
* 数据源
*/
private static DataSource ds;
/**
* 数据库连接
*/
private static Connection conn;
/**
* 获取数据库连接
* @return
*/
public static synchronized Connection openConn() {
Connection conn=null;
try {
if (ds == null) {
ds = getDataSource();
}
conn=ds.getConnection();
} catch (SQLException e) {
throw new RuntimeException("获取数据库连接异常", e);
}finally{
return conn;
}
}
/**
* 获取数据源
* @return ds
*/
public static DataSource getDataSource() {
try {
Context cxt = new InitialContext();
ds=(DataSource) cxt.lookup("java:comp/env/jdbc/mysql");
} catch (NamingException e) {
System.out.println(e);
throw new RuntimeException("jndi 异常");
}finally{
return ds;
}
}
/**
* 关闭连接
* @param conn
* @param st
* @param rs
*/
public static void close(Connection conn, Statement ps, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null&&!conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
throw new RuntimeException("关闭异常", e);
}
}
}