커넥션 문의
- 작성자 :
- 정*석
- 작성일 :
- 2017-07-17 15:54:20
- 조회수 :
- 1,563
- 구분 :
- 운영환경
- 진행상태 :
- 완료
Q
안녕하세요 디비 커넥션 관련 문의 드립니다
와스는 톰캣을 사용중입니다
신규 싸이트 추가로 인하여 신규 톰캣을 설치하여 사용중인데
간혈적으로 로그인시 브라우저는 통신중인 상태에서 2~3분정도 지나면 오류가 발생합니다
제니퍼에 Broken pipe오류가 발생하여 톰캣에는 아래와 같은 오류가 발생합니다
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the loginDAO.actionLogin-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: java.sql.SQLException: Io exception: Connection timed out
로그인은 context-security.xml에 /j_spring_security_check?... 방식을 사용중입니다
로그인시 was로그에 쿼리가 찍히는데 위와 같은 오류 발생시에는 쿼리가 찍히지 않습니다
제니퍼 담당자 말로는 톰캣의 커넥션을 사용하지 않고 어플리케이션에서 커넥션을 사용하여 문제가 된것 같다고 합니다
소스에서는 getConnection()과 같은 따로 데이터베이스를 접근하지 않습니다
스프링에서 커넥션을 따로 관리하는 설정이 있나요?
문제될 만한 부분이 있는지 문의 드립니다
톰캣 설정은 jndi로 아래와 같습니다
1.server.xml
<GlobalNamingResources>
<Resource name="jdbc/payroll" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="ori_apps" password="oracle_0527"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@10.253.1.121:1522:PAYROLL"
validationInterval="30000"
validationQuery="select 1 from dual"
testOnBorrow="true"
testWhileldle="true"
logAbandoned="true"
timeBetweenEvictionRunsMills="10000"
minEvictableldleTimeMillis="60000"
/>
</GlobalNamingResources>
2.context.xml
<ResourceLink name="jdbc/payroll" global="jdbc/payroll" type="javax.sql.DataSource" />
3.어플리케이션 context-datasource.xml
<jee:jndi-lookup id="dataSource-oracle" jndi-name="jdbc/payroll" resource-ref="true"/>
와스는 톰캣을 사용중입니다
신규 싸이트 추가로 인하여 신규 톰캣을 설치하여 사용중인데
간혈적으로 로그인시 브라우저는 통신중인 상태에서 2~3분정도 지나면 오류가 발생합니다
제니퍼에 Broken pipe오류가 발생하여 톰캣에는 아래와 같은 오류가 발생합니다
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred while applying a parameter map.
--- Check the loginDAO.actionLogin-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: java.sql.SQLException: Io exception: Connection timed out
로그인은 context-security.xml에 /j_spring_security_check?... 방식을 사용중입니다
로그인시 was로그에 쿼리가 찍히는데 위와 같은 오류 발생시에는 쿼리가 찍히지 않습니다
제니퍼 담당자 말로는 톰캣의 커넥션을 사용하지 않고 어플리케이션에서 커넥션을 사용하여 문제가 된것 같다고 합니다
소스에서는 getConnection()과 같은 따로 데이터베이스를 접근하지 않습니다
스프링에서 커넥션을 따로 관리하는 설정이 있나요?
문제될 만한 부분이 있는지 문의 드립니다
톰캣 설정은 jndi로 아래와 같습니다
1.server.xml
<GlobalNamingResources>
<Resource name="jdbc/payroll" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="ori_apps" password="oracle_0527"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@10.253.1.121:1522:PAYROLL"
validationInterval="30000"
validationQuery="select 1 from dual"
testOnBorrow="true"
testWhileldle="true"
logAbandoned="true"
timeBetweenEvictionRunsMills="10000"
minEvictableldleTimeMillis="60000"
/>
</GlobalNamingResources>
2.context.xml
<ResourceLink name="jdbc/payroll" global="jdbc/payroll" type="javax.sql.DataSource" />
3.어플리케이션 context-datasource.xml
<jee:jndi-lookup id="dataSource-oracle" jndi-name="jdbc/payroll" resource-ref="true"/>
A
안녕하세요.
설정 내용을 보면 JNDI를 설정하여 사용하시는 부분이 맞습니다.
로그 내용과 쿼리도 찍히지 않는 사항으로 보아 loginDAO에서
DB 커넥션 풀을 가지고 오지 못하여 발생할 수도 있는 사항입니다.
예상되는 것은 톰켓(WAS)에서 컨넥션 풀을 닫거나 (오래 쓰지않을 경우 닫는 경우도 있음)
아니면 할당된 커넥션 풀이 모두 소진 되어 할당한 컨넥션 풀이 없는 경우에도 발생할 수 있습니다.
관련 이슈는 여러 상황에서 발생하기에 정확한 진단을 어렵습니다.
다각적인 방법으로 테스트를 하시여 원인 분석이 되어야 할 듯 합니다.
감사합니다.
설정 내용을 보면 JNDI를 설정하여 사용하시는 부분이 맞습니다.
로그 내용과 쿼리도 찍히지 않는 사항으로 보아 loginDAO에서
DB 커넥션 풀을 가지고 오지 못하여 발생할 수도 있는 사항입니다.
예상되는 것은 톰켓(WAS)에서 컨넥션 풀을 닫거나 (오래 쓰지않을 경우 닫는 경우도 있음)
아니면 할당된 커넥션 풀이 모두 소진 되어 할당한 컨넥션 풀이 없는 경우에도 발생할 수 있습니다.
관련 이슈는 여러 상황에서 발생하기에 정확한 진단을 어렵습니다.
다각적인 방법으로 테스트를 하시여 원인 분석이 되어야 할 듯 합니다.
감사합니다.