달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'Develope/Spring'에 해당되는 글 2건

  1. 2016.05.24 ContextLoaderListener 오류 확인 참고용 1
  2. 2014.03.03 Spring에서 SQL Eception 처리하기. Spring
반응형
출처: http://open.egovframe.go.kr/nforges/qna/qna/7313/.do
참고용.... 퍼옴....


포털 FAQ의 "ContextLoaderListener 오류 확인" 항목을 참조하셔서 조치하시면 되실 것 같습니다.


내용 복사해 드립니다..


안녕하세요..


이 오류는 이 오류는 maven의 dependency가 정상적으로 처리되지 못한 경우..

tomcat의 server plugin의 임시 deploy 디렉토리에 WEB-INF/lib에 jar들이 정상 배포되지 않기 때문입니다..


해결하시는 방법은..

개발환경 v1.0(eclipse 3.4기반)의 경우는 다음과 같이 조치하시면 되실 것 같습니다.

- Project 메뉴 선택 -> Clean... 선택 후.. 프로젝트 재빌드 수행..

- 프로젝트 선택 -> context menu -> Maven -> Update Project Configuration

- 프로젝트 선택 -> context menu -> Run as -> maven clean

- 프로젝트 선택 -> context menu -> Run as -> maven package 후.. 오류 확인..

- Servers view에서 tomcat 서버 삭제 후.. 재등록...


개발환경 v2.0(eclipse 3.6 기반)의 경우는 다음과 같이 하셔여 합니다.

- 프로젝트 선택 -> context menu -> Properites 선택

- Deployment Assembly 항목 선택 후.. Add.. 선택

- Java Build Path Entries 선택 .. -> Maven Dependencies 선택...


이 경우는 Maven -> Update Project Configuration을 하시면.. 다시 초기화가 되기 때문에.. 재 등록해주셔야 합니다.





반응형
Posted by 친절한 웬디양~ㅎㅎ
|
반응형
SQL Exception의 경우 
DB, jdbc 마다 다 코드의 종류도 에러의 종류도 다르기에
Spring이 wrapper해서 처리해 주는거고,, (공통으로.)
물론 기존의 Exception을 잡아서 처리 할수 있도록 하기 위해.. 
getRootCause() 라는 메소드를 준비해 놓았다.
즉,
Exception이 들어왔다면,, (Exception handler 등을 사용하였다 가정..)
이게 DataAccessException인지 체크하고,
getRootCause() 메소드를 통해서 code를 뽑거나,
기존 Exception 메시지를 뽑으면 된다!!

코드는 간단하다.

if (ex instanceof DataAccessException) {

       SQLException se = (SQLException) ((DataAccessException) ex).getRootCause();

       msg = se.getMessage();

       LOGGER.debug("****** DataAccessException : {} // {}", se.getErrorCode(), se.getMessage());

}

 

처리 방법은 다양하게 응용할 수 있겠다..
 
------------------------------------

벌써 오늘도 두번째 문의가 들어온 내용이라,
왜 이걸 정리 안해놨지? 라는 생각을 하며
올린다..ㅋ


Spring은 SQL Exception이 발생하면
자신의 Exception으로 wrapping해서 throw하기 때문에
기존에 봤었던 SQL Exception에 맞는 메시지처리 등의
작업을 하기 위해서는 별도 작업을 추가적으로 해 주어야 한다.

아래와 같이 instanceof 함수를 이용해서 처리하면 될 것이다.

 

if (ex instanceof BadSqlGrammarException) {

       SQLException se = ((BadSqlGrammarException) ex).getSQLException();

       LOGGER.debug("**BadSqlGrammarException {} ", se.getErrorCode());

}

else if (ex instanceof InvalidResultSetAccessException) {

       SQLException se = ((InvalidResultSetAccessException) ex).getSQLException();

       LOGGER.debug("**InvalidResultSetAccessException {} ", se.getErrorCode());

}

else if (ex instanceof DuplicateKeyException) {

       LOGGER.debug("**DuplicateKeyException {} ", ex.getMessage());

}

else if (ex instanceof DataIntegrityViolationException) {

       LOGGER.debug("**DataIntegrityViolationException {} ", ex.getMessage());

}

else if (ex instanceof DataAccessResourceFailureException) {

       LOGGER.debug("**DataAccessResourceFailureException {} ", ex.getMessage());

}

else if (ex instanceof CannotAcquireLockException) {

       LOGGER.debug("**CannotAcquireLockException {} ", ex.getMessage());

}

else if (ex instanceof DeadlockLoserDataAccessException) {

       LOGGER.debug("**DeadlockLoserDataAccessException {} ", ex.getMessage());

}

else if (ex instanceof CannotSerializeTransactionException) {

       LOGGER.debug("**CannotSerializeTransactionException {} ", ex.getMessage());

}



추가로 스프링 프레임워크에서 처리하는 oracle 에러코드 목록은 아래와 같다.

<bean id="Oracle" class="org.springframework.jdbc.support.SQLErrorCodes">

       <property name="badSqlGrammarCodes">

              <value>900,903,904,917,936,942,17006</value>

       </property>

       <property name="invalidResultSetAccessCodes">

              <value>17003</value>

       </property>

       <property name="duplicateKeyCodes">

              <value>1</value>

       </property>

       <property name="dataIntegrityViolationCodes">

              <value>1400,1722,2291,2292</value>

       </property>

       <property name="dataAccessResourceFailureCodes">

              <value>17002,17447</value>

       </property>

       <property name="cannotAcquireLockCodes">

              <value>54</value>

       </property>

       <property name="cannotSerializeTransactionCodes">

              <value>8177</value>

       </property>

       <property name="deadlockLoserCodes">

              <value>60</value>

       </property>

</bean>


더 자세하게 분석하길 원하면..
org.springframework.jdbc.support.SQLErrorcodesSQLExceptionTranslator Class 참고..

 

반응형
Posted by 친절한 웬디양~ㅎㅎ
|