728x90

Connection pool 개요

 

데이터 베이스를 연결하기 위한 커넥션 객체이다

이 객체는 새롭게 만들어 질 때 많은 시스템 자원을 요구 된다

 

객체는 메모리에 적재되는데, 메모리에 객체를 할당할 자리를만들고

객체가 사용할 여러 자원들에 대한 초기화 작업과

객체가 필요 없게되면 거두어 들어야 하는 작업등이 요구 되어서 객체의 생성 작업은 많은 비용을 요구한다

 

 

데이터베이스 커넥션은 데이터베이스를 한번 연결하기 위한작업인데

이러한 작업들을 매번 새로운 데이터 베이스 연결에 대한 요청이 들어 올때마다

수행 해야 한다면 많은 부담이 된다

 

이런 케넥션 객체를 생성하고 관리하는 방법에는 3 가지 방법이 있다

 

구현 1  : service method( doGet , doPost) 에서 커넥션 객체를 생성,

이 경우는 시스템 무하가 커지고, 메모리 낭비가 된다

 

구현2 : init method 에서 커넥션 객체를 생성

           하나의 커넥션을 쓰면 커넥션 쿼리가 쌓이게 되어 응답 시간이 증가 한다

 

구현3 : 커넥션 풀에서 커넥션 생성 및 관리하기

           이 방법은 자원을 쓰고, 회수하는 방법을 쓴다

 

          즉 한번 만들어져서 사용된 커넥션 객체는 다시 커넥션 풀로 회수되는 것이다

          이 방법을 사용하면 커넥션 생성 갯수를 결정 할 수 있다

 

         커넥션 풀은 끊임없이 생성되는 커넥션 문제를 해결하기 위한 목적이다

         반드시 컨테이너에 1 개만 만들어지도록 패턴을 만들어야 한다

 

 

        만약 컨테이너가 자동지원을 못해서 커넥션 풀을 작성해야 하는 경우에는

       커넥션 객체를 저장하고 있는 저장소인 커넥션 풀은 Vector 를사용해서 구현 한다

 

커넥션 풀의 전략은 다음과 같다

1. service() 메서드당 1 개씩은 가지고 쓰게 한다

2. 커넥션 개수를 제한한다

3. 커넥션 객체관리자는 다 쓰면 자원을 회수 한다

 

374  그림

1. 클라이언트 요청

2. connection 을 할당 받는다

3. connection 이 없을때 ( 커넥션이 반환 될때까지 기다리거나 , 임시로 생성 )

 

4. Connection 사용

5. Connection 반환

 

==셋팅 작업================

1. jar 파일 설치 ( tomcat5 버전 부터 제공 됩니다 )

tomcat5 버전은  c:\Tomcat5 \ common \ lib \ naming-factory-dbcp.jar

tomcat6 은  c:\tomcat6\lib\tomcat-dbcp.jar

 

2. DBCP에 관한 정보 설정 : tomcat6\ conf\ server.xml 파일에 셋팅 해야 합니다

 

3. JNDI 리소스 사용 설정  : 현재 사용중인 웹 어플리케이션 의 WEB-INF/ web.xml 에 설정

 

     webapps / study / WEB-INF / web.xml

                                            

4. JSP 페이지에서  커넥션 풀 사용

 

=== 작업 =========================

1. DB 작업

C:\MySQL5\bin>mysql -u root -p

 

mysql> create database ch19;

 

mysql> use ch19;

 

create  table test( name varchar(20) not null , email varchar(30) not null , addr varchar(50));

 

desc test;

 

insert into test values('정경호','jung@hanmail.net','서울 종로구');

insert into test values('이연희','lee1@hanmail.net','서울 여의도');

insert into test values('이민정','lee2@hanmail.net','서울 강남구');

 

select * from test;

 

2. 웹 어플리케이션 만들기

   C:\Tomcat 6.0\webapps \ study

                                                     WEB-INF

                                                          lib

                                                          classes

                                                          web.xml 복사 ( ROOT \ WEB-INF 에 있는것 )

                                                          tags

                                                          tlds

 

3. 이클립스

  1)  새프로젝트    Project.....선택  == Web== Dynamic Web Project 선택

         Project Name : study

 

 2) WEB-INF/ classes 폴거 작성 하기

 

 study 프로젝트에서 == 우측 버튼 == properties === 왼쪽(Java Build Path 선택하고)== source 탭 ==

 

 Broswer 버튼 클릭하고 == WebContent/ WEB-INF 선택하고

 

Create New Folder 버튼 클릭 하고 ===== classes 입력하고 == OK ===OK ===OK

 

< 잠시 JSP 작성 합니다>

WebContent 에서 == 우측 버튼 == new ==  JSP작성하여 === 실행 하고 ==

server.xml 에     Context 작업이 자동으로 됩니다 ( 확인 합니다)

 

 

4. server.xml 셋팅

 

<Context path="/study" docBase="C:\Tomcat 6.0\webapps\study" crossContext="true">

          <Logger  className="org.apache.catalina.logger.FileLogger" prefix="localhost_JspTest_log." suffix=".txt" timestamp="true"/>

         

          <Resource name="jdbc/jsptest"

            auth="Container"

            type="javax.sql.DataSource"

            driverClassName="com.mysql.jdbc.Driver"

           

            loginTimeout="10"

            maxWait="5000"

            username="root"

            password="12345"

            testOnBorrow="true"

            url="jdbc:mysql://localhost:3306/ch19"

            />

        </Context>

 

<설명>

