1. 程式人生 > >又配TOMCAT資料庫連線池

又配TOMCAT資料庫連線池

又折騰了一上午,記得當初折騰過很久很久不知道多少次,上次在媳婦的提醒下成功了,卻沒有記錄,這次一定要記錄好了。嘿嘿。

如果資料庫連線池僅僅是對特定的專案作用,則可以採用如下配置方案:

1、在自己的專案中的 META-INF 資料夾下面新建 context.xml,貼入類似如下程式碼:

<?xml version='1.0' encoding='utf-8'?>

<Context path="/tuanplus" docBase="tuanplus" debug="5"
	reloadable="true" crossContext="true">
	<Resource name="jdbc/tuanplus" auth="Container" type="javax.sql.DataSource"
		maxActive="100" maxIdle="30" maxWait="10000" username="root" password="fkeuggwn"
		driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/tuanplus" />
</Context>

解釋一下:

path:指定此資料來源的作用地址,一般是自己專案的path

docBase:專案名稱

name:此資料來源的名稱,以後java程式碼中獲取資料來源依據此名稱

auth:未知作用,一般都指定Container,是容器的意思

type:無疑,javax.sql.DataSource

maxActive:最大活躍連線數,最多保持這麼多連線

maxIdle:最大空閒連線數目,空閒連線大於此值的時候都會被close

maxWait:請求的最大等待時間

2、在 web.xml 中加入如下程式碼:

	<resource-ref>
		<description>Tuanplus JDBC</description>
		<res-ref-name>jdbc/tuanplus</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>

解釋一下:

description:描述資訊,相當於註釋

res-ref-name:需要引入的連線池的名稱,即 context.xml 中的 name.

res-type:依舊無疑,javax.sql.DataSource

res-auth:Container,容器

3、編寫 java 程式碼,這裡順便引入一個我覺得比較不錯的資料庫操作的 Helper 類

Db.java

