일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Cookie
- Ajax
- AWS
- 알고리즘
- 블록체인
- JSP
- Servlet
- RDS
- 웹소켓
- Spring
- 도커
- HTML
- SQL
- websocket
- express
- model1
- jQuery
- phaser
- EC2
- node.js
- 배포
- JavaScript
- tiles.xml
- CSS
- PL/SQL
- docker
- 비트코인
- 암호화
- 웹게임
- autowired
- Today
- Total
記錄
Servlet) 커넥션 풀(DBCP) 본문
참고 : http://devbox.tistory.com/entry/JSP-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80-1
연결 풀
커넥션 풀(connection pool)은 소프트웨어 공학에서 데이터베이스로의 추가 요청이 필요할 때 연결을 재사용할 수 있도록 관리되는 데이터베이스 연결의 캐시이다. 연결 풀을 사용하면 데이터베이스의 명령 실행의 성능을 강화할 수 있다. 각 사용자마다 데이터베이스 연결을 열고 유지보수하는 것은 비용이 많이 들고 자원을 낭비한다. 연결 풀의 경우 연결이 수립된 이후에 풀에 위치해 있으므로 다시 사용하면 새로운 연결을 수립할 필요가 없어진다. 모든 연결이 사용 중이면 새로운 연결을 만들고 풀에 추가(이건 확인 필요, 어떤 설명의 경우에는 대기한다고 나온다)된다. 연결 풀은 사용자가 데이터베이스에 연결을 수립하는데까지 대기해야하는 시간을 줄이기도 한다.
출처 : 위키
미리 커넥션 객체를 만들어 놓고 이를 필요할 때마다 빌려주고 반환 받음으로써
자원의 효율성을 확보하는 것이 커넥션 풀의 핵심이다
Context.xml (예시1)
Context.xml (예시2)
속성 | 설명 |
maxActive | 커넥션 풀이 제공할 최대 커넥션 갯수 |
whenExhaustedAction | 커넥션 풀에서 가져올 수 있는 커넥션이 없을 때 어떻게 동작할지를 지정. 0일 경우 에러 발생 1일 경우 maxWait 속성에서 지정한 시간만큼 커넥션을 구할때까지 기다림. 2일 경우 일시적으로 커넥션을 생성해서 사용 |
maxWait | whenExhaustedAction 속성의 값이 1일 때 사용되는 대기 시간. 단위는 1/1000초, 0보다 작을 경우 무한히 대기 |
maxIdle | 사용되지 않고 풀에 저장될 수 있는 최대 커넥션 갯수. 음수일 경우 제한이 없음 |
minIdle | 사용되지 않고 풀에 저장될 수 있는 최소 커넥션 갯수. |
testOnBorrow | true일 경우 커넥션 풀에서 커넥션을 가져올 때 커넥션이 유효한지의 여부를 검사 |
testOnReturn | true일 경우 커넥션 풀에 커넥션을 반환할 때 커넥션이 유효한지의 여부를 검사 |
timeBetweenEvctionRunsMillis | 사용되지 않는 커넥션을 추출하는 쓰레드의 실행 주기 지정. 양수가 아닐 경우 실행되지 않는다. 시간 단위는 1/1000초. |
numTestsPerEvictionRun | 사용되지 않는 커넥션을 몇 개 검사할 지 지정 |
minEvictableIdleTimeMillis | 사용되지 않는 커넥션을 추출할 때 이 속석에서 지정한 시간 이상 비활성화 상태인 커넥션만 추출. 양수가 아닌 경우 비활성화된 시간으로는 풀에서 제거되지 않음. 시간 단위는 1/1000초 |
testWhileIdle | true일 경우 비활성화 커넥션을 추출할 때 커넥션이 유효한지의 여부를 검사해서 유효하지 않은 커넥션은 풀에서 제거. |
출처 : http://devbox.tistory.com/entry/JSP-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80-1
src( ~.java) - 예제 1
src( ~.java) - 예제 2
Interface Context
This interface represents a naming context, which consists of a set of name-to-object bindings. It contains methods for examining and updating these bindings.
Class InitialContext
public class InitialContext
extends Object
implements Context
This class is the starting context for performing naming operations.
All naming operations are relative to a context. The initial context implements the Context interface and provides the starting point for resolution of names.
When the initial context is constructed, its environment is initialized with properties defined in the environment parameter passed to the constructor, and in any application resource files. In addition, a small number of standard JNDI properties may be specified as system properties or as applet parameters (through the use of Context.APPLET). These special properties are listed in the field detail sections of the Context and LdapContext interface documentation.
JNDI determines each property's value by merging the values from the following two sources, in order:
The first occurrence of the property from the constructor's environment parameter and (for appropriate properties) the applet parameters and system properties.
The application resource files (jndi.properties).
For each property found in both of these two sources, or in more than one application resource file, the property's value is determined as follows. If the property is one of the standard JNDI properties that specify a list of JNDI factories (see Context), all of the values are concatenated into a single colon-separated list. For other properties, only the first value found is used.
The initial context implementation is determined at runtime. The default policy uses the environment property "java.naming.factory.initial", which contains the class name of the initial context factory. An exception to this policy is made when resolving URL strings, as described below.
Interface DataSource
public interface DataSource
extends CommonDataSource, Wrapper
A factory for connections to the physical data source that this DataSource object represents. An alternative to the DriverManager facility, a DataSource object is the preferred means of getting a connection. An object that implements the DataSource interface will typically be registered with a naming service based on the JavaTM Naming and Directory (JNDI) API.
The DataSource interface is implemented by a driver vendor. There are three types of implementations:
Basic implementation -- produces a standard Connection object
Connection pooling implementation -- produces a Connection object that will automatically participate in connection pooling. This implementation works with a middle-tier connection pooling manager.
Distributed transaction implementation -- produces a Connection object that may be used for distributed transactions and almost always participates in connection pooling. This implementation works with a middle-tier transaction manager and almost always with a connection pooling manager.
A DataSource object has properties that can be modified when necessary. For example, if the data source is moved to a different server, the property for the server can be changed. The benefit is that because the data source's properties can be changed, any code accessing that data source does not need to be changed.
A driver that is accessed via a DataSource object does not register itself with the DriverManager. Rather, a DataSource object is retrieved though a lookup operation and then used to create a Connection object. With a basic implementation, the connection obtained through a DataSource object is identical to a connection obtained through the DriverManager facility.
Object lookup(String name)
throws NamingException
Retrieves the named object. See lookup(Name) for details.
Parameters:
name - the name of the object to look up
Returns:
the object bound to name
Throws:
NamingException - if a naming exception is encountered
Method Detail
getConnection
Connection getConnection()
throws SQLException
Attempts to establish a connection with the data source that this DataSource object represents.
Returns:
a connection to the data source
Throws:
SQLException - if a database access error occurs
'Web > Servlet' 카테고리의 다른 글
Servlet) Filter (0) | 2018.04.04 |
---|---|
Servlet) "?cmd=~" vs @WebServlet("*.do") (0) | 2018.04.03 |
Servlet) 예제(단순 알림 or 객체 전달) (0) | 2018.03.29 |
Servlet) out.print()에 대한 이해 (0) | 2018.03.29 |
Servlet) Life Cycle, @WebServlet 설정 (0) | 2018.03.29 |