🛠️Backend31 [Firebase] Requested entity was not found. 개요기존 로직에서 Firebase의 전체 알림을 sendEachForMulticast() 함수로 전송하고 있었다. 하지만 사용자 별로 데이터를 다르게 전송해줘야 하는 상황이 생겨서 send() 함수로 메시지 객체를 전송했다. 해당 코드를 수정한 후 알림을 전송했을 때 'Requested entity was not found' 에러가 발생했다. 원인발생한 에러 메시지는 아래와 같았다.Requested entity was not found. 해당 에러의 발생 원인은사용자가 해당 앱을 삭제했을 때사용자가 앱의 FCM 푸시 알림을 비활성화 했을 때FCM 서버에서 디바이스 등록을 해제했을 때디바이스와 FCM 서버의 연결이 끊겼을 때위 4가지 원인이 있었다. 필자의 경우 이전에 테스트했던 앱을 삭제하면서 해당 에.. 🛠️Backend/오류해결 2024. 11. 12. [Spring Boot] Spring Boot & React 프로젝트 연결하기 개요이전에 만들었던 서버를 화면과 함께 배포해야 되는 상황이 발생했다. 서버는 Spring Boot를 사용했고 화면은 React를 사용했다. 두 프로젝트를 합쳐서 배포한 작업을 기록으로 남긴다. 리액트 프로젝트 추가 및 폴더 위치Spring Boot 프로젝트 내에서 리액트 프로젝트 폴더의 위치는 다음과 같다. 기존 서버 프로젝트의 main 폴더 아래에 넣어주었다. 만약 기존에 생성했던 리액트 프로젝트가 없다면 터미널에서 해당 위치에 리액트 프로젝트를 생성해주면 된다. Proxy 설정CrossOrigin 에러를 방지하기 위해 리액트 프로젝트에서 Proxy를 설정해준다. 필자의 경우 서버에서 CrossOrigin 에러 처리를 하고 있었어서 리액트에서 따로 proxy 설정은 하지않았다. 만약 필요하다면 다.. 🛠️Backend/Spring 2024. 10. 30. [Spring Boot] redirect 처리 (feat. RestTemplate, HttpServletRequest, @RequestBody) 개요이전에 만들었던 프로젝트의 API path를 변경해야 하는 상황이 발생했다. 하지만 이미 배포를 진행한 프로젝트였기 때문에 기존의 path가 호출되더라도 동일한 응답을 줘야만 했다. 작성했던 Service의 로직을 그대로 호출하는 방법도 있지만 동일한 코드를 호출하는 것은 비효율적이라고 생각했다. 따라서 redirect로 호출된 path의 마지막 부분과 동일한 API를 호출하는 코드를 작성하기로 했다. RestTemplate"redirect:/path" 로 변경된 path 를 호출하는 방법도 있지만 성능 저하 및 코드의 복잡성 증가 이슈가 있었다. 그래서 RestTemplate 라이브러리를 사용해서 직접 API를 호출하는 방법을 택했다. RestTemplate는 Spring Boot 2.4 버전 이.. 🛠️Backend/Spring 2024. 10. 22. [JWT] java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 에러 상황로그인 API를 호출하여 성공 시 JWT를 발급하는 로직을 구현하던 중 다음과 같은 에러가 발생했다. 에러 코드java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 해결 방법Spring Boot 프레임워크 사용 시 해당 dependency를 추가로 설치해주면 에러가 해결된다.implementation 'javax.xml.bind:jaxb-api:2.3.0' 참고 사이트https://jminie.tistory.com/123 JDK 11에서 java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 에러🚨 에러 발생 로그인 API에서 JWT를 이용해서 회원 인증을 구.. 🛠️Backend/오류해결 2024. 8. 20. [Java] Netty를 사용하여 간단한 Echo 서버 및 클라이언트 구현 Netty 란?고성능 네트워킹 애플리케이션을 제작하기 위한 자바용 고급 프레임워크이다. 단일 API로 블로킹과 논블로킹 방식의 여러 전송 유형을 지원한다. 그리고 사용 방법이 간단하며 추가 의존성 없이 netty 라이브러리만을 설치하여 사용할 수 있다. 무엇보다 코어 자바 API보다 높은 처리량과 짧은 지연 시간, 리소스 소비 감소, 메모리 복사를 최소화한다는 장점이 있다. 준비하기Netty를 사용하기 위해 의존성을 추가해준다. 필자는 Gradle을 사용해서 아래 의존성을 build.gradle에 추가했다.implementation 'io.netty:netty-all:4.1.109.Final' Echo Server네티 서버 구성 시 다음 항목이 필요하다. • ChannelHandler - 클라이.. 🛠️Backend/JAVA 2024. 7. 24. [IntelliJ] The file size exceeds the configured limit. 에러 상황프로젝트를 진행하며 google protobuffer를 사용했고, protobuf 파일 호출 시 빨간색 밑줄이 그어졌다. 그리고 창 위에 다음과 같은 경고 메시지가 나타났다. 에러 코드The file size (MB) exceeds configured limit (2.56 MB). Code insight features are not available. 해결 방법IntelliJ config에서 설정한 최대 파일 사이즈를 초과해서 발생하는 오류이다. 메뉴의 [도움말] > [사용자 지정 프로퍼티 편집...] 을 누르면 idea.properties 파일 창이 열린다. 아래의 코드를 추가 및 저장한 후 IntelliJ를 재시작하면 재빌드 후 소스 코드가 제대로 적용되게 된다.idea.max.inte.. 🛠️Backend/오류해결 2024. 7. 24. [Java] 순수 자바 프로젝트에서 MS-SQL 연결하기 개요새 프로젝트를 하면서 Spring Boot를 사용하지 않고 프로젝트를 진행하게 됐다. Spring Boot를 사용하지 않은 이유는 단순히 TCP/IP 통신 및 DB 만을 사용하는 프로그램에서 굳이 무거운 Spring Boot를 사용하지 않아도 된다고 판단했기 때문이다. 많은 래퍼런스가 없었기에 진행하면서 적용한 코드를 정리해보려고 한다. gradle 의존성 추가mssql을 사용하기 위해서 build.gradle 파일에 의존성을 추가했다.implementation 'com.microsoft.sqlserver:mssql-jdbc' 하지만 정상적으로 빌드되지 않았고, jre 버전과 맞는 버전을 추가해주니 정상적으로 의존성이 추가됐다.implementation 'com.microsoft.sqlserver:.. 🛠️Backend/JAVA 2024. 7. 17. [IntelliJ] error: unmappable character (0xEB) for encoding x-windows-949 에러 상황IntelliJ로 프로젝트를 진행하는 도중 한글로 입력한 주석에서 오류가 발생했다. 에러 코드error: unmappable character (0xEB) for encoding x-windows-949 해결 방법한글 인코딩 문제로 인해 빌드 시 오류가 발생했다. 설정 후 IntelliJ 캐시 무효화 및 재실행을 해주면 오류가 해결된다. 1. [파일] > [설정] > [에디터] > [파일 인코딩] 2. [도움말] > [사용자 지정 VM 옵션 편집...] > 코드 추가-Dfile.encoding=UTF-8-Dconsole.encoding=UTF-8 3. [파일] > [캐시 무효화] > [파일 시스템 캐시 및 로컬 기록 지우기 체크] > [무효화 및 다시 시작] 클릭 위 방법으로 해결이 안.. 🛠️Backend/오류해결 2024. 7. 17. [Spring Boot] 설정 파일 값 암호화 및 적용하기 (feat. Jasypt) 개요프로그램을 개발한 후 프로젝트를 외부에 배포하기 위해 회사 내부 정보를 암호화해야 했다. 우선 가장 대중적이고 래퍼런스가 많은 Jasypt 라이브러리를 사용해 DB 접속 정보를 암호화하기로 했다. 의존성 추가라이브러리https://github.com/ulisesbocchio/jasypt-spring-boot GitHub - ulisesbocchio/jasypt-spring-boot: Jasypt integration for Spring bootJasypt integration for Spring boot. Contribute to ulisesbocchio/jasypt-spring-boot development by creating an account on GitHub.github.com Gradle.. 🛠️Backend/Spring 2024. 6. 25. [Java] Gradle을 이용한 순수 자바에서 jar파일 생성하기 에러 상황Spring Boot가 아닌 순수 Java 프로젝트를 생성한 후 배포를 위해 Jar파일을 만들던 도중 여러 문제가 발생했다. 1. Jar 파일 빌드 시 Main-Class를 찾지 못하는 에러 2. Class 내의 라이브러리를 찾지 못하는 에러 두 문제에 대한 래퍼런스가 많이 없어 블로그에 기록해본다. 에러 코드1. no main manifest attributeno main manifest attribute, in example.jar 2. Caused by: java.lang.NoClassDefFoundError: [라이브러리]Error: Unable to initialize main class [패키지명]Caused by: java.lang.NoClassDefFoundError: [.. 🛠️Backend/오류해결 2024. 6. 4. [C#] Visual Studio에서 MSSQL 연결 및 사용하기 Visual Studio에서 MSSQL을 연결해서 사용 시 장점 SQL을 따로 실행시킬 필요없이 Visual Studio에서 테이블 조회, 쿼리, SP 조회 등 MSSQL의 기능을 사용할 수 있다. 이 기능을 사용하게 된 가장 큰 이유는 SP의 디버깅이 가능하다는 점이었다. 하지만 로컬 서버가 아닌 외부 서버에서는 SP 디버깅이 불가능하다. 연결 방법 보기 > 서버 탐색기 서버 탐색기 > 새 SQL Server 데이터베이스 만들기 SQL Server 패키지 설치 패키지 설치가 완료되면 보기 메뉴 목록에 'SQL Server 개체 탐색기'가 새로 추가된다. SQL 서버를 연결한 후 사용하면 된다. 🛠️Backend/C# 2024. 3. 15. [Spring Boot] 프로젝트 실행 시 파일 존재 여부 확인 및 신규 파일 생성 파일 존재 확인FileApplication.java@Slf4j@SpringBootApplicationpublic class FileApplication { public static void main(String[] args) { // '파일.확장자'로 파일을 생성한다. String fileName = "파일.확장자"; // 파일이 존재하지 않는다면 파일을 생성한다. if( !CreateFile.fileExists(fileName) ) { log.error("[error] 'fileName' 파일이 존재하지 않습니다."); CreateFile.createFile(fileName); .. 🛠️Backend/Spring 2024. 3. 6. 이전 1 2 3 다음