일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kubernetes
- useEffect
- jetbrains
- IntelliJ
- springboot
- nodejs
- dbeaver
- MySQL
- Spring
- Windows
- intellijIDEA
- NCP
- nginx
- kubectl
- wildfly
- react
- LOG4J
- docker
- log4j2
- JavaScript
- tibero
- Git
- Java
- database
- VSCode
- gradle
- gson
- mybatis
- BPMN
- JPA
- Today
- Total
목록프로그래밍언어/Java (28)
두 손끝의 창조자
파일을 찾을 수 없을 때 주로 이 예외가 발생하지만, 파일이 너무 많이 열려있어서 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객체를 넘긴다.
서블릿이 올바르게 초기화된 후, 서블릿 컨테이너는 이를 사용하여 클라이언트 요청을 처리할 수 있습니다. 요청은 ServletRequest 유형의 요청 오브젝트로 표시됩니다. 서블릿은 ServletResponse 유형의 제공된 오브젝트의 메서드를 호출하여 요청에 대한 응답을 채 웁니다. 이 오브젝트는 Servlet 인터페이스의 서비스 메서드에 매개 변수로 전달됩니다. HTTP 요청의 경우 컨테이너가 제공하는 객체는 HttpServletRequest 및 HttpServletResponse 유형입니다. 서블릿 컨테이너가 서비스에 배치 한 서블릿 인스턴스는 수명 동안 요청을 처리할 수 없습니다. 멀티 스래드 이슈 서블릿 컨테이너는 서블릿의 서비스 메소드를 통해 동시에 여러 요청을 보낼 수 있습니다. 요청을 처리..
서블릿이란? 서블릿은 컨테이너로 관리되는 동적 콘텐츠를 생성하는 Java ™ 기술 기반 웹 컴포넌트입니다. 다른 Java 기술 기반 구성 요소와 마찬가지로 서블릿은 플랫폼에 독립적인 Java 클래스로, 플랫폼에 중립적인 바이트 코드로 컴파일되어 Java 기술 지원 웹 서버에 동적으로 로드되어 실행될 수 있습니다. 서블릿 엔진이라고도하는 컨테이너는 서블릿 기능을 제공하는 웹 서버 확장입니다. 서블릿은 서블릿 컨테이너에 의해 구현된 요청 / 응답 패러다임을 통해 웹 클라이언트와 상호 작용합니다. 서블릿 컨테이너란? 서블릿 컨테이너는 요청 및 응답이 전송되는 네트워크 서비스를 제공하고 MIME 기반 요청을 디코딩하며 MIME 기반 응답을 형식화하는 웹 서버 또는 애플리케이션 서버의 일부입니다. 서블릿 컨테이너..
프래임워크를 사용한 애플리케이션의 상태를 확인하기 위해서 오픈소스 성능 분석도구 Scouter를 적용해봤다. 구성요소 및 역할 1. 정보를 수집하는 Collector. 타겟에서 발생하는 이벤트를 수집한다. 타겟에 설치한 Host Agent와 Java Agent로 정보를 받는다. 6100 포트를 사용한다. 2. WAS가 설치된 서버의 상태를 컬렉터로 송신하는 Host Agent 3. WAS에 붙어서 애플리케이션 상태를 컬렉터로 송신하는 Java Agent 4. 컬렉터가 수집한 정보를 모니터링하는 Client. 이클립스 기반 클라이언트는 컬렉터의 ID를 환경설정에서 설정한 뒤 사용한다. 웹 버전 클라이언트도 공개되어 있다. 설치 아래 사이트에 접속한 뒤 최신버전을 다운로드 한다. 파일은 scouter-all..
이 Appender에 환경변수값을 바인딩할 수 있는 표현식 ${sys:key} 에서 환경변수에 그 값이 없으면 기본값으로 가지도록 하고자 할 때는 local 에 를 추가하면 된다. 표현식 내에서 직접 넣고 싶으면 ${sys:fileHourName:-하고싶은값} 형태로 선언하면 된다. 프로퍼티 내에 표현식이 있을 때도 마찬가지로 하면 된다. INFO ${sys:systemLogLevel} http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution
HttpClient 전송중에 커넥션에 끊기면 자동적으로 재송신 시도를 한다. 필요에 따라 재전송하면 안되는 경우에 하는 조치이다. HttpClientBuilder.create().disableAutomaticRetries().build();
핵심 Interface PlatformTransactionManager getTransaction() commit() rollback() TransactionDefinition 트랜잭션 4가지 속성 구현체 DataSourceTransactionManager TransactionAPI를 이용해서 관리 트랜잭션을 적용할 datasource가 빈으로 등록되어 있어야 함 JDBC과 SqlMap으로 만든 DAO에 적용가능함 트랜잭션을 적용할 DAO가 사용하는 것과 동일한 datasource를 빈으로 제공해야 함 Datasource를 getConnection()이 호출될때마다 매번 새로운 Connection을 돌려줘야 함 ThreadLocal 등을 이용해 트랜잭션을 저장해두고 돌려주는 특별한 기능을 가진 DataS..