Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

TOMCAT 연동시 주의사항에 대해 설명한다.

...

문제의 증상
Tomcat log (version 6)

Code Block
text
text

--- Check the statement (query failed).

--- Cause: java.sql.SQLException: [0]:Failure to find statement; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:

--- The error occurred in maps/CommonSqlMap.xml.

--- The error occurred while applying a parameter map.

--- Check the Common.getIservSp-InlineParameterMap.

--- Check the statement (query failed).

--- Cause: java.sql.SQLException: [0]:Failure to find statement

정상적인 경우

Code Block
text
text

Tomcat log (version 6)

[0001][14:14:31 386][    2][    0] GET-CONNECTION[org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection] [1 ms]

확인 방법

Code Block
text
text

$CATALINA_HOME/conf/server.xml 파일 내용 중 아래 부분의 주석을 제거하신 후 Tomcat을 재 시작하여 $CATALINA_HOME/logs/tomcat.log 를 확인합니다.
 변경전>
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs"  prefix="localhost_access_log." suffix=".txt"
                 pattern="common" resolveHosts="false"/>
        -->

변경후>
        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs"  prefix="localhost_access_log." suffix=".txt"
                 pattern="%a %b %t %s %D %r " resolveHosts="false"/>

참고 : http://tomcat.apache.org/tomcat-5.5-doc/config/valve.html

권장 Tomcat 설정 값

 

환경1

환경2

환경3

JDK Ver

1.5

1.6

1.6

Tomcat Ver

6 (dbcp ver 1.3)

6 (dbcp ver 1.3)

7 (dbcp ver 1.4)

testOnBorrow

TRUE 만 권장 (DefalutDefault)

True/False

True/False

poolPrepareStatements

FALSE 만 권장 (DefalutDefault)

True/False

True/False

Result

testOnBorrow=False,
poolpreparestatement=true
사용시 권장하지 않음,
JRE 또는 JDK1.6으로 업그레이드 권장

권장

권장

...

DBCP를 이용하여 connection을 처리할때 문제점이 하나 있는데 바로 웹어플리케이션에서 명시적으로 ResultSet, Statement, Connection을 close해줘야 한다는 것이다. 만약 웹어플리케이션에서 이러한 resource를 close하는 것을 실패했다면 이후에 resource들을 재사용할 수 없게 된다. 이러한 현상을 Connection pool leak이라고 부르며, connection pool leak이 지속된다면 최종에는 이용가능한 connection이 모두 없어지게 될 것이다. 이러한 문제를 막기위해 DBCP에서 문제가 발생하여 버려진 connection을 복구하고 로깅하는 방법을 제공하는데 다음의 속성을 설정하면 된다.

Code Block
text
text

removeAbandoned="true"