일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- log4j2
- dbeaver
- Git
- Linux
- mybatis
- SAP
- JPA
- VSCode
- Java
- gson
- react
- nodejs
- LOG4J
- NCP
- Windows
- springboot
- Kubernetes
- sapfiorielements
- Spring
- IntelliJ
- gradle
- docker
- tibero
- BPMN
- maven
- database
- JavaScript
- nginx
- useEffect
- MySQL
- Today
- Total
목록분류 전체보기 (263)
두 손끝의 창조자
HTTP 커넥터 요소는 HTTP / 1.1 프로토콜을 지원하는 커넥터 구성 요소를 나타냅니다. 이를 통해 Catalina는 서블릿 및 JSP 페이지를 실행하는 기능 외에도 독립형 웹 서버로 작동할 수 있습니다. 이 구성 요소의 특정 인스턴스는 서버의 특정 TCP 포트 번호에서 연결을 수신합니다. 하나 이상의 이러한 커넥터를 단일 서비스의 일부로 구성 할 수 있으며, 각각은 요청 처리를 수행하고 응답을 생성하기 위해 연관된 엔진으로 전달합니다. 들어오는 각 요청에는 해당 요청 기간 동안 스레드가 필요합니다. 현재 사용 가능한 요청 처리 스레드에서 처리할 수 있는 것보다 더 많은 동시 요청이 수신되면 구성된 최대 값 (maxThreads 속성 값)까지 추가 스레드가 생성됩니다. 더 많은 동시 요청이 수신되면..
서블릿이 올바르게 초기화된 후, 서블릿 컨테이너는 이를 사용하여 클라이언트 요청을 처리할 수 있습니다. 요청은 ServletRequest 유형의 요청 오브젝트로 표시됩니다. 서블릿은 ServletResponse 유형의 제공된 오브젝트의 메서드를 호출하여 요청에 대한 응답을 채 웁니다. 이 오브젝트는 Servlet 인터페이스의 서비스 메서드에 매개 변수로 전달됩니다. HTTP 요청의 경우 컨테이너가 제공하는 객체는 HttpServletRequest 및 HttpServletResponse 유형입니다. 서블릿 컨테이너가 서비스에 배치 한 서블릿 인스턴스는 수명 동안 요청을 처리할 수 없습니다. 멀티 스래드 이슈 서블릿 컨테이너는 서블릿의 서비스 메소드를 통해 동시에 여러 요청을 보낼 수 있습니다. 요청을 처리..
서블릿이란? 서블릿은 컨테이너로 관리되는 동적 콘텐츠를 생성하는 Java ™ 기술 기반 웹 컴포넌트입니다. 다른 Java 기술 기반 구성 요소와 마찬가지로 서블릿은 플랫폼에 독립적인 Java 클래스로, 플랫폼에 중립적인 바이트 코드로 컴파일되어 Java 기술 지원 웹 서버에 동적으로 로드되어 실행될 수 있습니다. 서블릿 엔진이라고도하는 컨테이너는 서블릿 기능을 제공하는 웹 서버 확장입니다. 서블릿은 서블릿 컨테이너에 의해 구현된 요청 / 응답 패러다임을 통해 웹 클라이언트와 상호 작용합니다. 서블릿 컨테이너란? 서블릿 컨테이너는 요청 및 응답이 전송되는 네트워크 서비스를 제공하고 MIME 기반 요청을 디코딩하며 MIME 기반 응답을 형식화하는 웹 서버 또는 애플리케이션 서버의 일부입니다. 서블릿 컨테이너..
web.xml에 두 필터를 설정할 때 순서가 매우 중요하다. Spring-Session이 먼저, Spring-Security가 이어서 와야한다.
프래임워크를 사용한 애플리케이션의 상태를 확인하기 위해서 오픈소스 성능 분석도구 Scouter를 적용해봤다. 구성요소 및 역할 1. 정보를 수집하는 Collector. 타겟에서 발생하는 이벤트를 수집한다. 타겟에 설치한 Host Agent와 Java Agent로 정보를 받는다. 6100 포트를 사용한다. 2. WAS가 설치된 서버의 상태를 컬렉터로 송신하는 Host Agent 3. WAS에 붙어서 애플리케이션 상태를 컬렉터로 송신하는 Java Agent 4. 컬렉터가 수집한 정보를 모니터링하는 Client. 이클립스 기반 클라이언트는 컬렉터의 ID를 환경설정에서 설정한 뒤 사용한다. 웹 버전 클라이언트도 공개되어 있다. 설치 아래 사이트에 접속한 뒤 최신버전을 다운로드 한다. 파일은 scouter-all..
어떤 클래스가 JpaRepository를 참조하기 위해서 @Autowired나 생성자, 속성으로 할 수 있다. Namespace로 빈을 선언할 때 생성자로 참조하기 위해서 JpaRepository를 넣어주면 참조하기 못하는 현상을 발견했다. 이걸 그냥 Autowired로 바꾸면 잘 되는데.... 아무래도 생성자 방식으로 했을 때 JpaRepository가 아직 Bean으로 만들어지지 않은 상황에서 생성자가 실행되어서 그렇지 싶다. 이걸 어떻게 극복을 하는지 모르겠다. 해결 Autowired로 인해서 잘 초기화된 것이 아니었다. 그냥 null로 바인드 되어서 잘 된 것처럼 보일 뿐... 이것만 봐도 그냥 Autowired를 쓰는 것보다는 생성자로 명시적으로 받는 것이 오류를 미리 발견할 수 있다. 참조하지..
linux lsof -i :1099 windows netstat ano|find "1099"
http .authorizeRequests() .accessDecisionManager(applicationContext.getBean("accessDecisionManager", AccessDecisionManager.class)) http .authorizeRequests() .accessDecisionManager(accessDecisionManager()) 어느 방법이 효율적일까? accessDecisionManager()으로 호출해도 새로운 객체가 생성되지는 않는다. 왜일까?
시스템이 초기화되면서 AccessDecisionManager에 등록된 Voter가 Configuration에서 설정한 속성을 지원하는지 검사하도록 되어있다. 같은 코드임에도 불구하고 XML로 정의하면 정상동작하고, Java Config로 정의하면 실패했다. @Override public boolean supports(ConfigAttribute attribute) { return attributes.contains(attribute.getAttribute()); } XML로 정의할 때 use-expressions="false" 로 넣어주면 attribute.getAttribute()로 access 에 넣었던 값, 또는 표현식을 가져올 수 있었는데 Java Configuration에서는 null 이 리턴되..
HttpSecurity는 네임 스페이스 구성에있는 Spring Security의 XML 요소와 유사합니다. 특정 http 요청에 대해 웹 기반 보안을 구성 할 수 있습니다. 기본적으로 모든 요청에 적용되지만 requestMatcher (RequestMatcher) 또는 기타 유사한 메소드를 사용하여 제한 할 수 있습니다. @Configuration @EnableWebSecurity public class FormLoginSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatche..
org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration은 WebSecurity를 사용하여 Spring Security에 대한 웹 기반 보안을 수행하고 Spring Security Filter Chain이라고 부르는 FilterChainProxy를 만든다. 그런 다음 필요한 Bean을 내 보냅니다. WebSecurityConfigurerAdapter를 확장하여 구성으로 노출하거나 WebSecurityConfigurer를 구현하고이를 구성으로 노출하여 WebSecurity를 사용자 정의 할 수 있습니다. EnableWebSecurity를 사용할 때이 구성을 가져옵니다. springSecurityFilte..
이 Appender에 환경변수값을 바인딩할 수 있는 표현식 ${sys:key} 에서 환경변수에 그 값이 없으면 기본값으로 가지도록 하고자 할 때는 local 에 를 추가하면 된다. 표현식 내에서 직접 넣고 싶으면 ${sys:fileHourName:-하고싶은값} 형태로 선언하면 된다. 프로퍼티 내에 표현식이 있을 때도 마찬가지로 하면 된다. INFO ${sys:systemLogLevel} http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution
에 entry-point-ref를 설정하지 않으면 ExceptionTranslationFilter를 만들 때 설정되지 않았다고 예외가 발생한다. entry-point-ref 는 인증 실패 등 요청한 자원에 접근을 할 수 없을 때 어떻게 그다음을 진행할지 결정하는 빈을 등록하는 속성이다. 예를 들어 접근 권한이 필요한 자원을 요청했을 때 로그인 페이지로 리다이렉션 된다던지, API를 호출했을 때 JSON으로 응답 결과를 보낸다던지 하는 것이다. 스프링 시큐리티에서 필터를 만들때 entry-point-ref 속성이 없는 경우, 하위 요소 중에 http-basic, form-login, openid-login 요소가 있는지 확인하고 없으면 예외를 발생시킨다. 즉, entry-point-ref 를 지정하던지 로..
HttpClient 전송중에 커넥션에 끊기면 자동적으로 재송신 시도를 한다. 필요에 따라 재전송하면 안되는 경우에 하는 조치이다. HttpClientBuilder.create().disableAutomaticRetries().build();
hibernate 프로퍼티 설정 hibernate.show_sql = false hibernate.format_sql = true hibernate.user_sql_comments = true log4j2 설정 스프링부트에서는 spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.show_sql=false logging.level.org.hibernate.SQL=debug logging.level.org.hibernate.type=trace
org.springframework.context.support.AbstractApplicationContext Class 확인 @Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the subclass to refresh the internal bean factory. ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory(); // Prepare th..