----------------------------------------------------------------------------

 <Resource name="jdbc/jsptest"    ...( JNDI 이름 )

            auth="Container"  ....................(자원제어 => Container , Application, servlet )

            type="javax.sql.DataSource" ...( 자원 데이터  형 )

         

             driverClassName="com.mysql.jdbc.Driver" .... 드라이버

            loginTimeout="10" ................................

            maxWait="5000"  ............................

            username="root"

            password="12345"

            testOnBorrow="true" ............커넥션 풀 에서 커넥션을 가져올때 커넥션이 유효한지 검사를 합니다

            url="jdbc:mysql://localhost:3306/ch19"

            />

           maxActive : 데이터 베이스 최대 연결 갯수 지정 , 0 으로 하면 무제한으로 연결 가능

----------------------------------------------------------------------------

 

5.  study/WEB-INF/web.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

 

  <resource-ref>

    <description>jsptest db</description>

    <res-ref-name>jdbc/jsptest</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

  </resource-ref>

 

</web-app>

 

 

 

728x90

MultipartRequest 클래스 사용

1-1 생성자
   MultipartRequest(request, dir)   // dir = savePath
   request 오브젝트와 서버쪽에 저장될 디렉토리
  C:\_java\aa\

1-2 생성자는 MultipartRequest(request, savePath,size,"euc-kr" new DefaultFileRenamePolicy())
    size는 1024 * 1024 * 5 =>  5MB
    다섯번째 인수 : 파일 중복 처리
    동일한 이름이 파일이 업로드되면 자동으로 리네임 해주는 기능.   
2. gegFilesystemName(String str)
   input 항목이름에 해당하는 실제 파일 이름을  알아내기

3. getFile(String str)
   input 항목 이름에 해당하는 파일정보를 File 형태로 리턴

   * MultipartRequest클래스의 생서자가 업로드된 파일의 저장 작업까지 수행한다.
728x90

메일 보내기 , 파일 업로드

http://www.servlets.com  아래 오른쪽 부분에 Download package를 클릭해서

cos26 May2008.zip 다운받아 압축풀고  cos.jar 파일을

jdk경로 \jre\lib\ext 에 복사  , tomcat경로 \lib 에 복사

환경변수 classpath=    ;c:\cos-26Dec2008\lib\cos.jar

tomcat 재구동
---------------
메일보내기
-----------------
MailMessage 클래스 사용

생성자
  MailMessage(host) : MailMessage 생성자 인수에  SMTP 서버 주소 지정
메서드
 1. from(String from) : 보내는 사람 메일 주소
 2. to(String to) : 받는사람 메일 주소
 3. setSubject(String title) : 편지 제목 설정 
 4. getPrintStream() : MailMessage 에서 출력용 스트림 생성
 5. sendAndClose() : 출력용 스트림의 내용을 보내고 종료

sendMail.html
MailSender.java(빈 작성)
sendMail.jsp

<메일서버 설정>
시작 -> 프로그램 -> 관리도구 -> 인터네서비스 관리자  ->기본 SMTP 가상서버 ->우측버튼

728x90
빈의 작성규칙

1. 맴버변수는 private로 선언

2. 맴버변수 값 설정 setter()메서드를 사용합니다.
    public void setName(String name)
        {this.name=name;}

3. 메서드 접근제한자는 반드시 public으로 한다.

4. 맴버변수의 값을 얻기 위해서는 getter()메서드를 사용합니다. 
     public String getName()
      {return name;}

5. 맴버변수가 boolean 혀 일때는 getXxx 사용하지 않고 isXxx() 를 사용한다.

6. 기타 필요한 맴버변수를 만들어 사용 할 수 있다.
     빈의 맴버변수를 property(속성)이라고 합니다.

package mypa;
public class TestBean{
private String id;
private String pwd;

public void setId(String id) { this.id=id;}
public String getId() {return id;}

public void setPwd(String pwd) {this.pwd=pwd;}
public String getPwd() {this.pwd=pwd;}
}


<jsp:useBean id="빈이름" class="패키지.클래스이름" scope="빈의 유효범위 설정">
                                                                         // 빈의 유효범위 : request, session, page(default), application
<jsp:setProperty name="id명" property="빈의 변수명" value="값" /> //set 메소드 호출
<jsp:getProverty name="id명" proverty="빈의 변수명" /> // get 메소드 호출
</jsp:useBean>

setProperty의 6가지 사용법
 1. <jsp:setProperty name="id명" property="빈의 변수명" value="값" />
 2. <jsp:setProperty name="id명" property="빈의 변수명" param="파라미터명"/> //html에서 넘겨준 파라미터값.
 3. <jsp:setProperty name="id명' property="빈의 변수명" />  //html의 파라미터와 빈의 변수 이름이 같을때 생락가능.
 4. <jsp:setProperty name="id명" property="*" /> //html의 파라미터와 빈의 변수이름이 모두 같을때.  편하다..
                                                                       그래서 빈의 변수명과 html파라미터 가 따로놀면 안됨.. 

  <jsp:useBean> 태그액션은 jsp페이지에서 빈을 초기화 하는데 사용, 인자 없는 생성자 호출한다.
                      *인자있는 생성자가 있을때는, 반드시 인자없는 디폴트 생성자를 넣어주어야 한다. 
  <jsp:setProperty> 액션태그는  빈의 property 값을 넣어주기 위해 사용. 
  <jsp:getProperty> 액션태그는 빈의 property 값을 가져오기 위해 사용.

+ Recent posts