분류 전체보기 (65) 썸네일형 리스트형 JPA 비관적 락 (Pessimistic Lock) 락의 필요성금융이나 결제쪽 개발을 할때 동시성 제어가 필요한 경우가 있다.물론 synchronized 처리를 떠올리지만, 쓰레드 레벨로 막는 것이고 실제로는 여러대의 서버를 두기때문에 부족하다.이 경우 DB(RDBMS, Redis 등) 레벨의 락이 필요한데, 이럴때 사용할 수 있는 JPA 락 방법이 있다. 락의 종류흔히 2가지로 나뉜다.낙관적 락 (Optimistic Lock) : 이름은 락이지만, 락을 걸진않고 수정 시 업데이트 되었는가를 감지비관적 락 (Pessimistic Lock) : 다른 트랜잭션의 데이터 (조회, 수정) 혹은 수정만 막는다.낙관적 락은 JPA에서 @Version 이라는 어노테이션을 통해 사용하고수정 시 버전이 다른 경우, ObjectOptimisticLockingFailureE.. Spring Controller 중복 호출되는 이슈 최근에 로그를 보다가 Controller에 특정 페이지를 리턴하는 메소드에서 중복 호출이 되고있는 것을 발견했다.사실 이전에도 발견되어 인지하고있었지만, 따닥 이라던가 새로고침을 빠박 할 수도 있기 때문에 넘어갔는데생각보다 너무 자주 로그가 찍혀있고 시간 간격도 매우 짧기 때문에 원인을 찾아야겠다는 생각이 들었다. 상황은 이렇다.@Controllerpublic class TestController { ... @GetMapping("index") //아니면 "/" public String index(Model model, HttpServletRequest request, args...) { ... return "/~~~/index" } ...}해당 .. [Linux] Ubuntu 사용자 계정 생성 및 접속 설정 먼저 root로 접속해준다 sudo su root 권한으로 하지않으면 아래와 같은 에러문구가 출력된다 adduser: Only root may add a user or group to the system. 계정 생성 adduser 계정아이디 해당 커맨드를 입력하면 아래와같이 추가 입력 부분이 출력된다. New password: Retype new password: passwd: password updated successfully Changing the user information for rkdvnfms5 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []:.. Spring JPA @Id 복합키 설정 Spring JPA를 사용하면서 기본키가 2개 이상 컬럼으로 구성된 테이블을 Entity로 지정할 때가 있다. 예시로 아래와 같은 Work 테이블과 WorkE 엔티티 클래스가 있다고 가정했을때 @Table(name = "Work") public class WorkE { @Id @Column(name = "name") private String name; @Id @Column(name = "type") private String type; .... } 이름(name)과 구분(type) 두개의 컬럼을 기본키로 사용하고 있는 경우, 위처럼 두 필드에 모두 @Id 어노테이션을 사용하면 된다고 생각할 수 있다. 하지만 추가해야할 것이 있는데, 아래처럼 엔티티에 @IdClass 어노테이션을 추가해줘야한다. @IdC.. Maven Jar 빌드 외부 dependency 추가 Spring Webflux로 오브젝트 스토리지 솔루션 프로젝트를 만들면서 빌드 도구는 maven, 배포는 내장 netty 서버 쓸거라서 처음으로 jar로 배포하게 되었다. 한심하다고 느낀건 아직도 나는 maven을 제대로 모른다는 것이다. 시간이 될때 maven에 대해서 공부하고 정리를 해볼 필요를 느꼈다. 문제 pom.xml에 외부 jar파일을 추가해서 사용하고 있었는데 로컬에서 실행하면 잘 돌아가지만 jar로 배포해서 실행하면 NoClassDefFoundError가 발생하는 특정 경우가 있었다. 원인 pom에서 추가한 외부 jar dependency는 적용이 잘 되었지만, 빌드 후 생성된 jar 파일을 풀어서 BOOT-INF/lib를 보면 해당 외부 라이브러리가 없었기 때문에 필요한 클래스가 정의되지.. iptables 80포트 설정 iptables를 오랜만에 쓰면 자꾸 잊어버린다. 방화벽 목록 확인 iptables --list 출력 이미지에 표시된 reject-with icmp-host-porhibited를 볼 수 있는데, 이 REJECT라인 밑으로 적용된 설정은 적용되지 않는다. 예를 들기 전, 80포트를 추가하자 iptables -A INPUT -p tcp --dport 80 -j ACCEPT 이 후에 다시 리스트를 출력하면 REJECT 설정 밑으로 80포트가 설정된 것을 볼 수 있다. 이렇게 되면 80포트 INPUT이 되지 않는다는 것이다. 이 경우에는 REJECT를 INPUT에서 지워줬다가 다시 추가하면 된다. iptables -D INPUT -j REJECT --reject-with icmp-host-prohibited i.. Spring Webflux Filter 적용 (Webfilter) Webflux를 사용해보면서 Interceptor를 적용해보고 싶었는데 기존 MVC 구조에서 사용하던 interceptor, 엄밀히 말하면 톰캣을 위해 사용하던 인터셉터는 사용할 수 없었다. 약간 찾아본 결과 Webfilter 사용을 많이 하는듯 보여서 적용해봤다. 적용은 매우 간단하다. Webfilter 인터페이스를 구현한 클래스를 하나 생성해서 @Component만 적용해주면 끝. 그래서 나는 Webfilter를 구현한 AclFilter라는 클래스를 생성했다. AclFilter import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.. 일기 보호되어 있는 글입니다. 이전 1 2 3 4 ··· 9 다음