Task는 프로세스 흐름 상에서 더 이상 상세 레벨로 내려갈 수 없는 가장 작은 단위이다. 일반적으로 사람이나 애플리케이션이 실제로 행동하는 것을 표현하는 단위이기도 하다. Taks의 Maker Task는 Loop, Multi-Instance, Compensation 3가지 타입 마커를 넣어서 더 상세하게 표현 할 수 있다. Task의 Type Service Task 서비스에 일종이고 웹 서비스나 자동화된 애플리케이션일 수 있다. Send Task Message를 외부 참여자에게 보내기 위한 Task 이다. 메시지를 전송하면 해당 Task는 종료된다. Receive Task 외부 참여자가 보내는 Message를 수신하기 위해 기다리는 Task이다. 메시지를 수신하면 Taks는 종료된다. User Task..
HttpSecurityBeanDefinitionParser https://stackoverflow.com/questions/10140515/spring-security-where-can-i-find-the-list-of-all-security-filters-registered-w
요청이 설정한 것과 매치가 되면 로그인을 시도함
들어온 요청에 대해서 인증에 실패하거나 권한이 없으면 수행되는 AuthenticationEntryPoint를 커스터 마이징 했을 때 CORS는 어떻게 되는건지 확인해봤다. Spring Security 설정에 모든 /api/ 요청에 대해 거절하도록 했다. 그러면 /api/의 모든 요청은 거절되고 restAuthenticationEntryPoint 에 정의된 절차대로 수행한다. public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { String noAuthMessage = "{\n" +..