이클립스 오프라인 환경에서 XML 자동완성 설정하기



인터넷이 안되는 폐쇄망 환경에서 이클립스 XML 에디터가 DTD/XSD를 가져오지 못해 자동완성이 안 될 때 해결하는 방법입니다.



언제 필요한가요?



  • 폐쇄망(인터넷 차단) 개발 환경

  • 외부 DTD/XSD 접근이 차단된 경우

  • XML 편집 시 자동완성이 느리거나 타임아웃 발생

  • Spring, MyBatis 등의 XML 설정 파일 편집 시



문제 상황


XML 파일 상단의 DOCTYPE이나 schemaLocation이 외부 URL을 참조하면, 이클립스가 해당 URL에 접근하려다 타임아웃되거나 실패합니다.


<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">


해결 방법 1: XML Catalog 설정


1. Window → Preferences
2. XML → XML Catalog 선택
3. Add 버튼 클릭
4. Location: 로컬 DTD/XSD 파일 경로
Key Type: Public ID 또는 URI
Key: 원래 외부 URL

예시:
- Location: /home/user/dtd/mybatis-3-mapper.dtd
- Key Type: Public ID
- Key: -//mybatis.org//DTD Mapper 3.0//EN


해결 방법 2: 네트워크 타임아웃 조정


1. Window → Preferences
2. General → Network Connections
3. Connection timeout, Read timeout 값을 낮게 설정 (예: 1000ms)

또는 프록시 설정:
- Active Provider: Manual
- 빈 프록시 설정으로 외부 연결 차단


해결 방법 3: DTD/XSD 다운로드 비활성화


1. Window → Preferences
2. XML → XML Files → Validation
3. "Honour all XML schema locations" 해제
4. "Use grammar specified in document" 해제


자주 사용하는 DTD/XSD 로컬 등록



MyBatis


Location: mybatis-3-mapper.dtd (로컬 파일)
Key Type: Public ID
Key: -//mybatis.org//DTD Mapper 3.0//EN

Location: mybatis-3-config.dtd
Key Type: Public ID
Key: -//mybatis.org//DTD Config 3.0//EN


Spring


Location: spring-beans-4.3.xsd
Key Type: URI
Key: http://www.springframework.org/schema/beans/spring-beans-4.3.xsd

Location: spring-context-4.3.xsd
Key Type: URI
Key: http://www.springframework.org/schema/context/spring-context-4.3.xsd


web.xml (Servlet)


Location: web-app_3_1.xsd
Key Type: URI
Key: http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd


DTD/XSD 파일 구하기


# 온라인 환경에서 미리 다운로드
curl -O http://mybatis.org/dtd/mybatis-3-mapper.dtd
curl -O http://mybatis.org/dtd/mybatis-3-config.dtd

# Spring (Maven 로컬 저장소에서)
~/.m2/repository/org/springframework/spring-beans/4.3.x/
→ spring-beans-4.3.x.jar 압축 해제 후 META-INF 폴더


프로젝트별 설정


프로젝트 우클릭 → Properties → XML Catalog
→ 해당 프로젝트에만 적용되는 카탈로그 설정


eclipse.ini 설정 (선택)


# 외부 연결 완전 차단
-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=
org.eclipse.ecf.provider.filetransfer.httpclient4


확인 방법



  1. XML 파일 열기

  2. Ctrl + Space로 자동완성 테스트

  3. 에러 마커 사라졌는지 확인

  4. Window → Show View → Error Log에서 네트워크 오류 확인