반응형

어플리케이션 배포 특정 페이지만 404 error

서버 환경 
: 네이버 클라우드 플렛폼
: mysql(5.7)-centos-7.2-64 서버 사용
: tomcat 8
: java-1.8.0-openjdk-1.8.0.275.b01-0.el7_9.x86_64
: 전자정부 프레임워크 - 개발자용 개발환경 32bit/64bit(Implementation Tool) Version 3.9.0
: web, was, DB가 한 서버에 있음

1. 늘 그렇듯 배포전 로컬서버에서는 잘 돌아감.
2. /usr/local/tomcat8/conf/server.xml에서 path 설정과 docBase 설정, source 설정을 완벽하게 구성함
3. 특정 페이지 (로그인, 코드 조회 등)는 정상 호출 및 action이 되나 대부분의 페이지는 통신 status가 404
4. 로그상에는 아무것도 안찍힘 (log4j의 레벨을 전부 DEBUG로 수정 배포)
- /usr/local/tomcat8/logs/catalina.2021-01-13.log
5. access 로그상에는 404가 떨어짐 
- /usr/local/tomcat8/logs/localhost_access_log.2021-01-13.txt
6. 인코딩 이슈인 줄 알고 
- /usr/local/tomcat8/conf/server.xml connector에  URIEncoding="UTF-8" 적용
- /usr/local/tomcat8/conf/web.xml filter 태그 추가

<filter>  
    <filter-name>setCharacterEncodingFilter</filter-name>  
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>  
    <init-param>  
        <param-name>encoding</param-name>  
        <param-value>UTF-8</param-value>  
    </init-param>  
    <async-supported>true</async-supported>  
</filter> 


7. 권한 이슈인줄 알고 centos내에서 tomcat user와 group 생성, service 생성하여 톰캣을 구동시켰음에도 변화가 없음
8. 우연히 /usr/local/tomcat8/logs/폴더의 파일 중 catalina.out 파일을 tail을 걸어 보니
4번에서 안찍히던 로그가 보임
### Cause: java.sql.SQLSyntaxErrorException: Table 'sa_db.S_USER' doesn't exist
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException:Table 'sa_db.S_USER' doesn't existexist
9. DB 스키마 설정 및 테이블 데이터를 생성하여 분명 select 하고 배포를 했는데 저런 에러가 떨어짐
10. mysql에서 select * from S_USER를 조회 하니 조회가 안됨
11. 테이블 조회 시 대소문자 구분을 함
12. 테이블 생성 시 테이블명과 컬럼명을 소문자로 생성하였고, 조회를 대문자 테이블명으로 하니 안됨
(희안하게 대문자 컬럼명은 조회 가능)
테이블 명 소문자로 변경 후 배포하니 정상작동

※ 아마 mysql 버전별 테이블의 대소문자를 가리는 이슈일것 같음


※ 로컬 환경에서 잘돌아가서 소스는 문제 없다고 판단, was 로그 확인을 소홀히 했다.
아니 어떤게 찐 was 로그인지 몰랐다. 에러 발생하면 무조건 로그를 확인하자.

 

반응형

+ Recent posts