본문 바로가기

프로그래밍/JSP

톰캣 설치 - 웹 컨테이너 apache-tomcat-6.0.18


톰캣 = 웹서버의 기능 + 웹컨테이너 + 웹어플리케이션 기능 을 가지고있다.

 

1. 톰캣 설치

  1) 톰캣 다운로드

http://tomcat.apache.org/

다운로드하여 적당한 장소에 풀면 끝난다.

( JDK1.5 버전이면 Tomcat5.x 버전을 받는다 )

( JDK1.6 버전이면 Tomcat6.x 버전을 받는다 )

참고 - JDK설치는 JAVA게시판에 설치정보가 있음

   2) 톰캣 환경변수 설정

[제어판-시스템-고급-환경변수]에서

[새로만들기-변수이름]을 "CATALINA_HOME"

입력값은 톰캣 홈디렉토리(절대경로)를 넣으면 끝

   3) 톰캣 실행

톰캣 홈에서 bin 폴더에 있는  startup.bat 실행 후 별 문제없이 검은 Tomcat창이 하나 떠있으면 됨 이 후 확인은 익스플로러에서 http://localhost:8080/ 을 입력하면 고양이그림이 나온다.

참고 - 위와 같이 확인하는데 무슨 로그인 창이 뜬다면 그건 이미 누군가 8080포트를 사용중이므로 포트번호를 변경하여 다시 실행한다.

실행중지는  shutdown.bat 파일을 실행

   4) 톰캣 설정파일

(1) servlet 개발환경 설정

conf 폴더에 web.xml 파일을 열어 "invoker"로 검색하여 찾은다음 <servlet>테그에 주석을 제거한다.

다시 "invoker"를 검색하여 <servlet-mapping>테그에 주석을 제거한다.

 

(2) servlet작성을 위한 API를 연결

5.x버전

톰캣홈/common/lib/servlet-api.jar 파일을 톰캣홈/lib 폴더에 복사하면 끝

6.x버전은 이미 있으니 복사할 필요 없다.

참고 - 만일 EJB를 개발한다면 J2EE를 설치하는 것이 좋다.

 

추가 - 톰캣 폴더 추가지정 (Context path 추가)

conf/server.xml 파일에서 아래와 같이 <Host>태그사이에 <Context>태그를 입력한다.

<Host>

    ....

    <Context path="/jsp_source" docBase="D:\jsp_source" ></Context>

    ....

</Host>

입력 후 D:\jsp_source 폴더에 \WEB-INF\classes 폴더 추가하고

그 곳에 web.xml 파일을 복사하여 붙여넣는다.(원본파일-\apache-tomcat-6.0.18\webapps\study\WEB-INF\web.xml)

불필요한 내용을 제거후

 <error-page>
  <error-code>404</error-code>
  <location>/error/404.jsp</location>
 </error-page>
 <!--error-page>
  <error-code>500</error-code>
  <location>/error/500.jsp</location>
 </error-page-->
이런식으로 작성하면 에러처리페이지 또한 작성완료

 

2. 오라클 연동 커넥션 풀 설정

자카르타 DBCP API를 이용한 커넥션 풀 사용

 

1) Pooling 기법

데이터베이스에 연결하기위한 Connection은 객체

많은 비용이 드는 데이터베이스 연결 객체를 매번 사용 해제하지 말고

처음 만들어둔 여러개의 데이터베이스 객체를 계속 사용하자는 개념

 

2) 톰캣에서 제공하는 프로그램

  (1) 순서

① 자카르타 DBCP API 관련 jar 파일 설치

② DBCP 관한 정보 설정-server.xml

③ JNDI 리소스 사용설정 - web.xml

④ jsp 페이지에서 커넥션 풀 사용

  (2) 설치

http://archive.apache.org/dist/commons/에서 collections,dbcp,pool을 선택하여 다음과 같은 파일 3개를 다운로드 후 압축을 푼다

collections-current.zip

commons-dbcp-current.zip

commons-pool-current.zip

 

② 압축 푼 폴더에 있는 다음 파일(

commons-collections-3.2.1.jar

commons-dbcp-1.2.2.jar

commons-pool-1.4.jar ) 3개를 복사하여

study\WEB-INF\lib 폴더와

톰캣홈\lib 폴더에 복사

③ DBCP에 관한 정보 설정 (conf\server.xml)

<GlobalNamingResources>

<Resource name="jdbc/myoracle" auth="Container"

type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:오라클서비스이름"

username="scott" password="tiger" maxActive="20" maxIdle="10"

maxWait="-1"

removeAbandoned="true"

removeAbandonedTimeout="60"

logAbandoned="true"/>

</GlobalNamingResources>

하단 부분에 추가

<Context path="/study" docBase="D:\june\apache-tomcat-6.0.18\webapps\study" crossContext="true">

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

<Resource name="jdbc/myoracle" auth="Container"

type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:오라클서비스이름"

username="june" password="june" maxActive="20" maxIdle="10"

maxWait="-1"

removeAbandoned="true"

removeAbandonedTimeout="60"

logAbandoned="true"/>

</Context>

 

④ study\WEB-INF폴더에 있는 web.xml파일을 열고<web-app></web-app>사이에 추가

<resource-ref>

<description>Oracle Datasource example</description>

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

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

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

</resource-ref>

 

3) 컨넥션 풀 테스트 프로그램(usePool.jsp)

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
<%
 Connection conn = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;

 try{
  Context initCtx = new InitialContext();
  Context envCtx = (Context)initCtx.lookup("java:comp/env");
  DataSource ds = (DataSource)envCtx.lookup("jdbc/myoracle");
  conn = ds.getConnection();

  String sql = "select * from zipcode where dong like ? and rownum between 1 and 100";
  pstmt = conn.prepareStatement(sql);
  pstmt.setString(1,"%소태동%");
  rs = pstmt.executeQuery();

  while( rs.next() ){
%>
   <%= rs.getString(1) %>
   <%= rs.getString(2) %>
   <%= rs.getString(3) %>
   <%= rs.getString(4) %>
   <%= rs.getString(5) %><br />
   <hr />
<%
  }
 }catch(SQLException e){
  e.printStackTrace();
 }finally{
  try{ if(rs != null) rs.close(); }catch(SQLException e){}
  try{ if(pstmt != null) pstmt.close(); }catch(SQLException e){}
  try{ if(conn != null) conn.close(); }catch(SQLException e){}
 }
%>