mysql jdbc 连接池配置

数据库使用:MySQL 5.5.55

web服务器使用:tomcat 7

文档:

mysql jdbc connect 链接文档:点击打开链接

连接池在Tomcat配置文档:点击打开链接

连接池使用文档:点击打开链接

问题:

由于web服务器版本问题,无法完全按照官方文档给出说明配置,有以下问题:

在web服务器中,server.xml 文件中缺少上下文结构(<context></context>),在本版本中,我的web服务器上下文结构在context.xml中

粘贴文档中:

配置上下文xml

 <Context ....>

  ...

  <Resource name="jdbc/MySQLDB"
               auth="Container"
               type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/MySQLDB">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

    <parameter>
      <name>maxActive</name>
      <value>10</value>
    </parameter>

    <parameter>
      <name>maxIdle</name>
      <value>5</value>
    </parameter>

    <parameter>
      <name>validationQuery</name>
      <value>SELECT 1</value>
    </parameter>

    <parameter>
      <name>testOnBorrow</name>
      <value>true</value>
    </parameter>

    <parameter>
      <name>testWhileIdle</name>
      <value>true</value>
    </parameter>

    <parameter>
      <name>timeBetweenEvictionRunsMillis</name>
      <value>10000</value>
    </parameter>

    <parameter>
      <name>minEvictableIdleTimeMillis</name>
      <value>60000</value>
    </parameter>

    <parameter>
     <name>username</name>
     <value>someuser</value>
    </parameter>

    <parameter>
     <name>password</name>
     <value>somepass</value>
    </parameter>

    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter>

    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/test</value>
    </parameter>

  </ResourceParams>
</Context>
在我的web服务器中报错无法匹配 resourceparams

后改成

<Resource name="jdbc/MySQLDB"
               auth="Container"
               type="javax.sql.DataSource"
               description="dmst"  
			    password="password"  
			    username="root"  
			    driverClassName="com.mysql.jdbc.Driver"  
			    url="jdbc:mysql://localhost:3306/test"  />

成功配置。

在java中新建DBconnection类

public class DBconnect {
	public static  Connection getConnection() throws SQLException{
		 /*
	     * Create a JNDI Initial context to be able to
	     *  lookup  the DataSource
	     *
	     * In production-level code, this should be cached as
	     * an instance or static variable, as it can
	     * be quite expensive to create a JNDI context.
	     *
	     * Note: This code only works when you are using servlets
	     * or EJBs in a J2EE application server. If you are
	     * using connection pooling in standalone Java code, you
	     * will have to create/configure datasources using whatever
	     * mechanisms your particular connection pooling library
	     * provides.
	     */

	    InitialContext ctx=null;
		try {
			ctx = new InitialContext();
		} catch (NamingException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}

	     /*
	      * Lookup the DataSource, which will be backed by a pool
	      * that the application server provides. DataSource instances
	      * are also a good candidate for caching as an instance
	      * variable, as JNDI lookups can be expensive as well.
	      */

	    DataSource ds = null;
		try {
			ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MySQLDB");
		} catch (NamingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	    /*
	     * The following code is what would actually be in your
	     * Servlet, JSP or EJB 'service' method...where you need
	     * to work with a JDBC connection.
	     */

	      return ds.getConnection();
	}

}

需要注意的是:在类中获取数据源方法:

			ds = (DataSource)ctx.lookup("java:comp/env/jdbc/MySQLDB");
此处 格式应为java:comp/env/+(ResourceParams中的name)

至此,配置成功。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
MySQL数据库连接池配置可以通过以下步骤实现: 1. 在MySQL中创建一个用户,并授权该用户可以访问需要连接的数据库。 2. 在Java程序中引入数据库连接池的相关依赖,比如常用的Apache Commons DBCP或者HikariCP等。 3. 在Java程序中配置连接池参数,比如最大连接数、最小连接数、连接超时时间等。 4. 在Java程序中编写代码,使用连接池获取数据库连接,执行SQL语句。 以下是一个简单的MySQL数据库连接池配置示例: 1. 创建一个MySQL用户,并授权该用户可以访问需要连接的数据库: ``` CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'; ``` 2. 在Java程序中引入数据库连接池的相关依赖,比如HikariCP: ``` <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.5</version> </dependency> ``` 3. 在Java程序中配置连接池参数: ``` java HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:mysql://localhost:3306/mydatabase"); config.setUsername("myuser"); config.setPassword("mypassword"); config.setMaximumPoolSize(10); config.setMinimumIdle(5); config.setConnectionTimeout(30000); ``` 4. 在Java程序中编写代码,使用连接池获取数据库连接,执行SQL语句: ``` java try (Connection conn = new HikariDataSource(config).getConnection()) { PreparedStatement statement = conn.prepareStatement("SELECT * FROM mytable"); ResultSet rs = statement.executeQuery(); while (rs.next()) { // 处理查询结果 } } catch (SQLException e) { e.printStackTrace(); } ``` 注意:以上示例仅供参考,具体的配置和使用方式需要根据实际情况进行调整。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木秀林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值