TroubleShooting..일까

Jay·2023년 8월 29일

work

목록 보기
7/16
post-thumbnail

이 포스팅에서 다루던 프로젝트를 드디어 무사히(?) 이식했다.

에러 종류

계속 에러가 나서 eclipse에서 새로 만들어서 하고싶은 마음이 굴뚝같았는데
소장님께서 에러 해결하는데에도 의의가 있다고 하셔서 한번 계속 파들어가봤다. 너무 쉽게만 가면 의미가 없긴 하지!

에러가 나올 때마다 일일이 캡처를 뜨고 다 적을 수는 없었는데 크게 보자면 Class나 bean을 찾을 수 없어서 나는 에러가 많았다.

invocation of destroy method 'close' failed on bean with name 'sqlSessionTemplate' 요 에러도 났는데 이건 이 포스팅을 참고하여 해결했다.

no mapping for GET도 많이 났는데.. 이건 패키지를 잘 못읽어서 난 거임. 이걸 설정하는 base-packageegov-com-servlet.xml이랑 context-common.xml에 있는데 왜 두 개나 있는지는 다시 정리해보도록 하자.

그런데 패키지를 잘 설정해 주었는데도 404에러가 떴었음. 400대 에러는 클라이언트가 잘못한 것이고 500대 에러는 서버가 잘못한 것이다. 그러니까 나는 *.do로 요청을 했는데 이 요청 자체가 잘못됐다는것임. 분명 web.xml에서 *.do읽을 수 있도록 설정했는데 왜 안되는 거임? 왜? (web.xmlfilter-mapping이랑 servlet-mapping에 대해서도 더 알아보도록 하자)

이전 소스를 복사해 보니까 해결이 됐는데 나는 interceptor가 아직은 필요 없었지만 설정이 돼 있었고.. 이게 이전 소스랑 다른 방식으로 설정돼 있었다는 데에 차이가 있었다. 이전 소스에서는 mvc:interceptors를 이용해서 설정했고 내가 건드리던 프로젝트에서는 bean classproperty를 통해서 설정하고 있었는데 후자의 방법이 잘 안된 것.
전자로 바꾸니까 작동이 잘 되었고, 현재는 interceptor가 필요가 없으니 그냥 둘다 주석처리했다.

또 새 프로젝트소스에서는 bean의 id와 ref가 일치하지 않아서 오류가 나는 경우도 있었고.. 파일 경로들이 맞지 않게 설정된 경우도 많았다.

여튼 이번 기회를 통해서 web.xml이랑 egov-com-servlet이랑 context-**소스들은 엄청 많이 본 것 같다. 하지만 많이 봤다고 다 이해한건 아니라는점!

웃긴건 bean을 못읽어와서 새롭게 주입해준 경우가 있는데 모든게 해결된 후에 그 새롭게 주입해준 부분을 주석처리해도 작동이 잘된다는 것이다. 아니 이럴거면 애초에 잘될것이지 왜 이제와서 ..

더 알아볼 점들 정리

  1. 새 프로젝트와 이전 프로젝트의 egov-com-servlet에서 interceptor설정하는 부분이 각기 다름
  2. pom.xml의 jackson 라이브러리를 주석처리하고나서 에러가 없어졌는데 이 라이브러리는 어디에 필요하며 주석처리를 해도 다른 기능에는 문제가 없는지
  3. SLF4J와 관련된 warning
  4. base-packageegov-com-servlet.xml이랑 context-common.xml에 있는데 왜 두 개나 있는지, 새롭게 만든 프로젝트에는 egov-com-servlet에만 패키지들이 여러개 등록되어 있고 context-common에는 기본 egov패키지만 등록돼 있는데 어떻게 다른 패키지의 controller 메서드를 잘 읽는지
  5. web.xmlfilter-mapping이랑 servlet-mapping의 차이

그밖에.. bean설정 관련한 것 등 더 있겠지
여튼 진짜 골치가 아픈 것들이 많았지만 누가 했던 말처럼 정말 console은 대체로 다 알려준다 싶다.

참고한 포스팅들

서블릿 [action]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다.
no bean named available
No bean named 'exceptionTransfer' available
localechangeinterceptor / egovwebloginterceptor
context:component-scan의 include와 exclude
프로젝트 구조와 파일들에 대해서
WEB-INF파일에 직접 접근 불가능함을 설명하는 포스팅
처음 WEB-INF부터 생성하는 것을 설명하는 포스팅
WEB-INF 포스팅1
WEB-INF 포스팅2
WEB-INF 포스팅3
context-idgen.xml

마지막으로

내가 가장 많이 했던 말..
controller로 WEB-INF내부에 접근하기 위해서 작성했던 메서드에 sysout으로 남긴 로그이다.

profile
ㄱ이 아닌 개발자가 되고 싶은 사람

0개의 댓글