오브젝트
·
후기/책
보호되어 있는 글입니다.
[DockerCompose]Error: "failed to create task for container: Unavailable: error reading from server
·
트러블슈팅
블루 컨테이너가 동작 중일 때 도커 컴포즈를 이용하여 그린 컨테이너를 만들고, 실행시키는 명령어를 입력했다.도커 컴포즈 명령어는 잘먹혔는데, 문제는 컨테이너가 Created 상태에서 도무지 Up 상태로 변경되지 않는다는 것이었다. 이와 더불어, EC2 접속이 안되는 문제가 발생했다. 즉 먹통이 됐다! TRY 1: 로그... 로그를 보자 docker logs spring-greenUp이 되지 못하는 비운의 컨테이너의 이름은 spring-green이었다. 그런데 컨테이너 로그가 아무것도 안보였다. 쩝그래서 도커 데몬 로그도 보고, 괜히 spring-blue나 aws 관련 로그를 뒤적거려봤는데 이상이 없었다. 일단 다른 것들을 먼저 확인해보기 시작했다. TRY 2: 네트워크를 보자뮤넥팅 서버는 레디스를 인증/..
[Redis Error] Unable to send PING command over channel
·
트러블슈팅
"2024-10-21T15:09:37.643Z ERROR 1 --- [munectingV4] [isson-timer-4-1] o.r.c.handler.PingConnectionHandler : Unable to send PING command over channel: [id: 0x35370019, L:/172.18.0.3:38076 - R:redis/172.18.0.2:6379] org.redisson.client.RedisTimeoutException: Command execution timeout for command: (PING), params: [], Redis client: [addr=redis://redis:6379] at3.36.0 버전을 사용하고 있었는데, 3.37.0 버전으로 업그레이드하..
@ResponseBody를 이용한 응답 과정 알아보기
·
Spring
@ResponseBody@Controller 어노테이션이 있는 컨트롤러(핸들러) 메소드에서 사용 가능하다. @ResponseBody 어노테이션을 Controller method에 달아주면 메소드의 return value가 Http 응답 본문(body)에 전달된다.하지만 API를 구현할 때, 보통 @ResponseBody 보다는 @RestController를 클래스 레벨에서 사용하는 경우가 많다. @RestController@RestController 는 @Controller 를 기반으로 하는 어노테이션으로, @RestController 컨트롤러에 존재하는 모든 메서드에 @ResponseBody  를 적용한다.즉, @RestController 는 @Controller  와 @ResponseBody 를 합친..
HttpServletResponse와 HttpOutputMessage
·
Spring
ServletResponse서블릿에서 클라이언트에게 응답을 제공하기 위한 목적의 인터페이스이다. HttpServletResponse서블릿에서 Http 응답을 제공하기 위한 목적의 인터페이스이다.  HttpMessageSpring에서 Http 요청 및 응답 메시지를 다루기 위한 목적의 기본 인터페이스이다. HttpOutputMessage말그대로 HTTP output message를 위한 인터페이스이다. Http 서버 입장에서 보자. - Http request는 input message이다. 따라서  server side에서 Http 요청을 다룰 때 사용하는 인터페이스는  HttpInputMessage 를 상속 받은 ServerHttpRequest 인터페이스이다.- Http response는 output m..
서블릿에서 HTTP Response 보내기
·
Spring
서블릿에서 원하는 HTTP 응답을 보내기 위해서는 HttpServletResponse 을 설정하면 된다.TMI ✨이렇게 서블릿 중에서도 HTTP 요청과 응답을 다루는 서블릿을 HTTP servlet 이라고 부른다.서블릿은 웹 서버에서 동작하는 작은 자바 프로그램이다. 서블릿은 웹 클라이언트로부터 요청을 받고, 이에 응답하는데 다들 알다시피 일반적으로 HTTP 요청/응답을 처리하는데 사용된다. 1. setContentType()을 통해 응답할 response의 content type을 정해주자. 이때 옵션으로 인코딩 방식도 정해줄 수 있다. res.setContentType("text/html;ISO-88859-4"); 2. 응답 헤더를 지정하자. setHeader()를 이용하면 된다. res.setHea..
오버라이딩
·
JAVA
자식(서브) 클래스는 부모(슈퍼) 클래스의 메서드를 재정의 할 수 있다. 이를 오버라이딩(Overriding)이라고 한다. 이러한 오버라이딩에는 제한 조건이 붙는다. 1. 메소드 이름이 같아야 한다.2. 자식 클래스의 접근 제어자는 부모 클래스 메서드의 접근제어자의 범위와 같거나 넓어야 한다.예시) A 클래스의 exam 메소드 접근 제어자가 protected라면 이를 오버라이딩하는 B 클래스의 exam 메소드는 protected, public만 가능하다. private, defalut는 불가능하다.3. 반환타입이 같아야 한다.4. 메소드 파라미터(매개변수)의 개수, 타입, 순서가 같아야 한다. 매개변수명은 달라도 괜찮다.5. 예외(설명 추가 예정) 오버라이딩 규약 조건을 지키지 않은 경우 컴파일 오류를 ..
springboot Could not move temporary workspace 오류
·
트러블슈팅
새로 프로젝트를 만들고 프로젝트 빌드 진행 시 springboot Could not move temporary workspace 오류가 발생했다.아래 글과 같은 상황이었고, 보안 프로그램의 실시간 보호 기능을 비활성화해서 해결했다. 보호 솔루션이 Spring Boot의 파일 작업을 의심스러운 활동으로 감지하고 차단했나보다.   https://www.inflearn.com/questions/1209468/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%B2%AB-%EC%8B%A4%ED%96%89%EB%B6%80%ED%84%B0-%EA%B3%84%EC%86%8D-%EC%98%A4%EB%A5%98%EA%B0%80-%EB%82%98%EC..