连接先建立一些连接,并且这些连接允许共享,因此这样就节省了每次连接的时间开销。Mysql数据库为例,连接池在Tomcat中的配置与使用。
1、创建数据库Student,表student
2、配置serverxml文件。Tomcat安装目录下conf中serverxml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javaxsqlDataSource"
password=""
driverClassName="commysqljdbcDriver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定连接池的名称
type:指定连接池的类,他负责连接池的事务处理
url:指定要连接的数据库
driverClassName:指定连接数据库使用的驱动程序
username:数据库用户名
password:数据库密码
maxWait:指定最大建立连接等待时间,如果超过此时间将接到异常
maxIdle:指定连接池中连接的最大空闲数
maxActive:指定连接池最大连接数
3、配置webxml文件。
<web-app>
<resource-ref>
<description>mysql数据库连接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javaxsqlDataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置contextxml文件
与serverxml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javaxsqlDataSource"
global="jdbc/DBPool"
/>
</Context>
5、测试
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext()lookup("java:comp/env");
//检索指定的对象,返回此上下文的一个新实例
pool = (DataSource)envlookup("jdbc/DBPool");
//获得数据库连接池
if(pool==null){outprintl("找不到指定的连接池!");}
con = poolgetConnection();
st = concreateStatement();
rs = stexecuteQuery("select from student");
}catch(Exception ex){outprintl(netoString());}
用tomcat的数据库连接池,修改tomcat配置文件serverxml,在context标签中加上
<Context path="" docBase="ROOT" debug="0">
<Resource name="jdbc/OracleDB" auth="Container" type="javaxsqlDataSource"/>
<ResourceParams name="jdbc/OracleDB">
<parameter>
<name>factory</name>
<value>orgapachecommonsdbcpBasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oraclejdbcdriverOracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@101161:1521:dbname</value>
</parameter>
<parameter>
<name>username</name>
<value>yourname</value>
</parameter>
<parameter>
<name>password</name>
<value>yourpasswd</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>1000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>20</value> </parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
maxActive 是最大激活连接数,这里取值为1000,表示同时最多有1000个数据库连接。maxIdle是最大的空闲连接数,这里取值为20,表示即使没有数据库连 接时依然可以保持20空闲的连接,而不被清除,随时处于待命状态。MaxWait是最大等待秒钟数,这里取值-1,表示无限等待,直到超时为止,也可取值 9000,表示9秒后超时。
到MySQL的网站上去下载MySQL的JDBC连接驱动mysql-connector-java-3111-binjar,放到Tomcat的\common\lib目录下。
Tomcat的JDBC下载地址:>
方法有两种
与服务器类型是无关的,主要是jar包的放入有关
第一种(C3P0的配置方法为例)
第一步:加载数据驱动包。(C3P0还要导入C3P0连接池使用的Jar:c3p0-090jar)
Tomcate 55 将数据库驱动包拷贝到tomcathome/common/lib目录下。
Tomcate 60 将数据库驱动包拷贝到tomcathome/lib目录下。
地二步:配置tomcat中servicexml:
<!--在tomcat中配置连接池属性说明
docBase web工程的文件路径
path web工程url的根目录
reloadable 当tomcat重启时候,是否重新加载配置文件
name 数据源的JNDI名
type 资源的类型,此处是数据源
driverClass数据库驱动类,根据不同的数据库 驱动类不同(我用的是MS SQL SERVICE2005)
jdbcUrl 连接字符串
factory 连接工厂类-->
<Context docBase="DataSrc61" path="/DataSrc61" reloadable="true">
<Resource name="jdbc/ds" auth="Container" type="commchangev2c3p0ComboPooledDataSource"
maxPoolSize="200" minPoolSize="1" initialPoolSize="100" acquireIncrement="2"
idleConnectionTestPeriod="60" maxIdleTime="60"
driverClass="commicrosoftsqlserverjdbcSQLServerDriver"
user="sa" password=""
jdbcUrl="jdbc:sqlserver://localhost:1433;DatabaseName=pubs"
factory="orgapachenamingfactoryBeanFactory"/>
</Context>
第三步:配置工程中的webxml文件
<!– 声名工程所需资源-->
<resource-ref>
<!– JDNI资源名 -->
<res-ref-name>jdbc/ds</res-ref-name>
<!– 资源类型 -->
<res-type>commchangev2c3p0ComboPooledDataSource</res-type>
<!– 资源范围 -->
<res-auth>Container</res-auth>
</resource-ref>
第四步:写连接类
import javaxnamingContext;
import javaxnamingInitialContext;
import javaxsqlDataSource;
import javasqlConnection;
public class JndiDao {
public static Connection getConnectionPool3()throws Exception
{
Connection con=null;
Context conx=new InitialContext();
DataSource ds=(DataSource)conxlookup("java:comp/env/jdbc/ds");
con=dsgetConnection();
return con;
}
}
第二种:(DBCP为例)
第一步:
导入DBCP连接池用到的Jar:naming-factory-dbcpjar(JVM使用)
(commons-dbcp-122jar为tomcat中默认有的DBCP连接池的包,而C3P0的话就要在tomcat中导入C3P0连接池使用的Jar:c3p0-090jar)
和数据库驱动包
第二步:
import orgapachetomcatdbcpdbcpBasicDataSource;//数据源
import orgapachetomcatdbcpdbcpConnectionFactory;
import orgapachetomcatdbcpdbcpDataSourceConnectionFactory;
import javasqlConnection;
public class DbcpDao {
static BasicDataSource bds=null;
static ConnectionFactory cf=null;
static
{
bds=new BasicDataSource();
bdssetDriverClassName("commicrosoftsqlserverjdbcSQLServerDriver");
bdssetUrl("jdbc:sqlserver://127001:1433;DatabaseName=pubs");
bdssetUsername("sa");
bdssetPassword("123");
//对连接池进行设置
bdssetMaxActive(300);
bdssetInitialSize(100);
bdssetMaxWait(10000);
bdssetMaxIdle(50);
}
public static Connection getConnectionPool()throws Exception
{
Connection con=null;
//创建出一个位于jvm中的DBCP连接池
cf=new DataSourceConnectionFactory(bds);
//从创建好的连接池中取得连接
con=cfcreateConnection();
return con;
}
public static void main(String[] args) {
try {
long time1=SystemcurrentTimeMillis();
//测试获得200个连接所用的时间
Connection[] cons=new Connection[200];
for(int i=0;i<conslength;i++)
{
cons[i]=DbcpDaogetConnectionPool();
}
long time2=SystemcurrentTimeMillis();
Systemoutprintln(time2-time1);
} catch (Exception e) {
// TODO: handle exception
eprintStackTrace();
}
}
}
以上就是关于MySql数据库连接池如何配置全部的内容,包括:MySql数据库连接池如何配置、tomcat 怎么修改服务器的并发连接数、tomcat8.0怎么与mysql数据库连接池连接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)