[DNS] 가비아 도메인으로 Vercel 홈페이지 배포 시 SSL 인증서 만료 해결

상황 최근, Vercel을 활용해서 배포한 홈페이지에서 SSL 인증서 만료 관련 문구가 발생했습니다. 인증서 만료일자가 오늘 이전이라 크롬으로 홈페이지 접속이 거부되었습니다. 원래 Vercel에서 자동으로 인증서를 갱신하게 되어있는데, 갱신되지 않아서 만료가 되었습니다. 원인 위 페이지 하단에서 다음과 같은 문구를 발견할 수 있었습니다. 도메인 설정이 잘못되면, 갱신이 되지 않을 수 있습니다. 도메인이 잘못 구성되어 있으면 인증서가 갱신되지 않을 가능성이 높습니다. 도메인의 구성 상태를 확인하려면 프로젝트 설정(Project settings)으로 이동한 후 도메인 섹션(Domains section)으로 이동하면 됩니다. ...

2024. 11. 20. · 2 분 · 383 단어 · Leaf

[Java] JPA detached entity passed to persist 오류 해결하기

상황 JPA를 사용해서 엔티티를 저장하는 로직에서 종종 발생하는 오류입니다. 저는 DataJpaTest를 작성하다가 em.persist(member) 메서드를 실행하면 발생했습니다. 오류 메시지 detached entity passed to persist오류 메시지는 다음과 같습니다. detached entity passed to persist: pull_up.infra.database.entity.Member jakarta.persistence.EntityExistsException: detached entity passed to persist: pull_up.infra.database.entity.Member at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:126) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:167) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:173) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:763) at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:741) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:319) at jdk.proxy3/jdk.proxy3.$Proxy148.persist(Unknown Source) at pull_up.global.entity.BaseEntityTest.testCreateAt(BaseEntityTest.java:35) at java.base/java.lang.reflect.Method.invoke(Method.java:569) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: pull_up.infra.database.entity.Member at org.hibernate.event.internal.DefaultPersistEventListener.persist(DefaultPersistEventListener.java:88) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:77) at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:54) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127) at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:757) ... 11 more 해석하기 오류 메시지(detached entity passed to persist)를 그대로 해석하면 다음과 같습니다. ...

2024. 11. 18. · 3 분 · 485 단어 · Leaf

[Java]String에서 공백 제거하기

공백 제거의 필요성 자바로 웹개발을 하다 보면, 입력값에 들어온 공백(White space)을 제거해야 할 일이 심심치 않게 있습니다. 특히, UTF-8에는 다음과 같은 다양한 공백이 있기 때문에 모든 경우의 수에 대응해야 합니다. U+0020 : 일반 스페이스 U+0009 : 탭(\t) U+000A : 줄 바꿈(\n) U+000D : 캐리지 리턴(\r) U+000C : 폼 피드(\f) U+3000 : 넓은 공백 공백 제거하기 String.trim() JDK 1.0부터 존재한 역사가 있는 메서드로, 문자열 앞뒤의 아스키 공백1을 내부 char배열에서 제거합니다. 문자열 가운데는 제거하지 않으며, 나머지 유니코드 공백도 제거하지 않습니다. ...

2024. 11. 16. · 2 분 · 306 단어 · Leaf

MockMvc Object mapper nested class utf-8 인코딩 오류 해결하기

상황 Controller 테스트 작성 시 mockMvc의 결과가 원하는 값과 일치하는지 확인하는 상황입니다. @Test @DisplayName("[인수] 읽지 않은 알림 요청 시 전체응답(200)") void testAllNotifications200() throws Exception { // given Cookie[] followingUserLoginCookie = mockMvc.perform(get("/api/users/login").header(HttpHeaders.AUTHORIZATION, "Bearer valid_token_2")).andReturn().getResponse().getCookies(); Cookie[] myLoginCookie = mockMvc.perform(get("/api/users/login").header(HttpHeaders.AUTHORIZATION, "Bearer valid_token")).andReturn().getResponse().getCookies(); // when // following -> user 팔로우 mockMvc.perform(post("/api/users/" + me.getId() + "/follows").cookie(followingUserLoginCookie)); // notifications 전체 조회 String responseBody = mockMvc.perform(get("/api/users/notifications").cookie(myLoginCookie)) .andExpect(status().is(200)).andReturn().getResponse().getContentAsString(); ListDto<List<NotificationDto>> notificationDtos = objectMapper.readValue(responseBody, new TypeReference<ListDto<List<NotificationDto>>>() {}); // then assertThat(notificationDtos.getList()).hasSize(1); assertThat(notificationDtos.getList().get(0).getDescription()).isEqualTo("leaf2님이 당신을 팔로우합니다."); } 테스트 결과 junit 테스트 결과(실패) ...

2024. 5. 7. · 2 분 · 222 단어 · Leaf

Org.springframework.data.mapping.MappingException 오류 해결

상황 SpringBoot에서 MongoDB에 데이터를 저장하고, 저장한 데이터를 파싱하는 과정에서 다음과 같은 오류가 발생했습니다. 실행 코드 // 몽고DB 컬렉션 클래스 @Document(collection = "indicators") @Getter @NoArgsConstructor @Builder @AllArgsConstructor @Slf4j public class Indicator { @Id private String id; private List<MatchIndicator> matchIndicators; private MatchIndicatorStatistics matchIndicatorStatistics; // 메서드 생략 } // 컬렉션 조회 메서드 @Override public Indicator getIndicatorInDB(String SummonerId) { Query query = Query.query( Criteria.where("_id").is(SummonerId)); Indicator indicators = mongoTemplate.findOne(query, Indicator.class, "indicators"); if (indicators == null) throw new RiotDataException(RiotDataError.NOT_IN_STATISTICS_DATABASE); else log.info("indicator founded : {}", indicators.getId()); return indicators; } 오류 코드 Parameter org.springframework.data.mapping.Parameter@691d29ad does not have a name 원인 분석 실제로 MongoDB에서 데이터를 정상 꺼내오는 로그는 다음과 같이 잘 찍혀있었습니다. ...

2024. 4. 2. · 2 분 · 371 단어 · Leaf