JPA Debug 이슈 내용 현업에서 작업중, cascade = CascadeType.REMOVE, orphanRemoval = true 조건이 걸린 OneToMany 관계의 데이터에 대하여 clear() 시 Delete 쿼리가 나가지 않아 제대로 동작하지 않는것을 발견했다. 해당 엔티티를 재현해보면 아래와 같았다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Team { @Id @GeneratedValue private Long id; @Column(name = "name", length = 50) private String name; @OneToMany(mappedBy = "team", cascade =..
Debug RestTemplate 503 오류 이슈내용 기존 RestTemplate를 사용하던 부분에 503에러가 발생했다. RestTemplate는 빈으로 등록되어 사용중이었는데 빈의 내용이 변경되었다. 변경 내용은 timeout이 없던 RestTemplate에 timeout을 설정 변경 전 @Bean public RestTemplate restTemplate() { return new RestTemplate(); } 변경 후 @Bean public RestTemplate restTemplate() { HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); httpReq..
JWT the token can't be used before ~ 오류 발생 문제 jwt token 생성 전에 해당 토큰을 사용하여 에러로그가 발생되었다. 만료시간을 +7일로 설정하였으므로 1초 전에 해당 토큰을 사용한것으로 보여진다. token을 생성하여 응답한 값으로 담아서 요청하는데 이것이 가능한가..? 구글링… 원인 서버가 여러대인 경우, 서버간 바라보는 시간의 미세한 차이로 인해 발생할 수 있다고 한다. 예를들어, 5번 api 서버에서 토큰을 발행하여 6번 api 서버로 요청 시, 6번 서버가 1초 전을 보고있다면 문제가 발생할 수 있다. 해결 JWTverifier 에서는 acceptLeeway라는 옵션을 통해 오차를 인정해 줄 수 있다고 한다. this.jwtVerifier = JWT.requ..
@Scheduled 실행 시, Transaction처리 문제 BatchController로 직접 메소드를 호출하는 작업은 정상적으로 수행되나, @scheduled 에 의해 실행되는 작업에 아래와 같은 에러가 발생한다. 똑같은 메소드를 호출하도록 되어 있는 컨트롤러를 호출 시에는 정사 작동한다. 원인 트랜잭션 매니저가 @EnableTransactionManagement를 통해 DataSourceTransactionManager로 구성된 경우, 하이버네이트의 begin() 메소드가 AbstractTransactionImpl을 부르지 않는다고 한다. 해결하기위해서는 트랜잭션 매니저를 JpaTransactionManager로 구현하여 사용해야한다. 해결 @Configuration public class Data..
- Total
- Today
- Yesterday