이클립스 메이븐 플러그인 m2e 는 의존성 설정된 프로젝트가 로컬에 존재하는 경우 로컬 프로젝트를 참조하고, 존재하지 않는 경우 원격 저장소(넥서스) 에서 jar 를 받아와 참조한다.


그런데 로컬에 존재하는 프로젝트의 jar 파일이 톰캣의 server path lib 경로로 배포(복사)되지 않아서 서버 동작 시 ClassNotFoundException 이 던져지는 경우가 있다.


이 경우 다음과 같은 확인 절차를 따른다.


1. 먼저 web 프로젝트의 pom.xml 재확인

-> 의존성 설정이 정확히 되어있는지 다시 확인한다.



2. 의존 프로젝트의 의존성 트리 확인

-> web 프로젝트 -> 의존 프로젝트가 간접 의존 관계인 경우 그 연결고리가 제대로 맺어져 있는지 확인한다.



3. web 프로젝트의 Java Build path 확인

-> 프로젝트 properties 의 Java Build Path 에서 Maven Dependencies 에 의존 프로젝트가 제대로 떠 있는지 확인한다. 로컬 프로젝트의 경우 로컬 프로젝트 아이콘으로 존재해야 한다.



4. 의존 프로젝트의 Deployment Assembly 확인

-> 여기가 관건이다. 위 1,2,3 은 보통 제대로 설정이 되어 있다. 그럼에도 불구하고 이 문제가 발생하는 경우, 의존 프로젝트의 properties 의 Deployment Assembly 를 본다. 여기의 설정이 다른 정상적인 프로젝트의 설정과 일치하는지 확인한다. 프로젝트 설정이 틀어진 경우 이 메뉴를 클릭하면

...contains invalid values 라는 오류 안내를 내뱉고 아예 메뉴가 열리지 않을 수 있는데, 이 경우 다른 정상적인 프로젝트의 다음 경로의 파일들을 가져와 덮어 쓴다:


  • .settings
  • .classpath
  • .project


그리고 Deployment Assembly 메뉴가 정상적으로 열리는지 확인한다.


확인이 되었으면 프로젝트를 clean-install 후 web 프로젝트를 clean-install, 톰캣 clean 을 한 번 해주자.


com.ibm.db2.jcc.am.SqlSyntaxErrorException:

[jcc][10145][10844][3.62.56] Invalid parameter 1: Parameter

index is out of range. ERRORCODE=-4461, SQLSTATE=42815

com.ibm.db2.jcc.am.SqlSyntaxErrorException:

[jcc][10145][10844][3.62.123] 유효하지 않은 매개변수 1: 매개변수 인덱스가 범위를 벗어납니다.

ERRORCODE=-4461, SQLSTATE=42815



이 오류는 기본적으로 db2 jdbc type 4 드라이버가 named parameter setting 처리 도중 파라미터의 타입과 실제 컬럼의 데이터 타입이 맞지 않는 데서 발생한다. 그런데 2대 이상의 호스트에서 컨테이너를 띄울 때, 간혹 정확히 같은 request 내용을 처리 시 어떤 서버에서는 오류가 발생하고, 어떤 서버에서는 오류가 발생하지 않는 현상이 있다.


이는 db2 jdbc 드라이버 버전의 차이에서 발생하는 현상으로, 제우스의 datasource path 에서 db2 드라이버 버전을 맞춰 주어 해결할 수 있다.


아래는 내 호스트의 jdbc 드라이버 jar 위치이다. 제우스의 webinf-first 설정을 false 로 한다면 이 곳의 드라이버 클래스를 로드 할태니 참고.


.../jeus/lib/datasource/



아래는 ibm 의 관련 내용. JCC driver version 을 3.64.141 이상으로 올릴 것을 권하고 있다.


http://www-01.ibm.com/support/docview.wss?uid=swg1IC86612

MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();


현재 JVM에 로드된 클래스의 물리적 파일 위치를 반환.

+ Recent posts