此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【gtliao】截止到2008-07-28 19:40:43的历史汇总数据(不包括此帖):
发帖的总数量:14 发帖的总分数:470 每贴平均分数:33
回帖的总数量:16 得分贴总数量:3 回帖的得分率:18%
结贴的总数量:13 结贴的总分数:470
无满意结贴数:2 无满意结贴分:130
未结的帖子数:1 未结的总分数:0
结贴的百分比:92.86 % 结分的百分比:100.00%
无满意结贴率:15.38 % 无满意结分率:27.66 %
值得尊敬
楼主【gtliao】截止到2008-07-28 19:40:43的历史汇总数据(不包括此帖):
发帖的总数量:14 发帖的总分数:470 每贴平均分数:33
回帖的总数量:16 得分贴总数量:3 回帖的得分率:18%
结贴的总数量:13 结贴的总分数:470
无满意结贴数:2 无满意结贴分:130
未结的帖子数:1 未结的总分数:0
结贴的百分比:92.86 % 结分的百分比:100.00%
无满意结贴率:15.38 % 无满意结分率:27.66 %
值得尊敬
读配置文件获得jndi链接数据库
还有就是没人用DBCP创建连接池吗?
<Context path="/JSP" docBase="JSP">
<Resource name="jdbc/GUESTBOOK" scope="Shareable"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/GUESTBOOK">
<parameter>
<name>factory</name>
<value>
org.apache.commons.dbcp.BasicDataSourceFactory
</value>
</parameter> <!-- DBCP database connection settings -->
<!-- JDBC URL -->
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/GUESTBOOK</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123456</value>
</parameter> <!-- DBCP connection pooling options -->
<!-- 等待Connection的时间,单位ms,-1表不限制 -->
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<!-- 连接池中最少的Connection数,0表不限制 -->
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<!-- 连接池中最多的Connection数,0表示不限制 -->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
</ResourceParams>
</Context>
<resource-ref>
<description>JNDI JDBC DataSource</description>
<res-ref-name>jdbc/GUESTBOOK</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> 这样就可以使用DBCP连接池的功能了,可以这么取Connection:
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/GUESTBOOK");
Connection conn = ds.getConnection(); 下面这个JSP代码是个简单测试通过连接池取得连接的例子:test.jsp
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page contentType="text/html;charset=gb2312" %>
<%
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/GUESTBOOK");
Connection conn = ds.getConnection();
if(!conn.isClosed())
out.println("数据库连接成功!");
conn.close();
}
catch(SQLException e)
{
out.println(e.toString());
}%>
它不用设置那么多文件
先下载一个poolman的jar文件
接下来:
把jar包放到 /项目名称/web-inf/lib 下,poolman带的jar包很多,其中required就5个. poolman.xml是连接池的配置文件, 放到 /项目名称/web-inf/classes 下给一个最简单必要的配置文件内容<?xml version="1.0" encoding="UTF-8"?>
<poolman>
<management-mode>local</management-mode><datasource>数据库的名字
<dbname>SIPO</dbname>
jndi的名字
<jndiName>sipo</jndiName>
驱动字符串
<driver>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver>
连接字符串 <url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=SIPO</url>
数据库登录用户名
<username>sipo</username>
数据库登录密码
<password>sipo</password>
日志文件的文件名(含路径)
<logFile>sipo.log</logFile>
是否可用预执行
<poolPreparedStatements>true</poolPreparedStatements>
初始化后连接个数
<initialConnections>5</initialConnections>
最小连接个数
<minimumSize>5</minimumSize>
最大连接个数
<maximumSize>200</maximumSize>
达到最大连接个数后是否可以再创建新的连接
<maximumSoft>true</maximumSoft>
XX秒后destory连接
<connectionTimeout>600</connectionTimeout>
在返回连接池前用户可以保持XX秒
<userTimeout>12</userTimeout>
</datasource>
</poolman>最后在java中进行测试:
在你的数据库基类里面这样写就可以了import com.codestudio.sql.PoolMan;
import javax.sql.DataSource;
import java.sql.SQLException;public class DbCtrl {
private Connection con;
private Statement st;
public void getConnection() throws ClassNotFoundException,
SQLException {
con = null;
DataSource ds = PoolMan.findDataSource("sipo");
con = ds.getConnection();
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
}
}
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jndi名称" />
</bean>
2. 如使用自定义连接池, 可以自己实现服务器启动的接口. 只要将这个接口放入服务器启动的配置中, 启动时就会调用你的过程初始化你的连接池了. 这种方法比较通用, 除了连接池外, 你做还能装载配置, 初始化环境等工作. 只是不同的服务器的接口不一样
3. 无论使用什么方式使用连接池, 建议你将连接池的读取与你的代码分离, 程序代码会更简洁而且程序结构调整也会更方便