Category Archives: Tip

tip, trubleshooting
도움이 되는 팁 또는 문제해결을 다룹니다.

[Tip | Java – Spring] BeanCreationException

서비스 시작시 아래메시지가 발생하였다. 문제를 확인하고 해결해보자.
Error Message.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘OpdController‘: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘OpdService‘ available


작성일 : 2021-03-24

컨텍스트에 없는 빈을 주입하려 할때 발생한다.
OpdService에 @Service 어노테이션을 선언해주어야 한다.

@Controller
public class OpdController {

   @Autowired
   private OpdService opdService;
   ...

}
@Service
public class OpdServiceImpl implements OpdService {
   ...
}

다른 빈 ID를 사용하려 했을때 실수로 잘못된 이름에 주의한다.

@Controller
public class OpdController {

   @Autowired
   @Qualifier("renameService")
   private OpdService opdService;
   ...

}
<!-- XML 선언 -->
<bean id="renameService" class="com.opendocs.project.OpdServiceImpl" />
// Annotation 선언
@Service("renameService")
public class OpdServiceImpl implements OpdService {
   ...
}

[Tip | Windows10] 서비스 포트 확인

윈도우 환경에서 포트를 확인하고 사용중인 프로세스를 종료하는 방법을 설명한다.
포트가 이미 사용중이라는 에러 메시지가 발생할 경우 프로세스를 종료해야만 한다.
(예, Eclipse 비정상 종료시 tomcat이 종료되지 않아 아래와 같은 메시지를 출력한다.)


테스트환경 : Windows10
작성일 : 2021-02-20

1> 사용중인 프로세스를 확인

# 명령프롬프트 실행 또는 실행(윈도우키 + R) > cmd
netstat -ano | findstr "8005 8080 8009"

2> 프로세스 종료
왼쪽(로컬주소)에서 사용중인 프로세스 PID 5288 을 taskkill명령으로 종료한다.

taskkill /f /pid 5288

명령 실행 후 프로세스 종료를 확인한다.

[Tip | CentOS] 서비스 로그 확인

프로젝트 테스트 또는 운영시 에러추적을 위해 로그를 남기게 된다.
리눅스 환경에서 로그분석을 위한 명령어 사용법을 설명한다.


테스트서버 : CentOS
작성일 : 2021-02-19

TIP.
Case 1. 실시간 로그 확인중 에러발생
에러가 발생한 시간이나 키워드로 4> 지난 로그 확인 방법을 활용
Case 2. 에러 발생 후 로그 확인
에러 추적 범위를 좁혀가며 에러를 찾는다. 
(ex. 시간조건으로 파일을 출력 > 단어조건으로 파일을 출력 > 특정단어로 확인)
특히, 로그파일의 용량이 클경우 범위를 좁혀가며 추적해야만 파일을 열고 닫을때 소모되는 시간을 줄일 수 있다.

1> 실시간 로그 확인

# 로그파일을 실시간으로 모니터링
tail -f {로그파일}

# 로그파일 중 특정단어가 포함된 라인만 모니터링
# - error가 포함된 라인 출력(대소문자 미구분)
tail -f {로그파일} | grep -wi 'error'
# - error or wran or exception 포함된 라인 출력(여러단어)
tail -f {로그파일} | grep -wi 'error\|warn\|exception'

2> 지난 로그 확인 – 특정단어포함

# error가 포함된 라인 출력(대소문자 미구분)
grep -ri 'error' {로그파일}
grep -ri 'error' {로그파일} > {출력파일}

# error or wran or exception 포함된 라인 출력(여러단어)
grep -ri 'error\|warn\|exception' {로그파일}
grep -ri 'error\|warn\|exception' {로그파일} > {출력파일}

3> 지난 로그 확인 – 특정단어불포함

# debug가 불포함된 라인 출력(대소문자 미구분)
grep -vi 'debug' {로그파일}
grep -vi 'debug' {로그파일} > {출력파일}

# debug or trace 불포함된 라인 출력(여러단어)
grep -vi 'debug\|trace' {로그파일}
grep -vi 'debug\|trace' {로그파일} > {출력파일}

4> 지난 로그 확인 – 특정시간 또는 에러시 출력되는 문구

# 에러가 발생한 시간대 위아래 2000라인
grep -C 2000 -i '2021-02-19 16:27\|2021-02-19 16:30' {로그파일}
grep -C 2000 -i '2021-02-19 16:27\|2021-02-19 16:30' {로그파일} > {출력파일}

# 에러문구 위아래 2000라인
grep -C 2000 -i 'Null Pointer Exception\|File Not Found' {로그파일}
grep -C 2000 -i 'Null Pointer Exception\|File Not Found' {로그파일} > {출렦파일}