디버깅

    TimeZone으로 인한 데이터 조회 실패

    TimeZone으로 인한 데이터 조회 실패

    현재 Voca-World라고 하는 언어 학습 웹 서비스를 운영중이다. 최근에 AWS와 Docker를 이용하여 서버를 배포했는데 저장한 영어 단어가 조회되지 않는 현상이 발생했다. 이 문제를 해결한 과정을 기록하려고 한다. 🔍 문제 해결 과정 문제의 원인을 살펴보기 위해 서버의 로그 파일을 확인해 보았다. 단어 저장시 문제가 생겼을 수 있기 때문에 단어 저장 -> 단어 조회 순서로 로그를 확인해봤다. 저장한 시간보다 9시간 늦은 시간으로 표기되었지만 타임존이 다른걸 생각해보면 문제는 없어보였다. 하지만 로그를 편하게 보기 위해 로그의 시간 기록도 한국 시간으로 바꿔주었다. [logback-variables.properties] LOG_PATTERN=[%-5level] %d{yyyy-MM-dd HH:mm:s..

    JWT 토큰 만료 에러 분석

    🔍 문제 상황 어제까지만 해도 잘 되던 my-page 기능이 제대로 동작하지 않는 문제가 있었다. my-page의 프로세스는 다음과 같다. my-page에 접속한다. 토큰이 있는지 확인한다. 만약 토큰이 없으면 로그인 페이지로 리다이렉트 한다. 토큰이 있으면 백엔드 서버로 이를 전송한다. 백엔드 서버에서 응답을 받는다. 만약 토큰이 유효하지 않으면 로그인 페이지로 리다이렉트 한다. (문제 상황) 토큰이 유효하면 사용자 정보를 JSON 형태로 리턴 받는다. 위와 같이 현재 진행하고 있는 프로젝트 'VOCA'는 JWT토큰을 베이스로 구성되어 있다. 현재 문제는 3-1로 토큰이 만료되거나 유효하지 않았을 때 리다이렉트 기능이 제대로 동작하지 않는다는 것이다. 🔍 Debug 서버의 에러 로그를 확인해보니 예상과..

    [디버깅] Value of type java.lang.String cannot be converted to JSONObject

    이 에러가 뜨면 먼저 데이터베이스에서 받은 결과를 출력해봐야 한다. 아래 코드에서는 onResponse 메소드에 있는 response를 출력해주면 된다. 본인의 경우 ["123","123","123","123","test2"]가 출력되었다. {}가 나오면 JSONObject형태이고 []가 나오면 JSONArray형태이다. JSONArray형태인데 JSONObject를 이용해서 에러가 났다. 아래는 에러가 난 코드이다. Response.Listener responseListener = new Response.Listener() { @Override public void onResponse(String response) { try { /* 주목해서 볼 부분 */ JSONObject jsonObject = n..