在用Mahout做推荐引擎,用到数据库连接池,在eclipse下,遇到配置问题,其实很简单,但花了不少时间,做个笔记
配置连接池
将以下内容保存(相应位置做相应修改)为context.xml(自己新建),放在web项目下的META-INF文件夹下:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource"
username="root" password="123456" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/Recommend" maxActive="15" maxIdle="7"
defaultTransactionIsolation="READ_COMMITTED" validationQuery="Select 1" />
</Context>
name 指定Resource的JNDI名字
auth 指定管理Resource的Manager,它有两个可选值:Container、Application
type 指定Resource所属的Java类名
username 指定连接数据库的用户名
password 指定连接数据库的口令
driverClassName 指定连接数据库的JDBC驱动程序
url 指定连接数据库的URL
maxActive 指定数据库连接池中处于活动状态的最大连接数目,0表示不受限制
maxIdle 指定数据库连接池中处于空闲状态的最大连接数目,0表示不受限制
defaultTransactionIsolation 连接池创建的连接的默认的TransactionIsolation状态
validationQuery SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,则查询必须是一个SQL SELECT并且必须返回至少一行记录
代码中引用连接池:
public class DBUtil { private static DataSource ds; public static void createDataSource() throws Exception { try { Context context = new InitialContext(); ds = (DataSource) context.lookup("java:comp/env/jdbc/movie");
if (ds == null) { System.out.println(ds.toString()); Thread.sleep(2000); ds = (DataSource) context.lookup("java:comp/env/jdbc/movie"); if (ds == null) { throw new Exception("get datasource failed!"); } } } catch (NamingException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }