166 lines
3.5 KiB
Plaintext
166 lines
3.5 KiB
Plaintext
|
|
---
|
||
|
|
description:
|
||
|
|
globs:
|
||
|
|
alwaysApply: true
|
||
|
|
---
|
||
|
|
# 트러블슈팅 가이드
|
||
|
|
|
||
|
|
## 일반적인 문제 해결
|
||
|
|
|
||
|
|
### 애플리케이션 시작 오류
|
||
|
|
|
||
|
|
#### 데이터베이스 연결 실패
|
||
|
|
```
|
||
|
|
원인: JNDI DataSource 설정 문제
|
||
|
|
해결:
|
||
|
|
1. tomcat-conf/context.xml 확인
|
||
|
|
2. PostgreSQL 서비스 상태 확인
|
||
|
|
3. 데이터베이스 접속 정보 확인
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 클래스 로딩 오류
|
||
|
|
```
|
||
|
|
원인: 컴파일되지 않은 Java 파일
|
||
|
|
해결:
|
||
|
|
1. Eclipse에서 프로젝트 Clean & Build
|
||
|
|
2. WebContent/WEB-INF/classes/ 디렉토리 확인
|
||
|
|
3. 누락된 라이브러리 확인 (WebContent/WEB-INF/lib/)
|
||
|
|
```
|
||
|
|
|
||
|
|
### 런타임 오류
|
||
|
|
|
||
|
|
#### 404 오류 (페이지를 찾을 수 없음)
|
||
|
|
```
|
||
|
|
원인: URL 매핑 문제
|
||
|
|
해결:
|
||
|
|
1. @RequestMapping 어노테이션 확인
|
||
|
|
2. JSP 파일 경로 확인 (/WEB-INF/view/)
|
||
|
|
3. web.xml의 servlet-mapping 확인 (*.do 패턴)
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 500 오류 (서버 내부 오류)
|
||
|
|
```
|
||
|
|
원인: Java 코드 실행 오류
|
||
|
|
해결:
|
||
|
|
1. 로그 파일 확인 (log4j 설정)
|
||
|
|
2. MyBatis SQL 오류 확인
|
||
|
|
3. NullPointerException 체크
|
||
|
|
4. 데이터베이스 트랜잭션 오류 확인
|
||
|
|
```
|
||
|
|
|
||
|
|
### 데이터베이스 관련 문제
|
||
|
|
|
||
|
|
#### SQL 실행 오류
|
||
|
|
```
|
||
|
|
원인: MyBatis 매퍼 설정 문제
|
||
|
|
해결:
|
||
|
|
1. mapper XML 파일의 SQL 문법 확인
|
||
|
|
2. parameterType과 resultType 확인
|
||
|
|
3. 테이블/컬럼명 대소문자 확인 (PostgreSQL)
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 트랜잭션 문제
|
||
|
|
```
|
||
|
|
원인: SqlSession 관리 문제
|
||
|
|
해결:
|
||
|
|
1. SqlSession.close() 호출 확인
|
||
|
|
2. try-finally 블록에서 리소스 정리
|
||
|
|
3. 트랜잭션 커밋/롤백 처리
|
||
|
|
```
|
||
|
|
|
||
|
|
### 프론트엔드 문제
|
||
|
|
|
||
|
|
#### JavaScript 오류
|
||
|
|
```
|
||
|
|
원인: jQuery/jqGrid 라이브러리 문제
|
||
|
|
해결:
|
||
|
|
1. 브라우저 개발자 도구 콘솔 확인
|
||
|
|
2. JavaScript 파일 로딩 순서 확인
|
||
|
|
3. jQuery 버전 호환성 확인
|
||
|
|
```
|
||
|
|
|
||
|
|
#### CSS 스타일 문제
|
||
|
|
```
|
||
|
|
원인: CSS 파일 로딩 또는 경로 문제
|
||
|
|
해결:
|
||
|
|
1. CSS 파일 경로 확인
|
||
|
|
2. 브라우저 캐시 클리어
|
||
|
|
3. all.css 파일 확인
|
||
|
|
```
|
||
|
|
|
||
|
|
## 개발 환경 문제
|
||
|
|
|
||
|
|
### Docker 환경
|
||
|
|
```bash
|
||
|
|
# 컨테이너 로그 확인
|
||
|
|
docker-compose logs app
|
||
|
|
|
||
|
|
# 컨테이너 내부 접속
|
||
|
|
docker-compose exec app bash
|
||
|
|
|
||
|
|
# 데이터베이스 접속 확인
|
||
|
|
docker-compose exec db psql -U postgres -d ilshin
|
||
|
|
```
|
||
|
|
|
||
|
|
### Eclipse 환경
|
||
|
|
```
|
||
|
|
문제: 프로젝트 인식 오류
|
||
|
|
해결:
|
||
|
|
1. .project 파일 확인
|
||
|
|
2. .classpath 파일 확인
|
||
|
|
3. Project Properties > Java Build Path 확인
|
||
|
|
4. Server Runtime 설정 확인 (Tomcat 7.0)
|
||
|
|
```
|
||
|
|
|
||
|
|
## 로그 분석
|
||
|
|
|
||
|
|
### 주요 로그 위치
|
||
|
|
- 애플리케이션 로그: log4j 설정에 따름
|
||
|
|
- Tomcat 로그: `$CATALINA_HOME/logs/`
|
||
|
|
- Docker 로그: `docker-compose logs`
|
||
|
|
|
||
|
|
### 로그 설정 파일
|
||
|
|
- [log4j.xml](mdc:WebContent/WEB-INF/log4j.xml) - 로깅 설정
|
||
|
|
- 로그 레벨 조정으로 상세 정보 확인 가능
|
||
|
|
|
||
|
|
## 성능 문제
|
||
|
|
|
||
|
|
### 데이터베이스 성능
|
||
|
|
```sql
|
||
|
|
-- 슬로우 쿼리 확인
|
||
|
|
SELECT query, mean_time, calls
|
||
|
|
FROM pg_stat_statements
|
||
|
|
ORDER BY mean_time DESC;
|
||
|
|
|
||
|
|
-- 인덱스 사용률 확인
|
||
|
|
SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch
|
||
|
|
FROM pg_stat_user_indexes;
|
||
|
|
```
|
||
|
|
|
||
|
|
### 메모리 문제
|
||
|
|
```
|
||
|
|
원인: 메모리 누수 또는 부족
|
||
|
|
해결:
|
||
|
|
1. JVM 힙 메모리 설정 확인
|
||
|
|
2. SqlSession 리소스 정리 확인
|
||
|
|
3. 대량 데이터 처리 시 페이징 적용
|
||
|
|
```
|
||
|
|
|
||
|
|
## 보안 관련
|
||
|
|
|
||
|
|
### 권한 문제
|
||
|
|
```
|
||
|
|
원인: 사용자 권한 설정 오류
|
||
|
|
해결:
|
||
|
|
1. MENU_AUTH_GROUP 테이블 확인
|
||
|
|
2. 사용자 세션 정보 확인
|
||
|
|
3. Spring Security 설정 확인 (있는 경우)
|
||
|
|
```
|
||
|
|
|
||
|
|
### SQL 인젝션 방지
|
||
|
|
```
|
||
|
|
주의사항:
|
||
|
|
1. MyBatis #{} 파라미터 바인딩 사용
|
||
|
|
2. ${} 직접 문자열 치환 지양
|
||
|
|
3. 사용자 입력값 검증
|
||
|
|
```
|