Ⅰ java資料庫連接池最大連接數最小連接數怎麼設置
最大連接數:這個連接池最多能有幾條連接,如果初始化的連接數沒有了,用戶可以創建,但是要給個判斷不能超過最大連接數。
最小連接數:就是連接池初始化的連接(連接池初始化多少條連接)
// 設置最大連接數,(根據並發請求合理設置)。
config.setMaxTotal(100);
// 設置最大空閑連接數,(根據並發請求合理設置)
config.setMaxIdle(20);
// 多長空閑時間之後回收空閑連接
setMinEvictableIdleTimeMillis(60000);
// 設置最小空閑連接數或者說初始化連接數
config.setMinIdle(10);
// 設置最大等待時間
config.setMaxWaitMillis(500);
// 跟驗證有關
config.setTestOnBorrow(true);
// 跟驗證有關
config.setTestOnReturn(false);
// 啟動空閑連接的測試
config.setTestWhileIdle(false);
Ⅱ 如何查看java程序的資料庫連接數量
java鏈接資料庫(mysql)---JDBC如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.junit.Test;
public class GetConnect {
private Connection conn; //Connection連接 導包(import java.sql.DriverManager;)在資料庫中一般來說JDBC是SQL包
// 獲得翻譯官: 載入驅動
//載入驅動
static{//靜態塊:在所有方法包括構造函數之前,執行.
try {
Class.forName("com.mysql.jdbc.Driver");
// (驅動實現了介面)mysql-connector-java-5.1.22-bin.jar (jar包)JDBC介面的實現 是外部的 需要引入
//使用映射的方式,引入驅動。
//("com.mysql.jdbc.Driver")是驅動的入口在
//Driver是驅動的意思在mysql-connector-java-5.1.22-bin.jar (jar包)中com.mysql.jdbc包中有個Driver類
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//獲得鏈接: 打通電話
@Test //junit的測試 測試方法,讓它運行起來
//報錯(Test下有紅線),錯誤信息如何提醒:Ctrl+1(快捷鍵) 游標放在錯誤(test)上 Ctrl+1 添加JUnit jar包
//JUnit jar包 既:Add JUnit 4 library to the build path
//添加進去後進行測試:如圖:(8--JUnit測試截圖);測試成功報 綠線 否則 紅線 如圖:(8--JUnit測試截圖)
public void getConnect() {
try {
/*url: 鏈接到哪一個資料庫實例
* jdbc:mysql://IP或者localhost:3306/資料庫名
* jdbc:(是個協議jdbc協議)mysql:(是個子協議) IP或者localhost(是個地址) 3306(埠號)
* user: 用戶名
* password:登陸密碼
*
*/
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
//java裡面一切皆對象,com.mysql.jdbc.Driver是個驅動,也有對象 DriverManager驅動管理對象
// com.mysql.jdbc.Driver是入口,DriverManager管理這個入口
//getConnection獲得鏈接,獲得實例 返回值:Connection類型 conn獲得的實例
//DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (conn!=null) {
System.out.println("鏈接成功!"); //getConnection這個實例--》conn到底獲得了沒有--》conn!=null 表示 獲得了
} else {
System.out.println("鏈接失敗!");
}
}
//寫完代碼之後讓它運行的2種方式:1 使用傳統main() 2 Junit 單元測試
// junit: 將"@Test"放在要執行的方法前,要求被測試的方法沒有參數,沒有返回值. 通常要求方法時public.
}
Ⅲ 怎樣查看jndi連接池資源個數
JNDI的全稱是java命名與目錄介面(Java Naming and Directory
Interface),是一個應用程序設計的API,為開發人員提供了查找和訪問各種命名和目錄服務的通用、統一的介面。我們可以把JNDI簡單地理解為是一種將對象和名字綁定的技術,即指定一個資源名稱,將該名稱與某一資源或服務相關聯,當需要訪問其他組件和資源時,就需要使用JNDI服務進行定位,應用程序可以通過名字獲取對應的對象或服務。
1.context.xml文件設置
數據源:Tomcat根目錄\conf\context.xml文件(沒有直接創建也可以)或者在JSP項目WebRoot目錄下的META-INF目錄中創建一個context.xml文件,添加Context節點,如下:
1 <Context>
2 <Resource name="jdbc/test" auth="Application" type="javax.sql.DataSource"
3 maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="1234"
4 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.2.254:1433;DatabaseName=test" />
5 </Context>
name:指定Resource的JNDI名字。
auth:可以寫成Container和Application。Container表示由容器創建Resource,Application表示由Web應用創建和管理Resource。
type:指定Resource所屬的Java類名。
maxActive:指定資料庫連接池中處於活動狀態的資料庫連接的最大數目。
maxIdle:指定資料庫連接池中處於空閑狀態的資料庫連接的最大數目,取值為0表示不受限制。
maxWait:指定資料庫連接池中資料庫連接處於空閑狀態的最長時間(以毫秒為單位),超出這時間將會拋出異常。
username:指定連接資料庫的用戶名。
password:指定連接資料庫的口令。
driverClassName:指定連接資料庫的JDBC驅動程序。
url:指定連接資料庫的URL。
2.web.xml文件的配置
在Web應用程序的WEB-INF/web.xml文件中的<web-app>節點下添加<resource-ref>元素,內容如下:
1 <web-app>
2 ...
3 <resource-ref>
4 <description>news DataSource</description>
5 <res-ref-name>jdbc/test</res-ref-name>
6 <res-type>javax.sql.DataSource</res-type>
7 <res-auth>Container</res-auth>
8 </resource-ref>
9 </web-app>
description:對所引用資源的說明。
res-ref-name:指定所引用資源的JNDI名字,與<Resource>元素中的name屬性對應。
res-type:指定所引用資源的類名字,與<Resource>元素中的type屬性對應。
res-auth:指定管理所引用資源的Manager,與<Resource>元素中的auth屬性對應。
3.在Web應用中添加資料庫連接jar文件。
4.編寫使用數據源和JNDI資源,創建採用資料庫連接池Connection對象的SqlHelper.java文件(在helper包中創建的),代碼如下:
1 package helper;
2 import java.lang.reflect.*;
3 import java.sql.*;
4 import java.util.*;
5
6 import javax.naming.Context;
7 import javax.naming.InitialContext;
8 import javax.naming.NamingException;
9 import javax.sql.DataSource;
10
11 public class SqlHelper {
12
13 private static Connection getConnection() throws ClassNotFoundException,
14 SQLException {
15 Connection conn = null;
16 try {
17 Context ctx = new InitialContext();
18 // 獲取與邏輯名相關聯的數據源對象
19 DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
20 conn = ds.getConnection();
21 } catch (NamingException e) {
22 // TODO Auto-generated catch block
23 e.printStackTrace();
24 } catch (SQLException e) {
25 // TODO Auto-generated catch block
26 e.printStackTrace();
27 }
28 return conn;
29 }
30
31 public static int executeNonQuery(String cmdText)
32 throws ClassNotFoundException, SQLException {
33 int result = -1;
34 Connection con = null;
35 PreparedStatement ps = null;
36 try {
37 con = getConnection();
38 ps = con.prepareStatement(cmdText);
39 result = ps.executeUpdate();
40 }catch (Exception e) {
41 System.out.println(e);
42 } finally {
43 close(con, ps, null);
44 }
45 return result;
46 }
47
48 public static int executeScalar(String cmdText) throws SQLException,
49 ClassNotFoundException {
50 int result = -1;
51 Connection con = null;
52 PreparedStatement ps = null;
53 ResultSet rs = null;
54 try {
55 con = getConnection();
56 ps = con.prepareStatement(cmdText);
57 rs = ps.executeQuery();
58 if (rs.next()) {
59 result = rs.getInt(1);
60 }
61 }catch (Exception e) {
62 System.out.println(e);
63 } finally {
64 close(con, ps, rs);
65 }
66 return result;
67 }
68
69 public static <T> List<T> executeList(Class<T> cls, String cmdText)
70 throws ClassNotFoundException, SQLException,
71 InstantiationException, IllegalAccessException {
72 List<T> list = new ArrayList<T>();
73 Connection con = null;
74 PreparedStatement ps = null;
75 ResultSet rs = null;
76 try {
77 con = getConnection();
78 ps = con.prepareStatement(cmdText);
79 rs = ps.executeQuery();
80 while (rs.next()) {
81 T obj = executeResultSet(cls, rs);
82 list.add(obj);
83 }
84 } catch (Exception e) {
85 System.out.println(e);
86 }finally {
87 close(con, ps, rs);
88 }
89 return list;
90 }
91
92 public static <T> T executeEntity(Class<T> cls, String cmdText)
93 throws SQLException, ClassNotFoundException,
94 InstantiationException, IllegalAccessException {
95 T obj = null;
96 Connection con = null;
97 PreparedStatement ps = null;
98 ResultSet rs = null;
99 try {
100 con = getConnection();
101 ps = con.prepareStatement(cmdText);
102 rs = ps.executeQuery();
103 while (rs.next()) {
104 obj = executeResultSet(cls, rs);
105 break;
106 }
107 } catch (Exception e) {
108 System.out.println(e);
109 }finally {
110 close(con, ps, rs);
111 }
112 return obj;
113 }
114
115 private static <T> T executeResultSet(Class<T> cls, ResultSet rs)
116 throws InstantiationException, IllegalAccessException, SQLException {
117 T obj = cls.newInstance();
118 ResultSetMetaData rsm = rs.getMetaData();
119 int columnCount = rsm.getColumnCount();
120 // Field[] fields = cls.getFields();
121 Field[] fields = cls.getDeclaredFields();
122 for (int i = 0; i < fields.length; i++) {
123 Field field = fields[i];
124 String fieldName = field.getName();
125 for (int j = 1; j <= columnCount; j++) {
126 String columnName = rsm.getColumnName(j);
127 if (fieldName.equalsIgnoreCase(columnName)) {
128 Object value = rs.getObject(j);
129 field.setAccessible(true);
130 field.set(obj, value);
131 break;
132 }
133 }
134 }
135 return obj;
136 }
137
138 private static void close(Connection con, PreparedStatement ps, ResultSet rs)
139 throws SQLException {
140 if (rs != null) {
141 rs.close();
142 rs = null;
143 }
144 if (ps != null ) {
145 ps.close();
146 ps = null;
147 }
148 if (con != null) {
149 con.close();
150 con = null;
151 }
152 }
153 }
View Code
5.搭建entity,dal,bll包。(三層是從net開發轉過來的,也可以使用do包,包)。
6.JSP頁面使用代碼如下:
1 <%@ page language="java" import="java.util.*,bll.*,entity.*" pageEncoding="UTF-8"%>
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3 <html>
4 <head>
5 <title>採用數據源和JNDI資源方式,創建並使用資料庫連接池對象訪問資料庫實例。</title>
6 </head>
7 <body>
8 <div>
9 <h1>採用數據源和JNDI資源方式,創建並使用資料庫連接池對象訪問資料庫實例。</h1>
10 <%
11 List<Student> list = StudentBLL.Select();
12 for (Student student : list) {
13 out.println(String.format(
14 "<ol><li>StudentId:%d</li><li>StudentName:%s</li><li>Phone:%s</li><li>Email:%s</li><li>Address:%s</li></ol>",
15 student.getStudentId(), student.getStudentName(),
16 student.getPhone(), student.getEmail(),
17 student.getAddress()));
18 }
19 %>
20 </div>
21 </body>
22 </html>
View Code
7.如果Context文件中auth屬性設置為:Container,需要將資料庫連接的jar文件復制到Tomcat的lib目錄下。如果auth屬性設置為:Application,則不需要復制到Tomcat的lib目錄下。
8.部署運行界面大功告成。
Ⅳ JDBC連接oracle 查看oracle連接數
關於Oracle的資料庫的知識,北京51培訓特別開設了網路免費課程,如果有問題可以當時就問,這樣比查詢起來更加方便。只是提供參考。
Ⅳ 如何查看mysql資料庫連接池信息
1、把資料庫驅動包 到 %CATALINA_HOME%\common\lib 下。
2、修改 %CATALINA_HOME%\conf\server.xml 文件,在 <Host> 節點下添加:
XML/HTML code?
<!-- appName 為項目名 --!>
<Context path="/appName" docBase="appName" auth="Container">
<Resource name="jdbc/MySQLDS" scope="Shareable"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/test?useUnicode=true&charact-erEncoding=GBK"
driverClassName="com.mysql.jdbc.Driver"
username="root" password="111111"
maxWait="3000" maxIdle="100" maxActive="10" />
</Context>
(或者在 %appName%\META-INF 下建立 context.xml,內容為上面的代碼。)
3、修改 web.xml,在 <web-app> 節點下添加:
XML/HTML code?
import java.sql.Connection;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBUtil {
public Connection getConnection() throws Exception {
Context context = new InitialContext();
// 獲取數據源
DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/MySQLDS");
// 獲取資料庫連接
Connection conn = ds.getConnection();
if (conn != null && !conn.isClosed()) {
return conn;
} else {
return null;
}
}
}