현상
폐쇄망에서 WAS 기동시 외부의 mybatis-3-config.dtd 파일을 불러 오지 못하고 오류 발생
로그
Caused by: org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [sqlmap/sql-mapper-config.xml];
nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.net.ConnectException: 연결 시간 초과 (Connection timed out)
분석
정상적이라면 dtd 파일은 mybatis-x.x.x.jar 파일안에 있는 dtd 파일을 참조 해야 함
jar 파일 내부 경로에 가보면 mybatis-x.x.x\org\apache\ibatis\builder\xml 경로에 mybatis-3-config.dtd 와 mybatis-3-mapper.dtd 가 있음
처음에는 WAS 문제로 접근 했었으나, tomcat, jeus 동일한 현상 발생
인터넷망에 위치한 개발PC에서도 외부로 dtd 파일을 읽어 오는 것 와이어샤크 통해서 확인 가능
해결
- dtd를 프로젝트에 넣고 참조하게 하는 방법
예) <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "classpath:/com/common/dtd/mybatis-3-config.dtd">
tomcat 에서는 classpath:경로 이런식으로 가능하나, jeus에서는 Cause: java.net.MalformedURLException: unknown protocol: classpath 에러로 사용 못함
근본적인 해결방법이 아니라서 좀 더 분석 진행
- dtd를 서버에 위치하게 하고 참조하게 하는 방법
tomcat, jeus 둘 다 가능하나 개발, 운영, 로컬 형상 관리가 어려움
예) <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "/home/app/dtd/mybatis-3-config.dtd">
근본적인 해결방법이 아니라서 좀 더 분석 진행
- 결론은 스프링 웹어플리케이션의 설정 문제
전자정부프레임워크 + mybatis + ibatis 혼합해서 사용하면 이런 문제 발생함
다른 개발자 인원이 스프링 설정에 ibatis 설정을 집어 넣어 놓았었음
ibatis 관련 설정 삭제 하니 정상적으로 jar안에 있는 dtd 파일 참조함
이 문제 해결하려고 상당한 시간을 헤맴
'개발' 카테고리의 다른 글
스프링 외부 경로 리소스 맵핑 (0) | 2023.01.05 |
---|---|
자바 JNI 사용시 이클립스 스프링 톰캣 java.library.path 설정 방법 (0) | 2022.12.09 |
HSTS 오류 - Strict-Transport-Security 헤더에 오류가 감지됨 (0) | 2022.08.06 |
스프링 빈 전역변수는 thread safe 한가? (0) | 2022.07.20 |
자바스크립트 유니코드 정규식 (0) | 2022.07.09 |