'Struts'에 해당되는 글 1건

  1. 2009/06/11 HTTP Status 404 - Servlet action is not available (1)
Computing/Programming2009/06/11 13:31
오늘 만난 에러이다.

스트러츠 1.3.10을 사용한 웹 애플리케이션을 개발하던 도중 만났다.;

전체 메시지는 다음과 같다.

HTTP Status 404 - Servlet action is not available

type Status report
message Servlet action is not available
description The requested resource (Servlet action is not available) is not available.

Apache Tomcat/5.5.27

고맙게도 에러 메시지는 저게 다다.;;;;

자... 뭐가 문젤까? 이런 경우 가장 크게 의심이 가는 건, 역시 설정 파일이다. web.xml 파일과 struts-config.xml 파일을 이잡듯 뒤졌지만, 뚜렷한 원인을 찾지 못했다.

구글링을 해보니, 역시나 그런 쪽 문제이다. 톰캣이 스트러츠의 액션 서블릿을 초기화하다 무슨 문제가 생긴 것이다. 그런데 로그도 찾을 수 없고, 에러 메시지는 저게 달랑 다라서 좀 헤맸다.;

결론적으로는 struts-config.xml 파일의 문제였다. <controller> 앨리먼트와 <message-resources> 앨리먼트의 속성으로 아직 만들지 않은 자바 클래스를 지정해 뒀던 것이다. 이것이 문제가 되어 스트러츠 액션 서블릿이 제대로 로드가 되지 않았던 것 같다.

결국, servlet-config.xml 파일의 어떤 부분에서라도 잘못이 있으면 스트러츠를 사용할 수 없다. 부분적(?)으로도 기동하지 않는다는 것이다.

이번 일로, 역시 에러 메시지의 중요성에 대해 깨달았다.; 그냥 저렇게만 떡하니 나오니 이거 서울에서 김서방 찾기지..;;;

그리고 나서 웹 애플리케이션을 다시 구동해 보니 이제 저 에러는 사라졌다. 단지 그 다음 에러가 났을 뿐이다.;;

그래도 이번엔 예외 스택에 쌓인 에러 메시지가 주~~욱 나와 주신다. 이런 고마울 데가!! ^^;;;

** 추가 **

개발 서버에서 배포 서버로 웹 애플리케이션을 WAR 형태로 배포한 뒤에 배포 서버에서 또 위와 같은 에러가 나왔다.;;

문제의 소지가 역시 struts-config.xml에 있을 것이라고 판단하였지만, 개발 서버에서는 동일한 내용을 가지고 잘 실행이 되는 것이, 배포 서버에서만 안된다는 것이 이상했다.

...........약 12시간 동안 별의 별 삽질을 다 하였지만 결국 해결을 못했다. 톰캣 설정과 로그도 다 뒤져가면서..; 대체 어디가 문제란 말인가....

좌절의 늪에서 기어 나와 다시 삽을 들고 struts-config.xml을 파기 시작했다. 이번에 취한 approach는 struts-config.xml 내의 앨리먼트를 하나씩 주석 처리해 가며 결과를 보는 것이었다.

이럴 수가, <form-beans> 앨리먼트가 문제였다. 대체 나의 폼빈들이 무엇이 문제가 있단 말인지... 그 순하디 순한 아이들이...

<form-beans> 앨리먼트를 주석 처리하고 웹 애플리케이션을 돌려보니 일단 된다. 하다보니 예외가 발생하였는데 그 예외인 즉,

java.lang.UnsupportedClassVersionError: Bad version number in .class file

였다...

아뿔싸!!

그제서야 주마등처럼 머리를 스치고 지나가는 생각. 개발 서버에서의 자바 버전은 6이고, 배포 서버에서의 자바 버전은 5였던 것이다!!! >_<;;

사소한 차이라고 여겨졌던 그 차이는, 결국 개발 서버에서 자바 6로 컴파일된 나의 폼빈 클래스들이 배포 서버의 자바 5 런타임에서 구동되지 못하도록 했고, 폼빈이 제대로 구동되지 않자 스트러츠의 ActionServlet 요놈이 체대로 초기화 되지 못했던 것이다...

모든 수수께끼는 풀렸어!

라고 말하는 김전일이 생각난다.;;;

그의 명대사 하나가 더 생각이 나는군..

어쨌거나 범인은 이 안에 있다..

어쨌거나 범인(원인)은 이 안(struts-config.xml 안)에 있다............-_-;;;

감히 확신하건대, 스트러츠 사용 시 'Servlet action is not available'이라는 에러가 나는 것은 거의 이 struts-config.xml 이 놈 때문이고, 이 놈을 잘 살펴보다보면 사건(?)의 실마리를 잡을 수 있다.

안의 설정들을 주석 처리해가며, 수사망(?)을 좁혀가는 것이다. 수사망을 좁히다보면 용의선 상에 오르는 놈이 있다. 이 놈을 족쳐야 한다...;

아무튼 12시간의 사투 끝에, 놈을 검거했고 이제는 저 골치아픈 메시지를 보지 않게 됐다.

그러나 모른다. 언제 어디서 놈이 우릴 노릴지...

그래서 우리는 항상 그를 경계하여야 할 것이다....

- THE END -

ps. 흠? 글이 어쩌다가 이렇게 됐지? -_-;;;;


Posted by pcandme

TRACKBACK http://pcandme.net/trackback/68 관련글 쓰기

댓글을 달아 주세요

  1. 저도 설정땜에 몇십분 헤매다가 님의 글 보고 struts-config.xml 파일에서 문제를 찾았네요

    감사합니다^^~

    2011/07/04 09:39 [ ADDR : EDIT/ DEL : REPLY ]