자바

배경 Spring 환경에서 RabbitMQ를 이용해 다른 서버에 요청하고 거의 Restful API와 같이 즉각적인 응답을 받아야 하는 경우가 발생했다. 메세지큐의 경우 별도의 쓰레드에서 이를 받아 수행하는 예제가 일반적인데, 내 경우엔 스프링 접속자 쓰레드에서 응답까지 오고 이에 대한 리턴을 줘야 하는 상황이었다. 비동기식이 아닌 동기식 코드를 원했기에 반대편 응답에 따라 그 순간은 쓰레드가 블로킹될 수 있다는 걸 감안해서라도 꼭 필요한 기능이었다. 공식홈페이지를 통해 Direct Reply-to 방식을 알게 됐었는데 내용중에 나온 부분을 확인하는 과정에서, 인기가 많던 Request Reply 패턴을 알게 되어 이에 대해 작성해보고자 한다. 환경 RabbitMQ 3.13 스프링 부트가 아닌 스프링 프..
이슈 Spring에서 Message Queue RabbitMQ 설정 후 구동하면 아래와 같은 이슈가 발생하는 경우 channel error; protocol method: #method(reply-code=404, reply-text=NOT_FOUND - no queue "Queue-Name" in vhost .... 원인 메세지 리스너 컨테이너에 설정된 Queue가 없기 때문에 발생한다. 만약 개발 중인 경우 404가 아닌 다른 에러라면, 보통 기존에 만들어진 Queue와 새로 바라보려는 Queue 옵션정보가 달라 이에 대한 에러를 내뱉는 경우가 있다. 이 경우엔 큐를 아예 삭제 처리 하고 진행하는 것을 추천한다. 해결 환경 : Spring framework 6.1 / RabbitMQ 3.13.0 @B..
Spring Framework 6.0.9 에서 6.1.1로 단순 디펜던시만 변경하여 구동할 경우 실행이 되지 않는 현상이 발생했다. 일단 모든 디펜던시를 최신버전(Latest)로 변경하면 어찌어찌 구동은 되는 걸 확인할 수 있지만, 결국 에러메시지가 뜨면서 막히게 된다. 이때 마주하게 되는 에러메세지는 Bean등록한 것 들 중에 Return Type이 String인 경우 다 오류로 뱉어낸다. 전면적으로 String 반환을 쓰지 않는다는 가정하에, 인스턴스 객체로 만들어 처리하면 넘어가겠지만 이후 각 컨트롤러에 명시되어 있는 파라미터 타입 부분에서 이슈가 발생한다. 대략 에러 메세지의 내용은 이러하다.No qualifying bean of type 'java.lang.String' available: ex..
· 자바
소개 최근에 디컴파일을 하기 위해 여러 라이브러리를 찾아보는 와중에 알게 된 라이브러리가 있어 추천합니다. 자바 9,12,14의 대부분을 포함하고 최신 JAVA 기능을 디컴파일하지만 자바 6으로 작성되어 어디에서나 작동하는 디컴파일러입니다. 원하는 class, jar, war파일을 디컴파일 하고 싶은 경우 사용해 보세요. 다운로드 https://www.benf.org/other/cfr/ CFR - yet another java decompiler. CFR - another java decompiler CFR will decompile modern Java features - up to and including much of Java 9, 12 & 14, but is written entirely in J..
이전 관련 글 javax servlet -> jakarta servlet 으로 변경하는 코드: lucy-xss-servlet-filter Spring 6 (jakarta servlet)에서 사용 jar 파일 만드는 방법 : lucy-xss-servlet-filter Spring 6 용 JAR 빌드/적용 (1) lucy-xss-servlet-filter Spring 6 용 JAR 빌드/적용 (1) lucy-xss-servlet-filter Spring 6 (jakarta servlet)에서 사용 에서 처리한 부분은, 아무래도 개발자 입장에서 찝찝할 수 밖에 없는게 사실이다. 좀 더 깔끔한 적용을 위해 직접 jar 파일을 만드는 법을 서술한 god-logger.tistory.com lucy-xss-servl..
lucy-xss-servlet-filter Spring 6 (jakarta servlet)에서 사용 에서 처리한 부분은, 아무래도 개발자 입장에서 찝찝할 수 밖에 없는게 사실이다. 좀 더 깔끔한 적용을 위해 직접 jar 파일을 만드는 법을 서술한다. 자바 17로 컴파일이 되지 않으므로 JDK 11 을 설치하여 진행하도록 한다. 1. 네이버에서 제공하는 lucy-xss-servlet-filter 를 clone 한다. git clone https://github.com/naver/lucy-xss-servlet-filter.git 2. pom.xml 을 다음과 같이 변경한다. 더보기 4.0.0 Naver Labs http://lab.naver.com/ com.navercorp.lucy lucy-xss-serv..
원인 스프링 6 부터는 java EE에서 jakarta EE 기반으로 변경됨에따라 jakarta servlet을 사용해야한다. naver 에서 만든 lucy-xss-servlet-filter의 경우 대기업이나 공공기관에서도 보안성 검토 스프링 xss 처리 요구시 가이드로 제시하는 라이브러리지만 아쉽게도 2019년도가 마지막 release라 최근 코드 반영이 이루어지지 않고 있다. com.navercorp.lucy lucy-xss-servlet 2.0.1 최신버전은 2.0.1로 확인했다. 코드를 확인해보니 2개의 파일만 javax 에서 jakarta로 변경해주면 해결 되는걸 확인할 수 있었다. 해결 파일은 딱 두개이다. 첨부된 파일을 다운받아 사용하면 된다. 실제 디펜던시 되는 lucy 라이브러리에 코드를..
아래 그림과 같이 html들 생성하고 설정. 예전 사이드프로젝트 한걸 참고해서 진행해봤다. 안된다.. 그냥 화면에 {} 라고만 뜨는 현상이 발생했다. 공식문서를 기반으로 아래와 같이 진행하게 되면 해결되니 혹여나 layout이 잘 안되는 사람이라면 아래 방법들을 확인하자. 1. decorator (X) / decorate (O) 렌더되는 html 에서 layout을 가져오는 부분에 보면 예전 방식은 다음과 같다. .... 최신에 가까운 버전을 이용시엔 아래와 같이 수정하자 ... 2. th:replace 시 ~{} 문법 레이아웃 html 에서 특정 구간을 replace 하는 부분의 예전 방식은 다음과 같다. ... ... 최신에 가까운 버전을 이용하려면 아래와 같이 수정하자 ... ... ~ 는 thym..
배경 사내 플랫폼 스프링 프레임워크 (레거시) 를 4에서 6로 업그레이드 하기로 결정했다. 회사 관련 불필요한 스토리는 접어둔다. 굳이 읽을 필요는 없지만 궁굼한 사람은 [더보기]를 클릭 더보기 VPN을 통해서만 접근하는 플랫폼이라는 점에서 굳이 보안을 아예 생각하지 않으려고 한건 아니다. 일이 많아서 못했다는건 그저 변명일 뿐, 뒤늦게라도 반성하고 반영하기로 결정했다. 구닥다리 디자인인 탓에 잘 아는 지인(타 회사 디자인 팀장)을 통해 디자인 외주를 요청하기로 이야기를 나눈 상태. 해당 부분은 이미 회사와도 이야기를 마친 상태인줄 알았는데, 막상 진행하고자 하니 회사에서 갑작스럽게 잠시 결정을 보류한 상황이 발생했다. 혹여나 지인쪽에서 진행이 불가능할 가능성이 있을 가능성이 있기에 우선 기획, 기능위주..
· 자바
SDKMAN! 은 SDKMAN!은 JVM 언어들과 그들의 빌드 툴들의 설치, 관리, 업그레이드를 담당하는 오픈소스 프로젝트입니다. 간단한 명령어를 사용하여 원하는 JDK 버전을 쉽게 설치하고 현재 쉘에서 사용할 JDK 버전을 선택할 수 있습니다. 마치 자바스크립트 진영의 n 과 같은 도구인데요, 빠르게 설치 및 사용법 알아보시죠. 환경 : MacOS m1 설치 curl -s "https://get.sdkman.io" | bash 기본 설정 # SDKMAN 초기화 스크립트 실행 source "$HOME/.sdkman/bin/sdkman-init.sh" JDK 리스트 확인 sdk list java JDK 설치 sdk install java 17.0.7-zulu JDK 선택 적용 리스트 내에서 installe..
신·기록
'자바' 카테고리의 글 목록