TIL 41

[TIL] @value 어노테이션에 null만 찍혔다.

오늘 또 하나 배웠다. 하드코딩된 부분을 application.yml파일에서 변수로 사용하려 했는데, @value 어노테이션이 계속 먹히지 않고 null만 찍혔다. profile이 제대로 작동하지 않은 줄 알았는데 아니었다. 원인은 해당 클래스가 new로 생성된 객체였기 때문이었다. @value 어노테이션은 Spring을 사용하는 것이기 때문에 컨테이너에 등록되어있어야 한다. 그런데 new로 생성되면 새로운 객체가 되기 때문에 적용이 될 수 없다. 또 한가지 💡 내가 @value를 사용하려는 클래스는 Spring을 사용하는 구간이 아니다. 그렇기 때문에 순수 자바로 이루어진 부분이기 때문에 어노테이션을 활용할 수 없었다.

TIL 2023.05.28

[TIL] jar파일 수정하고 다시 압축하여 배포하기

시간을 꽤 많이 들여 찾으려 노력했던 일인데 너무나도 쉽게 해결돼버렸다. 이걸두고 해결이라고 말하는게 맞나 싶은데... 당장 예정되어 있는 일정이 있어 일단 급하게 막아보았다. 이것도 TIL로 넣는게 맞나?... 아무튼 하나 또 배우긴 했다...... jar파일을 풀었다가 다시 압축하면 자꾸만 에러가 났다. MANIFEST.MF 파일의 문제는 해결되었는데, 그 파일에서 지정해준 main class (spring boot의 경우 boot main class) 를 찾지 못하는 에러... 1. jar 파일을 압축해제한다 [ jar xvf jarfile.jar ] 2. 해제한 폴더들을 jar파일로 압축한다 [ jar cvf newName.jar ./META-INF/MANIFEST.MF ] => ./META-IN..

TIL 2023.05.26

[TIL] jar파일 압축, 압축해제 커맨드 명령어

jar파일을 압축해제해서 파일하나를 수정하고 다시 압축해야 하는 상황에 놓여졌다. cmd 창 열기 압축풀기 jar xvf fileName.jar 압축 jar cvf fileName.jar {파일을 생성할 위치} 그런데 이렇게 압축을 하고나서 기동을 해보면 *.jar에 기본 Manifest 속성이 없습니다. 라는 에러가 찍힌다. 흠 역시 이렇게 압축해서는 기동할 수 없는 파일인걸까.....? MANIFEST 생성 옵션 jar xvfm fileName.jar {파일경로}/MANIFEST.MF 이미 MANIFEST.MF 파일이 있음에도 기동시에 해당파일을 찾지 못하면, 있는 파일의 위치경로를 잡아주면 된다.

TIL 2023.05.25

[TIL] ''은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. - 해결

커맨드 창에서 jar / java 등의 명령어를 사용할 일들이 있는데 자꾸만 이런 오류가 났다. 'jar'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 순차적으로 시행할 여러 스텝이 있었지만 결국 최종적으로는 환경변수를 바꾸는 일로 마무리된다. 그래서 나도 환경변수의 path를 수정했다. 💡시스템 속성 > 고급 > 환경변수 ✅첫번째, Path > 새로만들기 C:\Windows\system32 => 실패했다.. 근데 이 방법으로 다들 고친다고 하던데 일단 저는 fail.. ✅두번째, 더 찾아보니 변수에 JAVA_HOME을 추가해줘야 한다고 했다..!!! 정답은 %JAVA_HOME%\bin; 그리고 이것을 가장 첫번째에 두어야 한다.

TIL 2023.05.24

[TIL] oracle system 계정이 잠겼습니다. 해결하기

sql developer를 쓰다가 dbeaver로 바꾸었는데 dbeaver에는 maria db만 연결시켜놨었다. oracle도 연결하려고 보니 system 계정이 잠겼다고,,, 다시금 maria db를 연결할 때의 악몽이 떠올랐지만..! 그래도 공부할 때부터 일하는 지금까지 오라클만 썼다고 금방 해결했다. 이래서 기본이 중요하다...... 이렇게 또 하나 배운다.... 💡 sys계정은 커맨드창에서 SQL에 연결하여 명령어를 실행시켜 unlock을 진행한다. ✅ cmd 창 열기 - 내가 사용하는 것은 cmder C:\Users\ λ sqlplus /nolog SQL*Plus: Release 18.0.0.0.0 - Production on 토 5월 20 23:51:46 2023 Version 18.4.0.0..

TIL 2023.05.21

[TIL] 리눅스 환경에서 파일 이름바꾸기 명령어 - cp, mv

