일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- docker
- LOG4J
- intellijIDEA
- log4j2
- mybatis
- Git
- sapfiorielements
- NCP
- MySQL
- nginx
- JavaScript
- springboot
- gson
- JPA
- Linux
- Kubernetes
- nodejs
- Java
- Spring
- BPMN
- maven
- gradle
- VSCode
- tibero
- IntelliJ
- Windows
- useEffect
- dbeaver
- react
- database
- Today
- Total
목록전체 글 (261)
두 손끝의 창조자
github에서 PR을 올렸는데 실패하거나 수정 요청이들어오면 어떻게 하나? 일단 PR에 올라가는 커밋은 단일 커밋으로 해야 프로젝트 이력관리에 유리하게 때문에 그렇게 해야한다. 수정을 하면 커밋이 하나 더 발생할 텐데 그럼 어떻게 하냐? 로컬에서 변경사항을 만들어서 커밋 한 뒤에 한 커밋으로 다시 만든다. 한 커밋으로 만드는 것은 rebase --interactive로 해도 되고 내 같은 경우는 그냥 git commit --amend 로 전 커밋과 바로 합쳐서 한 커밋으로 만들었다. push -f 로 강제로 올리면 github에 올라간 pr도 같이 자동으로 새로운 커밋id로 변경되면서 다시 프로세스가 진행된다. 긋긋 가장 좋은건 올리기전에 체크체크체크
파일을 찾을 수 없을 때 주로 이 예외가 발생하지만, 파일이 너무 많이 열려있어서 OS에서 파일 여러는 것을 막아버릴수도 있다. 이때도 FileNotFoundException 이 발생한다. 메시지는 "Too many open files". 현재 OS에 설정되어 있는 최대 파일 오픈가능 개수를 확인한다. ulimit –a 명령어로 open files 설정값을 확인한 뒤 현재 특정 프로세스에 의해 열린 파일들도 확인한다. lsof -i :[port] 로 특정 포트를 사용하고 있는 프로세스를 확인한다. lsof -p [PID] | wc –l 로 현재 오픈되어 있는 파일들의 개수를 확인하고 적절한 값으로 변경한다. ulimit -n [변경개수] 명령어로 변경한다.
NioEndpoint->AbstractProtocol#process->Http11Processor#service->CoyoteAdapter#service 프로토콜이(HTTP/1.1 이면 Http11NioProtocol) 소켓에서 요청 정보를 받아서 처리할 프로세서를 가져온다. 프로세서는 AbstractProcessorLight를 구현한 구현체가 반환될텐데 HTTP/1.1이면 Http11Processor를 선택 할 것이다. 프로토콜은 프로세서의 service 메소드를 호출하면서 요청처리를 넘긴다. 프로세서에서는 처음으로 Request, Response 객체가 등장하고 CoyoteAdapter의 Service를 호출하면서 컨테이너에 Resquest와 Response객체를 넘긴다.
HTTP 커넥터 요소는 HTTP / 1.1 프로토콜을 지원하는 커넥터 구성 요소를 나타냅니다. 이를 통해 Catalina는 서블릿 및 JSP 페이지를 실행하는 기능 외에도 독립형 웹 서버로 작동할 수 있습니다. 이 구성 요소의 특정 인스턴스는 서버의 특정 TCP 포트 번호에서 연결을 수신합니다. 하나 이상의 이러한 커넥터를 단일 서비스의 일부로 구성 할 수 있으며, 각각은 요청 처리를 수행하고 응답을 생성하기 위해 연관된 엔진으로 전달합니다. 들어오는 각 요청에는 해당 요청 기간 동안 스레드가 필요합니다. 현재 사용 가능한 요청 처리 스레드에서 처리할 수 있는 것보다 더 많은 동시 요청이 수신되면 구성된 최대 값 (maxThreads 속성 값)까지 추가 스레드가 생성됩니다. 더 많은 동시 요청이 수신되면..
서블릿이 올바르게 초기화된 후, 서블릿 컨테이너는 이를 사용하여 클라이언트 요청을 처리할 수 있습니다. 요청은 ServletRequest 유형의 요청 오브젝트로 표시됩니다. 서블릿은 ServletResponse 유형의 제공된 오브젝트의 메서드를 호출하여 요청에 대한 응답을 채 웁니다. 이 오브젝트는 Servlet 인터페이스의 서비스 메서드에 매개 변수로 전달됩니다. HTTP 요청의 경우 컨테이너가 제공하는 객체는 HttpServletRequest 및 HttpServletResponse 유형입니다. 서블릿 컨테이너가 서비스에 배치 한 서블릿 인스턴스는 수명 동안 요청을 처리할 수 없습니다. 멀티 스래드 이슈 서블릿 컨테이너는 서블릿의 서비스 메소드를 통해 동시에 여러 요청을 보낼 수 있습니다. 요청을 처리..