package com.tuanplus.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class Db {
	private Connection conn;

	/**
	 * 初始化操作,得到connection..
	 */
	public Db() {
		try {
			InitialContext ictx = new InitialContext();
			Context envContext = (Context) ictx.lookup("java:/comp/env");
			DataSource ds = (DataSource) envContext.lookup("jdbc/tuanplus");
			conn = ds.getConnection();
		} catch (NamingException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 執行插入、更新、刪除操作
	 * 
	 * @param sql
	 * @param args
	 * @return
	 */
	public boolean update(String sql, Object... args) {
		try {
			PreparedStatement ps = conn.prepareStatement(sql);
			for (int i = 0; i < args.length; i++) {
				ps.setObject(i + 1, args[i]);
			}
			if (ps.executeUpdate() < 1) {
				return false;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return true;
	}

	/**
	 * 執行查詢
	 * 
	 * @param sql
	 * @param args
	 * @return
	 */
	public ResultSet query(String sql, Object... args) {
		try {
			PreparedStatement ps = conn.prepareStatement(sql);
			for (int i = 0; i < args.length; i++) {
				ps.setObject(i + 1, args[i]);
			}
			return ps.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

建構函式中的內容即使通過連線池獲取 connection 連線。

4、編寫測試 JSP,需要注意的是,測試必須在伺服器下進行。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.tuanplus.util.Db"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>

	<body>
		<%
			Db db = new Db();
			boolean i = db.update("INSERT INTO user VALUES(null,?,?,?)",
					"mzule", "123456", "[email protected]");
		%>
		<%=i%>
	</body>
</html>


相關推薦

TOMCAT資料庫連線

又折騰了一上午,記得當初折騰過很久很久不知道多少次,上次在媳婦的提醒下成功了,卻沒有記錄,這次一定要記錄好了。嘿嘿。 如果資料庫連線池僅僅是對特定的專案作用,則可以採用如下配置方案: 1、在自己的專案中的 META-INF 資料夾下面新建 context.xml,貼入類似如

配置mysql資料庫連線錯誤:javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cann

[javax.servlet.ServletException: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL '

以oracle資料庫為例配置Tomcat伺服器JNDI資料庫連線

前兩天學習了tomcat的JNDI資料庫連線池的配置,今天重新自己檢視tomcat的官方英語文件再配置一遍,加深印象。 首先JNDI(Java Naming and Directory Interface,Java命名和目錄介面)是一組在Java應用中訪問命名和目錄服務的A

JDBC之連線Tomcat 8.5 MySQL資料庫連線的配置與使用

簡介 本文以MySQL資料庫為例,介紹Tomcat 8.5環境下,其預設的資料庫連線池DBCP配置與使用. 連線池簡介 資料庫連線池是在使用者和資料庫之間建立一個”池”,這個池是用來存放資料庫連線物件。回收和重用已存在的資料庫連線比新建一個連線更高效。當用戶想要連線資料庫,

tomcat下context.xml中配置各種資料庫連線

Tomcat6的伺服器配置檔案放在 ${tomcat6}/conf 目錄底下。我們可以在這裡找到 server.xml 和 context.xml。當然,還有其他一些資原始檔。但是在在本文中我們只用得上這兩個,其他的就不介紹了。 1. 首先,需要為資料來源配置一個JN

tomcat配置資料庫連線步驟詳解

1.配置context.xml檔案<?xml version='1.0' encoding='utf-8'?> <Context reloadable="true">

tomcat-dbcp資料庫連線配置以及使用時候的一些坑

一、資料庫連線池 開發的時候經常會需要對資料庫進行一些操作,比如說常見的增刪改查之類的,當資料量小的時候,可以直接進行操作,但是當資料量增多的時候,每一次連線以及釋放資料庫都會耗費一定的時間,這個時候,可以採用資料庫連線池來保持資料庫的連結,減少連線資料庫對程式帶來的開銷,

tomcat中配置MySQL和oracle資料庫連線的異同

一、在tomcat中配置MySql資料庫連線池 Java程式碼: public Connection conn = null; public Connection getConnection()throws ClassNotFoundException, S

tomcat配置c3p0資料庫連線遇到問題與解決

這短時間在做一個Android專案,由於牽扯到資料庫,也就有伺服器。app預期是想做大,所以一方面考慮到效能相關 因此就想把tomcat和比較知名的c3p0結合起來,從這一方面來提高效能。 首先第一步:把c3p0解壓資料夾的3個jar包全部考到tomcat根目錄下lib資料

Java資料庫連線細節探討

我們知道,資料庫連線池可以把資料庫的連線快取起來,下次使用的話可以直接取到快取起來的資料庫連線。那麼,在這個過程中有幾個細節需要注意: 1、資料庫的連線數有沒有限制? 2、資料庫會不會自動斷開已經建立的連線? 3、如果資料庫重啟了,但應用沒有重啟,那麼資料庫連線池中的所有連線都不可用了,

JavaWeb_day10_資料庫連線_c3p0_DBUtils

1.在實際開發中,“獲取連線”和“釋放資源”是很消耗系統資源的兩個過程,為了解決此問題,採用連線池技術,共享連線connection 2.連線池概念 3.Java的資料庫連線池的公共介面:javax.sql.DataSource 常見的連線池:DBCP   C3

手寫資料庫連線附gp連線jar包地址

  手寫資料庫連線並,測試.   最近資料庫要連線GP資料庫(GreenplumSQL),在建立連線的時候需要做建立不同的連線數量. 其實當想到寫資料庫連線時,完全可以通過springdata jpa直接寫介面,這是一種思路. 所以在使用的使用,就寫了個dem

JDBC資料庫連線連線資料庫資料庫操作DAO層設計通用更新及查詢方法(二)

上篇文章主要介紹了通過資料庫連線池連線資料庫,然後設計了對資料庫通用更新和查詢方法,本篇文章主要通過例項介紹上篇文章定義的對資料庫操作的幾個方法的使用:     首先我們先在資料庫建立一個學生資訊表Student欄位如圖: 建立好表將配置檔案的資訊改好然後需要建立一

JDBC資料庫連線連線資料庫資料庫操作DAO層設計通用更新及查詢方法(一)

該篇文章介紹了資料庫連線池獲取資料庫連線以及資料庫操作的基本使用,然後主要提供了java專案案例中dao層的一種設計,利用反射的原理定義了通用的查詢方法可以對應所有的表和例項。文章中的每段程式碼都提供了詳細的註釋及邏輯步驟 首先匯入資料庫連線的所需要的jar包:    

springboot配置預設資料庫連線並解決初始連線未生效問題

目前Spring Boot中預設支援的連線池有dbcp,dbcp2, tomcat, hikari三種連線池。  在springboot1.5之前預設tomcat連線池, 版本org.springframework.boot.autoconfigure.jdbc.Data

JFinal配置資料庫連線外掛和表類對映

配置資料庫連線池外掛,此處以Druid為例,還需要配置資料庫訪問外掛,即ActiveRecord外掛,用於建立資料庫中Table和Java Bean的mapping對映: public void configPlugin(Plugins me) { // 配置 druid

druid 資料庫連線的詳細配置

首先說一下自己程式中遇到的問題,前一段時間新寫了一個專案,主要架構改進,為前端提供介面(spring +springmvc+mybatis) 在新專案中使用的是阿里的druid連線池,配置簡單,除了資料庫地址,驅動類,使用者名稱和密碼其他一起都是預設,開始的時候由於專案更新上線頻率比較多,沒有出現太

資料庫連線-資料來源配置

常用的c3p0,DBPC,Druid三大連線池 DBPC <!-- 配置dbcp資料來源 --> <bean id="dataSource2" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSourc

Java配置資料庫連線

dbcp資料庫連線池 DbcpUtils.java import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; impor

python單例與資料庫連線

 單例:專業用來處理連線多的問題(比如連線redis,zookeeper等),全域性只有一個物件   單例程式碼def singleton(cls): instances = {} def _singleton(*args, **kwargs)