레거시

오래된 프로젝트 복원 -2-

Drider 2026. 6. 16. 21:47

※ 본 블로그 글은 가상의 레거시 프로젝트 학습을 위한 가상의 시나리오 입니다.

 

레거시 프로젝트 로컬 구축: DDL 스크립트부터 Tomcat 구동까지

> 작성일: 2026-06-16  
> 프로젝트: 옛날시스템
> DB: Oracle 11g SE → SID: 옛날   
> WAS: Tomcat 고대 버전 + Java 고대 버전


1. DB에 DDL 스크립트 설치


-옛날변종 테이블 생성

SQL\*Plus에서 DDL 파일 실행:

```sql
CREATE USER 옛날변종 IDENTIFIED BY 옛날변종 DEFAULT TABLESPACE 신옛날변종;
GRANT CONNECT, RESOURCE, DBA TO 옛날변종;

@D:\레거시\kkk\옛날변종\옛날변종_Tables_singlefile.sql
@D:\레거시\kkk\옛날변종\옛날변종_Indexes_singlefile.sql
@D:\레거시\kkk\옛날변종\옛날변종_Sequences_singlefile.sql
```

→ 옛날변종 테이블 수십 개 생성 성공 ok

-옛날1 테이블 생성 — 삽질의 시작

```sql
CREATE USER 옛날1 IDENTIFIED BY 옛날1 DEFAULT TABLESPACE 옛날1;
GRANT CONNECT, RESOURCE, DBA TO 옛날1;

@D:\레거시\kkk\옛날1_tables_singlefile.sql
```

-문제 1: 테이블스페이스 USERS 없음

```
ORA-00959: 테이블스페이스 'USERS'이(가) 존재하지 않습니다
```

DDL이 `TABLESPACE USERS`로 되어 있었는데 USERS가 없었다.

```sql
CREATE TABLESPACE USERS DATAFILE 'C:\oradata\옛날1\users01.dbf' SIZE 500M;
```

-문제 2: Quota 부족

```
ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다
```

```sql
GRANT UNLIMITED TABLESPACE TO 옛날1;
```

-문제 3: 옛날1 사용자 재생성

기존에 수십 개만 생성된 상태에서 다시 실행하자 중복 오류.  
처음부터 다시:

```sql
DROP USER 옛날1 CASCADE;
CREATE USER 옛날1 ...;
GRANT ...;
@D:\레거시\kkk\옛날1_tables_singlefile.sql
```

→ 옛날1 테이블 수백 개 생성 성공 ok

-나머지 객체 설치

```sql
@D:\레거시\kkk\옛1_Indexes_singlefile.sql     
@D:\레거시\kkk\옛1_Sequences_singlefile.sql  
@D:\레거시\kkk\옛1_Views_singlefile.sql      
@D:\레거시\kkk\옛1_Procedures_singlefile.sql  
@D:\레거시\kkk\옛1_Functions_singlefile.sql   
@D:\레거시\kkk\옛1_Packages_singlefile.sql    
@D:\레거시\kkk\옛1_Triggers_singlefile.sql    
@D:\레거시\kkk\옛1_Synonyms_singlefile.sql    
```

-DB 구축 완료


---


2. Eclipse + Tomcat 설정:


-Eclipse 워크스페이스 발견

 

개발자 K의 Eclipse 워크스페이스가 보존 돼 있었음:

```
D:\레거시\옛날자료\10년전\K의 이클립스_옛날_머가_어쩌고_저쩌고서버_서버\
```

여기에는 다음이 들어 있었다:

- '옛_신개발' - 옛 프로젝트 (Eclipse 프로젝트)
- '옛_어쩌고' - 옛2 프로젝트
- 'Servers/' - Tomcat 서버 설정
- '옛_신개발.war' - 배포용 WAR 파일
- '옛_어쩌고.war' - 옛2 WAR 파일

-오류 1: component-scan JDK 버전

Spring 고대 버전의 `component-scan`이 Java 17을 인식하지 못했다:

```
java.lang.IllegalStateException: Context namespace element 'component-scan'
and its parser class ... are only available on JDK 고대 and higher
```

원인: Java 17의 버전 문자열이 "17"인데 Spring 고대 버전은 "1.x" 형식만 인식.

처음에는 'egov-com-servlet.xml'에서 'component-scan'을 주석 처리.  
나중에 Java 고대 버전으로 변경 하기로 함.

-오류 2: --add-opens 옵션

Java 17에서는 필요했던 '--add-opens' 옵션이 Java 8에서는 오류:

```
Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED
```

해결: VM arguments에서 '--add-opens' 옵션 제거

-오류 3: JSP ClassFormatException (아직 해결 중)

```
java.io.ObjectInputStream cannot be resolved
```

Tomcat 고대 버전의 내장 JDT 컴파일러가 Java 8과 호환되지 않아서 발생.  
해결책: Eclipse에서 Tomcat의 JRE를 Java 고대 버전으로 변경

---

-Spring 정상 기동 확인:

'egov-com-servlet.xml'에서 두 개 이상이던 'component-scan' 중 주석 처리 안 된 게 있었음. 마저 주석 처리함.

 

Spring은 정상 기동:

```
Servlet 'action' configured successfully
Server startup in 4287 ms
```

---


예전 개발자의 워크스페이스를 찾으면 설정이 반은 끝난 것

---

-최종 권장 환경

| 항목        | 권장                                    |
| ----------- | ----------------------------------- |
| Java       | Java 고대 버전                    |
| Tomcat   | Tomcat 고대 버전                |
| DB         | Oracle 11g SE                    |
| Eclipse  | K의 워크스페이스                 |

---

- 앞으로 할 일

- [ ] Eclipse에서 Tomcat JRE를 Java 고대 버전으로 변경
- [ ] 브라우저에서 레거시 웹 접속
- [ ] 화면 정상 출력 확인

'레거시' 카테고리의 다른 글

오래된 프로젝트 복원 -1-  (0) 2026.06.16
(레거시) StackOverflowError, 순환 참조 오류  (0) 2025.07.22