본문 바로가기

개발중

(617)
Docker / k8s 환경에서 cookie (JSESSIONID) 가 발급되지 않았을 때 해결 방법 ( server.xml Alias 추가로 해결 ) 기존에 일반 서버에서 관리되던 웹을 k8s 에 업로드 해야하는 일이 생겼습니다. 대상 프로젝트는 Spring Core 프로젝트로써 Spring Boot 기반 프로젝트 들과 쿠키 설정하는 방식도 달랐습니다. 문제 1 로그인 관리를 JSESSIONID 쿠키를 사용하여 관리를 하는데, JESSEIONID 가 발급되지 않는다 (?) Api 요청은 정상적으로 이뤄지나 쿠키 발급이 되지 않았다. 정리 1 프로세스들을 아래와 같이 정리해봤습니다. 각각의 파드가 로딩 될 때는 localhost 로 로딩이 되어야 합니다. ( 외장 톰캣이므로 server.xml 에 host 를 적어줘야함 ) 후에 생성된 pod 들에게 접근 할 수 있는 service 를 생성하고 istio 를 이용해 service 에 접근할 수 있는데 이..
클래스 변경과 직렬화: Spring Redis 환경에서의 serialVersionUID 관리 k8s depolyment 의 이미지 버전을 업그레이드 시키니 이런 에러가 발생했습니다. org.springframework.data.redis.serializer.SerializationException: Cannot deserialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to deserialize payload. Is the byte array a result of corresponding serialization for DefaultDeserializer?; nested exception is java.io.InvalidClassException: co..
java.lang.IllegalArgumentException: Attempting to write a row[2] in the range [0,3] that is already written to disk. 잘 돌아가던 액셀 데몬이 오늘은 에러가 나면서 동작하지 않았습니다. ( 매우당황 ) 처음에 발생한 에러는 NullException 이었습니다. row = sheet.getRow(rowLocation); 그래서 혹시 null 이면 row 생성하라는 로직을 추가했습니다. row = sheet.getRow(rowLocation); if (row == null) { row = sheet.createRow(rowLocation); } 그랬더니 생전 처음보는 에러가 났습니다. java.lang.IllegalArgumentException: Attempting to write a row[2] in the range [0,3] that is already written to disk. 아래와 같은 방법으로 해결했습니다..
[SQLNonTransientConnectionException] Could not create connection to database server. Attempted reconnect 3 times. Giving up. 다중 db 를 연결하는 스프링 부트 프로젝트인데 db 정보를 3 개까지 연결할 때는 아무런 이상 없이 잘 도착했습니다. 근데 네번째 db 를 연결하는 순간 아래와 같은 에러가 발생했습니다. java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. ... The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. ... org.springframework.tr..
Spring Batch 로 대용량 일괄처리하기. (대용량 데이터 조회 > 액셀 생성 > 메일 발송) 이슈 Web 에서 대용량 액셀을 생성하는 로직이 있었는데 응답 시간이 지연이 되어 에러가 발생하는 이슈에 부딫쳤습니다. 대안으로 java daemon 을 활용하라는 이야기가 있었지만 (?) 사실 써보고 싶기도 했던 Spring Batch 에 도전해보게 되었습니다 ! 하하하 ... Spring Batch 를 처음 사용해보니 Spring Batch 에 대해 뭔지 알아봐야 했습니다. Spring Batch는 대량의 데이터 처리를 위한 경량화된 프레임워크로, 반복적인 작업을 수행하는 일괄 처리(Batch Processing) 작업을 효율적으로 처리할 수 있는 기능을 제공합니다. 제가 하려고 하는 업무에 딱 ! 이라는 생각이 들어서 Batch 로 프로세스 개발을 시작해보겠습니다. ( 자기 합리화가 시작 .. ? ..
Spring Batch 처음 실행해봅니다. 👨‍💻 ( 완전 간단 예제 ) 전체 코드 입니다. package com.rsn.dic.RsnDictionaryBatch.datamailsend; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; import org.springframework.batch.core.configuration.support.DefaultBatchConfiguration; import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.launch.JobLauncher; ..
[Spring Batch 에러] Caused by:org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAMEFROM BATCH_JOB_INSTANCEWHERE JOB_NAME = ? and JOB_KEY = ?] Spring Batch 시작 후 어플리케이션 기동 하니 바로 에러 발생했습니다. java.lang.IllegalStateException: Failed to execute CommandLineRunner at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:777) ~[spring-boot-3.1.4.jar:3.1.4] at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:758) ~[spring-boot-3.1.4.jar:3.1.4] at org.springframework.boot.SpringApplication.run(S..
SocketException의 수수께끼: 첫 번째 API 호출에서만 왜 실패할까? ( retrofit java.net.socketexception connection reset ) 우리 프로젝트에 내가 Retrofit 설정을 했는데, 이상한 현상 (?) 이 나타났다. 프론트 개발자분께서 이슈를 전달해주기를 아래와 같이 ... 컴퓨터를 껏다가 키고 최초로 웹 프로젝트를 기동시 아래와 같은 에러가 나요. 근데 2, 3, 4 ... 번째는 이런 에러가 안나요. !!!!!!!!! 😡 참고로 java.net.SocketException: Connection reset by peer 이라는 예외는 네트워크 연결 중에 원격 피어(peer)가 연결을 강제로 닫았음을 나타냅니다. 의심할 수 있는 상황은 아래의 상황들이었습니다. 의심해볼 만한 사항 테스트 결과 원격 서버가 과부하 상태거나 다운되어 있음 개발 서버이고 부하 상태가 전혀 없었기 때문에 제외 네트워크 이슈가 발생하여 데이터 전송이 중단됨..