DataSource + Pool + 리스너 + 속성

DataSource : Pool을 구현한 것! 

Connection Pool???

Pool  :  자원을 많이 사용하는 인스턴스 생성을 저장하여 사용할 수 있는 공간

Pool을 사용하는 이유는 인스턴스 생성에 자원을 많이 사용하기 때문에 여러 서블릿에서 중복적으로 사용되는 인스턴스에 대한 저장공간을 만들어서 계속 자원을 유지하면서 사용할 때 빠르게 접근하고 중복 생성으로 인한 자원 낭비를 없애기 위한 것 입니다.

리스너  : 리스너 사용하여  데이터소스를 사용할 서블릿 사용 순서 정할 수 있음 . 서블릿이 사용 될때 DataSource 초기화 작업을 하기 위해서 사용

 
u초기화 파라미터로 데이터베이스 DataSource객체를 저장할 수도 있나요?
컨텍스트 초기화 파라미터엔 String밖에 저장할 수 없습니다.
따라서, 파라미터 값으론 DataSource의 검색명(lookup name)을 저장하고, String인 검색명을 실제 DataSource 객체로 바꾸어 줍니다
그 바꾸어 주는 일을 서블릿이 할 수도 있지만, 어떤 서블릿이 가장 먼저 호출될 지도 모르는 상황에서 그렇게 하는 것은 좋지 않을 것입니다
그래서 리스너 사용~~~


▶//속성과 리스너

 

●속성

- 컨테이너가 어플리케이현을 준비하면서 필요한 초기값, default값을 내가 줄 수 있다.

- 어플리케이션 뿐만 아니라 servlet각각에 대해서도 초기 값을 줄 수 있다.

- 어플리케이션이나, 서블릿에게 내가 원하는 값을 갖고 생성되게 할 수 있다.

 

● 초기화 파라미터

- 서블릿은 초기화 파라미터(initaialzation parameters)를 가질 수 있다.

- 초기값을 주기위해 DD안에 정의하는,,

- 컨테이너는 DD를 참조하면서 어플리케이션을 준비하는데, 초기화값이 있으면 초기화 값을 갖고 생성시킨다.

- 아래와 같이 쓴다.

 

 

  <web-app>->  DD안에있다.

    <초기화값>->  <init-param>

      <서블릿>

        <초기화값>

- 사용법은

  getServletConfig().getInitParameter("이름");

- Servlet을 준비 할 때,

  ServletConfig 파일을 만들어놓고 그 안에 DD에서 읽은 내용을 ServletConfig객체 안에 내용을 저장한다.

 

Servlet 초기화

1. 서블릿을 초기화 할 대 서블릿당 하나씩 servletConfig생성

2. DD에서 서블릿 초기화 파라미터를 읽고 ServletConfig에 정보를 저장, 그 ServletConfig를 init()메소드에준다

   - 컨테이너는 서블릿을 초기화할 때 단 한번 서블릿 초기화 파라미터를 읽는다.

   - 컨테이너는 서블릿을 만들 때, DD읽어 이름/값 쌍으로 ServletConfig를 생성한다.

   - 서블릿이 다시 배포되지 않는한 DD를 바꾼다고 수정되지 않는다.

 

 

※inti()는 객체들도 파라미터로 가질 수 있다!!

 

●Context inti parameters

-컨텍스트 초기화 파라메터

-해당 app에 속한 모든 servlet에서 호출할 수 있으며 jap파일에서도 같은 값을 호출한다.

-ServletContext는 jsp나, 서블릿을 컨테이너 또는 다른 웹app와 연결하는 끈.

-서버와 컨테이너의 정보 역시 가져올 수 있다.

 

●context-parameter는 <web-app...> 아래, config-parameter는 <servlet>

 

●초기화 파라미터로 데이터베이스 datasource를 저장할 수도있다.

-컨텍스트 초기화 파라미터엔 String밖에 지정안된다

-따라서, 파라미터 값으론 DataSource의 검색명을 저장한다.

 

cf.)

▶DataSource

-ConnectionPool을 구현한 것.

-서블릿들이 풀장에서 커넥션을 가져다 쓰도록 하는..

 

▶ConnectionPool(커넥션이 떠있는 공간)

- 커넥션을 미리 만들어두고 꺼내썼다가 다시 넣어뒀다 하는 공간

- 리소스 절약을 위해.

 

●ServletConfig

- 서블릿당 하나 존재, 서블릿 속성을 주기 위해 필요한 객체

- 컨테이너가(ex..Tomcat) 서블릿을 초기화 할 때, 서블릿에 대한 정보(DD안에있는) 정보들을 담아두는 객체.

ServletContext

- 애플리케이션당 하나 존재, 애플리케이션의 속성을 주기 위해 필요한 객체

 

cf)Context(기반, 환경, 배경, 바탕)

======================================Listener=========================================

●8가지 리스너가 존재한다.

 

-리스너(Listner:ServletcontextListener)

  -ServletContext가 살아남을 알리는 리스너.

 

●DD에 이벤트가 발생하면 수행 할 수 있도록 Listener를 등록한다.

 -형식

 <listener>
  <listener-class>example.listener.MyContextListener</listener-class>
 </listener>

-구현

  ServletContextListener를 구현하는 클래스를 만든다. 

  내부에 있는

  contextInitialized : Context가 초기화 될 때 실행되는 메소드

  contextDestroyed : Context가 소멸될 때 실행되는 메소드

 

●주로 DB에 연결할 때, Conecction등을 DataSource에 등록해 놓고, 필요할 때 마다 꺼내다 쓸때 사용한다.

[출처] //속성과 리스너|작성자 주현



댓글()