명령어로 파일을 조작하는게 더 빠르기도 하지만 온프레미스 배포를 진행할 때 주로 file zilla를 사용한다. 업로드와 jar파일을 백업할 때 편하기 때문이다. 그런데 회사 게이트웨이를 통해 운영서버에 배포할 때 젠킨스 연동배포가 아닌 수동으로 배포할 상황이 가끔생기는데, 이 때는 file zilla를 사용할 수 없어 서버에서 바로 명령어로 작동해야 한다. cp는 원본파일을 두고 복사파일을 한개 더 생성하는 것 mv는 이동이 되기 때문에 원본파일이 따로 있지 않고 그 파일을 바로 수정하는 것 jar파일이 있는 위치에서 파일을 백업할 때 mv로 쓰니까 조금 위험하긴 해도 백업파일을 만들고 원본을 지우지 않아도 돼서 편하다. 물~론~ 편하기만 해서 적는 것은 아니다.......... 조금 실수를 해서 아차..

TIL 2023.05.20

[TIL] 로컬은 db에러가 나는데 운영은 기동된다..?

오늘 또 하나 배웠다. 너무 이상한 일이었다... 로컬환경에서 패키지가 주 로직인 api를 기동했는데, 자꾸 패키지의 어떤 프로시져의 지점에서 에러가 났다. 오라클 에러 ORA- 해당 에러를 구글링해보니 VARCHAR2의 자리에 DATE 타입이 와서, 혹은 그 반대라서 생기는 일이라고 했다. 그런데 이상한 것은 같은 디비의 같은 패키지를 쓰는데 어떻게 로컬에서는 그 지점에서 디비에러를 반환하고, 도메인주소로 호출한 운영API에서는 아무이상이 없는 걸까?.. 💡 정답은.. 운영환경과 로컬환경의 자바버전의 차이였다.................................😨 이렇게 또 하나배웠다... 운영 자바버전은 타입체크를 하지 못한 더 낮은 버전이라서 원인이라고 했다. 패키지 수정이 필요하다.

TIL 2023.05.11

[TIL] 서버에서 수동으로 배포할 때 기동 확인 그리고 nohup

오늘 또 하나 배웠다. 고객사가 온프레스 환경일 때 해당 서버에서 직접 배포해야 하는 상황이 많다. 리눅스 서버에서 배포하고 나서 기동확인을 해보면 분명 PID까지 확인이 되는데 logback에서 지정해준 로그 경로에 로그가 쌓이지 않아 이상했다.. ✅ 기동확인 ps -ef | grep -i {검색할 단어} ✅ 기동 중이고 PID 를 확인할 수 있다. {ID} 12345 1 0 5월30 ? 00:22:24 java -Dprofiles:prod -jar {파일명}.jar ✅ PID로 PORT 확인 netstat -ntlp | grep 12345 음 여기까지 해보았을 때 port번호가 운영이 아니라 local로 기동이 되었다. 그래서 유레카도 안붙었던 것.. 확실하게 확인해보기 위해 nohup 명령어가 아닌..

TIL 2023.05.09

[TIL] DB 연결시 Driver class name 오류

우리회사는 jdbc 관련해서 자체 라이브러리를 사용하는데 프로젝트마다 라이브러리가 또 다 달라서 새로운 서비스를 맡게되면 아주 귀찮아진다.. 이번에 새로 맡은 서비스를 svn에서 깃랩으로 이전하면서 DB연결부분을 만지게 되었는데 자꾸 기동할 때부터 익셉션이 떨어졌다. (Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException) 알고보니 persistence.xml의 driver class name에서는 log4j 를 연결하도록 하고 dbconfig를 설정하는 곳에서는 log4j를 설정하지 않아 서로 달랐기 때문에 나는 오류였다. persistence net.sf.log4jdbc.sql.jdbcapi.D..

TIL 2023.05.08

[TIL] Eureka에 대하여

회사에서 운영하는 프로젝트들이 유레카에 붙어있는데, 유레카에 붙어있다 라고 표현하면서도 무엇인지 잘 몰랐다. 그런데 최근에 몇달간 유레카에 대한 이슈들이 좀 생겨나면서 좀 더 자세히 알아두면 좋을 것 같아 흥미가 생겼다. 하지만 블로그들은 ㅠㅠ 다들 똑똑한 사람들만 있어서 내 눈높히를 충족해주지 못했다......... 그래서 챗지피티의 도움을 조금 받아 정리해보았다. 고마워요 챗지피티! 🫶🏻 아래는 챗지피티를 통해 얻은 정보들이다. 💡 Eureka란? 유레카는 분산 시스템에서 서비스 디스커버리와 로드 밸런싱을 담당하는 오픈 소스 솔루션입니다. 이를 사용하는 이유는 여러 가지가 있을 수 있지만, 다음과 같은 이유들이 일반적입니다. 서비스 디스커버리: 유레카는 마이크로서비스 아키텍처에서 서비스 디스커버리를 ..

TIL 2023.05.05