Java中DBCP数据库连接池方式
2016-04-02 11:06
555 查看
META-INF文件下新建context.xml,里面的内容为:
<?xml version="1.0" encoding="UTF-8"?> <Context path="/"> <Resource name="jdbc/bbs" scope="Shareable" type="javax.sql.DataSource" <!-- 不是org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory,这是JDK1.7及以下版本中的写法 JDK1.8中没有这个包,而是用org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory --> factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory" url="jdbc:mysql://localhost:3306/bbs" driverClassName ="com.mysql.jdbc.Driver" username="root" password="123456" /> </Context>数据库连接池专用类JndiBean.java:
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 util.DBPoolException; /** * 从系统配置的JNDI数据连接池中获得数据库连接 * * @author john * */ public class JndiBean { /** * 从系统配置的JNDI数据连接池中获得数据库连接 * * @return 获得的数据库连接,该连接在使用之后应该释放(close) * @throws NamingException * @throws SQLException * @throws Exception */ public static Connection getConnection() throws DBPoolException, NamingException, SQLException { Connection conn = null; Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); DataSource ds = (DataSource) envCtx.lookup("jdbc/bbs"); if (ds != null) { conn = ds.getConnection(); } else throw new DBPoolException("Can't find JNDI data source!"); if (conn == null) throw new DBPoolException("Can't establish connection!"); return conn; } public static void main(String args[]) throws DBPoolException, NamingException, SQLException{ Connection conn=JndiBean.getConnection(); System.out.println("OK"); } }实际连接中的使用:
public static boolean isUserExisted(String userName){ boolean result=false; Connection conn=null; try{ Context c = new InitialContext(); DataSource ds = (DataSource)c.lookup("java:comp/env/jdbc/bbs"); conn = ds.getConnection(); /*此处与一般数据库连接的处理相同,写上所需处理的sql语句、参数、结果的处理,以下为示例 String sql="select count(*) from user where username=?"; PreparedStatement ps=conn.prepareStatement(sql); ps.setString(1, userName); ResultSet rs=ps.executeQuery(); rs.next(); if(rs.getInt(1)>0)result=true;*/ }catch(Exception e){ e.printStackTrace(); } finally{ try { if(conn!=null&&!conn.isClosed()){ conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return result; }需要注意的是不同版本的JDK所需要的DBCP的包是不同的,可以到官网:http://commons.apache.org/proper/commons-dbcp/去查看。
相关文章推荐
- java写文件
- eclipse配置mybatis 的xml提示
- Eclipse 使用RecyclerView及CardView注意事项:
- JAVA 抽象路径
- java 泛型的使用
- 从头学习JAVA(四)
- java并发 使用ScheduledExecutor的温室控制器--thinking in java 21.7.5
- 兔子--R.java丢失原因及解决的方法
- Android—JNI调用简单实例解析/Eclipse无添加NDK的选项/JNI返回数组
- Java字节码浅析
- java基本知识点(二)
- java反射——获取类的方法信息
- Struts原理最经典的回答面试官的题目
- SpringMVC+Mybatis整合实现简单权限控制系统代码
- Java技术_Java千百问(0018)_switch如何使用
- java动态代理实现原理
- 一个简单的java缓存实现
- 如何设置eclipse的代码补全
- java多线程学习笔记:使用Callable和Future
- java缓存基本原理