CentOS (linux) 에서 사용자 추가 및 폴더 권한 설정하기
리린이(리눅스어린이)에게 서버 구성의 임무가 주어졌다. 리눅스를 많이 사용해보긴 했어도 남이 구성한 환경 위에서 기본적인 명령어나 shell script 정도 만들어서 동작시키고 하는것이 전부였는데 처음부터 구..
키자드에 등록된 총 280개의 포스트를 확인하실 수 있습니다.
리린이(리눅스어린이)에게 서버 구성의 임무가 주어졌다. 리눅스를 많이 사용해보긴 했어도 남이 구성한 환경 위에서 기본적인 명령어나 shell script 정도 만들어서 동작시키고 하는것이 전부였는데 처음부터 구..
CentOS에서 JAVA를 설치해보자. openjdk11 을 설치할것이기 때문에 이것부터 구해야 한다. Archived OpenJDK GA Releases Archived OpenJDK General-Availability Releases This page is an archive of previously..
maven 방식의 프로젝트들이 많아짐에따라 nexus를 설치해야 하는 경우들도 많아졌다. 일단 nexus는 외부와 통신이 되는 서버에 놓는것이 맞다. 내부망에서도 사용은 가능하지만 없는 라이브러리 같은 경우는 직접..
sonarqube를 설치하고 실행을 하면 unable to start jvm permission denied (13) 오류가 떨어지는 경우가 있다. 실행을 시켰을때는 바로 확인을 할수는 없고 /sonarqube 설치경로/logs/sonar.log 파일을 보면 다음..
git이 대세이고 흐름을 따라가야 하지만 일부 소규모 프로젝트에서는 svn을 고집하는 경우가 아직은 많이 있다. 그래서 이번엔 svn을 linux 환경에서 어떻게 설치하는지 알아보도록 하자. (사용자 계정으로 설치한..
개발서버에 git 을 설치해야 한다. 사용을 해본적은 있어도 설치는 해본적이 없었는데 역시 요즘 기술답게 설치는 어렵지 않았다. 간단하다. git 설치하기 가장 간단한 방법은 wandisco 사의 repo를 활용하는 것이..
배포환경을 구성하다보면 서버간 ssh 연결이 안되는 경우(거의 대부분)을 볼수 있다. 이럴 경우에는 방화벽으로 막혀 있는것이 아니라면 hosts.allow 설정으로 해결할 수 있다. 배포서버를 A, 개발서버를 B 라고..
batch 성 업무를 처리할때 동일한 쿼리에 바인딩할 값만 변경하여 계속 반복하며 처리해야 하는 상황이 있다. public void updateEmployee(List list) { for (Employee employee : list) { sqlSession.update("Emp..
잘 돌아가던 springboot 1.x 기반의 웹프로젝트를 사용하다가 msa 관련 지원이 더 유연한 springboot 2.x 로 전환을 해야 했다. springboot 2.x 로 migration을 하려면 생각보다 많은 부분을 봐야 한다. 기본 spri..
springboot 1.4.2 를 사용하다가 2.x 로 versionup을 하였다. 오 생각보다 별 이슈 없이 잘 되네? 하며 종속성 에러를 다 잡고 서버를 기동하는 순간 다음과 같은 오류가 떨어졌다. 이 익숙한듯 익숙하지않은 익..
dataaccess를 혁신적으로 편하게 만들어준 MyBatis. SI를 수행하는 사람은 모르는 사람이 없는 스킬셋이다. 이 MyBatis를 사용할때 성능을 꽤 올릴수 있는 방법들이 있다. 대량데이터를 조회하는 query 설정에 fet..
spring에서 mysql datasource를 설정하는 방법이다. pom.xml 에서 mysql 연동을 위한 driver를 가지고 온다. mysql mysql-connector-java 8.0.20 applicationContext에서 datasource 설정을 다음과 같이 한다. (xm..
Jenkins에서 master-slave node로 구성하는건 분산 빌드라던지 원격지에서 원격지로의 배포 등 여러가지 용도로 사용될 수 있다. Jenkins를 사용한다면 실제 빌드는 모두 Jenkins가 위치한 서버에서만 가능한데 이..
spring의 환경변수를 정의하는 역할을 하고 있는 application.properties 파일의 내용을 가지고 오는 방법은 여러가지가 있다. 하지만 이 여러가지 방법들은 사용을 하기 번거로울수도 있고 또한 bean이 아닌 POJO..
SSL을 설치를 해도 거의 대부분의 사람들은 URL을 통한 접근을 할 때 HTTP protocol로 입력을 하고 들어온다. 그렇다고 사용자들보고 꼭 우리 사이트는 HTTPS protocol을 사용하니 https://xxxx.xxxx 이렇게 들어..
Windows 서버로 진행을 하는 프로젝트를 몇번 진행을 해봤지만 우리 생활에 밀접하게 있는 OS라 친숙하면서도 SSH, FTP, 방화벽 등등 리눅스보다 다루기 어려운 부분들이 많이 있었다. 이 Windows 서버에 개발서버..
windows 서버는 기본적으로 ssh를 지원을 하지 않는다. 따라서 windows 서버에 배포를 하기 위해서는 openssh 를 설치하거나 ftp로 배포를 해야 한다. 이중 ftp를 사용하여 배포하는것을 설명하려고 한다. 일단 wi..
JSP를 사용하여 하나의 프로젝트를 하면 알게모르게 수많은 Tag Library를 사용하게 된다. Tag Library란? 자바 코드를 캡슐화 하여 JSP에서 간단하게 사용할 수 있게 해주는것을 말한다. 이런 수많은 Tag Librar..
Jenkins에서 빌드를 하던지 배치를 돌리던지 할때 오류가 발생을 할 수 있다. 이때 오류에 대해서 즉각 noti를 받고 싶은 경우라면 일반적으로는 Jenkins와 연동이 되는 email noti를 받던지 slack을 통해서 noti..
springboot를 기동을 시작하면 제일 먼저 다음 문구가 나오는것을 확인할 수 있다. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | |..
지난번에 "Jenkins에서 Build FAILURE 시 특정 위치에 로그남기기"를 하며 거기에서 사용된 Shell Script가 있다. Jenkins에서 Build FAILURE 시 특정 위치에 로그 남기기 Jenkins에서 빌드를 하던지 배치를 돌리..
Jenkins를 통해 배포환경을 구성하고 실제 운영을 할 때 빌드 및 배포를 한 버전의 application이 문제가 생겼을 경우 급하게 이전 버전으로 복구를 하고 싶은 경우가 있다. 예전에 nexus를 통해서 이와 비슷한 방..
서버는 영원히 부팅된채로 동작할 수 없다. 패치에 따라 혹은 새로 반영해야할 무언가가 있으면 재부팅을 해줘야 한다. 그럼 재부팅을 할때마다 서비스를 수동으로 다 동작시켜야하는가? 물론 아니다. 다 방법이..
Jenkins를 사용하다보면 비슷한 성격의 Job들을 병렬로 처리하기를 원하는 경우가 있을수 있다. 이럴 경우는 pipeline 을 사용하여 간단하게 처리할 수 있다. pipeline이란 전용 DSL을 통해 코드로 빌드 과정을 나..
전에 Jenkins 내에서 pipeline script 작성을 하여 Jenkins Pipeline으로 Job 병렬처리 하는것을 해보았다. 말 그대로 Jenkins Job을 구성할때 Pipeline 영역에 DSL을 작성을 하는 것이다. Jenkins Pipeline 으로..
maven에서 사용할 수 있는 명령어들에 정리해본다. command desc compile 컴파일 수행 test 컴파일 수행 후 테스트 클래스 수행 package 컴파일을 수행하고 컴파일한 소스를 packaging 양식(war or jar)에 맞춰 프..
Maven 프로젝트를 빌드할때 java.lang.AssertionError 이 발생하는 경우가 있다. Exception in thread "main" java.lang.AssertionError at jdk.compiler/com.sun.tools.javac.util.Assert.error(Assert.java:155)..
기존의 프로젝트를 springboot 전환 과정에서, 모든 jsp에서 include하고 있는 공통 jsp 파일에 대해 전환하는 부분을 찾기 힘들었다. stackoverflow 같은곳에서 도움을 얻고자 열심히 찾아보았지만 jsp 자체가 sp..
JSP에서 spring 설정 파일인 application.properties 안의 내용을 가지고 와야 할 경우가 있다. 이럴 경우는 다음과 같이 간단하게 가져올 수 있다. 위와 같이 정의하면 jspPath라는 변수에 spring.mvc.view.prefi..
프로젝트를 수행함에 있어 오픈시 가장 크리티컬한 문제이기도 하고 자주 문제가 발생하는 부분인 Transaction 오류에 관련된 내용을 정리해본다. Transaction이 잘 수행되다가 사용자가 몰리면 DB가 죽는경우 Spr..
Spring Batch 를 통해 Batch Job을 만들었으면 이걸 주기적으로 돌려주는 무언가가 필요하다. 배치와 스케쥴러를 혼동하는 사람들이 종종 있는데 이것은 완전히 다른 개념이다. 배치는 실시간으로 처리를 하는것이..
요즘 JAVA 버전이 참 정신없이 나오고 있다. 6개월에 한번씩 버전업데이트라니... 유료화 되면서 구독형 라이센스니 뭐니 해가지고 신경써야 되는게 늘었다... 개발환경을 구성해야 하는 입장에서는 발빠르게 대응..
현재까지 진행한 대부분의 프로젝트는 복잡하기도 하고 상황에 맞지 않아(WebService, EAI 연동 등) Spring Batch에서 일반적으로 사용하고 있는 chunk 방식 대신에 tasklet을 이용하여 사용하였다. tasklet을 이..
지난 글인 File to File 예제를 통해 어떤것이 Chunk 지향적인것인지 간단히 알수 있었다. Spring Batch Chunk Example (1) - File to File (with FlatFileItemReader, FlatFileItemWriter) 현재까지 진행한 대부..
이클립스를 통해 Maven 프로젝트 수행시 다음과 에러가 나면서 에러표시가 사라지지 않는 경우가 생긴다. 이건 자식 프로젝트의 pom.xml 설정이다. 결론부터 미리 말하자면 위와 같은 오류가 발생했을때는 조치를..
프로젝트를 하다 보면 LogFactory 관련 오류가 나는 경우가 있다. 말그대로 LogFactory 클래스를 찾지 못해서 발생하는 exception이다. 이유는 다 exclusion 만 시켰지 '연결'을 시켜주지 않아서이다. org.spring..
이클립스로 개발환경을 새로 구성을 할때 기존의 소스를 import 를 시키고 JSP나 Html, CSS 파일 등을 열어보았을때 인코딩이 깨지는 경우가 있다. 이런식으로 인코딩이 깨지는데 해결방법은 두가지가 있다. 첫번..
이번에 소개할 내용은 소스를 빌드하여 nexus에 배포를 하고 그 배포된 파일 목록을 Jenkins에서 가져와 원하는 파일로 was에 배포를 하는 것이다. 이게 뭐하는 일인가 싶을수도 있지만 was에 배포한 파일이 잘못..
자바로 코딩을 할때 반복적으로 또는 기계적으로 작업을 해야 하는 몇몇 경우가 있다. 예를들면 model 클래스를 작성할때 멤버변수를 정의하고 그에 따른 getter, setter 등을 만든다거나 로그를 사용할 클래스에..
웹어플리케이션을 개발하면 거의 필수적으로 하는 것이 바로 클라이언트 IP를 획득하는 것이다. 왜냐? 누가 뭘 하는지 알아야 문제가 생겼을때 대처가 가능하기 때문이다. 어떻게 IP를 얻어올수 있는가? public st..
자주 쓰이는 String prototype 에 대한 정리 (긁어모으기!) /** * 문자열 replaceAll */ String.prototype.replaceAll = function (target, replacement) { return this.split(target).join(replacement); }; /*..
javascript에서 window.open() 으로 popup을 띄울때 스크롤바가 생성이 되지 않는 현상이 있다. 물론 크롬에서는 문제 없이 잘 된다. 항상 이놈의 IE가 문제를 일으킨다. 문제가 발생한 원인은 IE에서는 스크롤바..
spring에서 transaction propagation 은 전파옵션을 뜻한다. 전파옵션이라는 것은 트랜잭션을 시작하거나 기존 트랜잭션에 참여하는 방법에 대해 결정하는 속성값 정도로 생각하면 된다. 즉 큰 트랜잭션의 흐름을..
git을 더욱 효과적으로 사용할 수 있도록 도와주는 여러 도구들이 있지만 오늘은 이클립스에서 git plugin을 통해서 git을 사용하는 방법에 대해 알아보겠다. 요즘 나오는 이클립스나 STS는 모두 git이 기본적으로..
지난번에는 svn에 trunk, branches, tags 생성하는 방법에 대해서 알아보았다. svn trunk, branches, tags 생성하기 (with svn:E160013) 일단 TESTSVN 이라는 svn repository 를 생성을 하였다. (svn 은 설치가 되..
svn을 통한 배포 관리 (trunk, branches, tags 활용) 지난번에는 svn에 trunk, branches, tags 생성하는 방법에 대해서 알아보았다. svn trunk, branches, tags 생성하기 (with svn:E160013) 일단 TESTSVN 이라는..
전에 spring 프로젝트를 springboot 프로젝트로 migration 하는 과정을 기술한 적이 있다. 마찬가지로 현재 Spring Batch로 구성된 batch 프로젝트를 springboot batch로 전환을 하려고 한다. 두 프로젝트 모두 ma..
springloaded는 hot deploy를 가능하게 해주는 기술 중 하나이다. hot deploy는 뭐냐? 쉽게 설명을 하자면 소스의 변경을 was의 재기동 없이 반영을 해주는 것이라고 생각 하면 된다. was의 재기동은 상황에 따라..
보통은 로컬 개발환경을 제외하고는 was에 datasource 설정을 하는 JNDI 방식을 많이 사용을 한다. JNDI는 datasource 설정을 was에서 하고 효율적인 connection pool 관리 등 여러가지 장점을 가지고 있어서 주로..
tomcat에서 jndi datasource 설정을 하는 방법은 전에 알아보았다. Tomcat JNDI Datasource 설정하여 Spring 연동하기 보통은 로컬 개발환경을 제외하고는 was에 datasource 설정을 하는 JNDI 방식을 많이 사용을..
spring batch는 여러 회사가 제각기 만들던 batch framework을 통합시켰을만큼 잘 만들어진 batch framework이다. 많은 사람들이 사용을 하고 또 표준이 되었다는건 그만큼 강력한 기능과 누구나 쉽게 다룰수 있는..
라디오버튼(input type="radio") 을 핸들링 시 크롬에서는 정상동작하지만 IE에서는 비정상으로 동작하는 경우가 있다. 바로 다음과 같은 경우이다. .attr("checked", true); 이렇게 작성을 하면 IE에서는 정상동..
요즘? MSA가 많은 IT 선도기업들 사이에서 사용이 되면서 보수적인 IT 회사들도 그 장점에 혹해서 기존의 Monolithic Architecture에서 탈피하고 싶어하는 움직임을 보이고 있다. 스프링 개발팀은 이렇게 추세가..
2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml 위의 글에서 springboot 전환의 첫 걸음인 pom.xml 전환을 해 보았다. 그다음은 web.xml 파일..
2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml 2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration..
2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml 2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration..
수많은 삽집을 해가며 결국에는 전환에 성공을 했다. 아주 초간단으로 최소한의 것들만 바꾸고 전환한거라 앞으로 할일(applicationContext의 java config 전환, spring properties 활용 등)도 많지만 그래도 기쁜..
Jenkins와 Sonarqube 연동을 하려면 일단 Jenkins와 Sonarqube가 설치가 되어 있어야 한다. 각각의 설치 과정은 생략하도록 하겠다. 이 두개의 어플리케이션이 설치가 되어 있다는 가정하에 설명을 하도록 하겠다...
apache 설치 위치가 /app/webserver/apache 라고 한다면 기동 명령어인 apachectl (or httpd) 은 /app/webserver/apache/bin 에 위치하고 있다. 이곳으로 이동한다. 중지 : ./apachectl stop 시작 : ./apachectl s..
Sonarqube를 사용하다 보면 특정 프로젝트에 맞게 룰셋을 정의해야 하는 경우가 생긴다. 룰셋 관련 파일을 받았을 때 이를 어떻게 Sonarqube에 적용을 해야 하는지, 또 어떻게 룰셋 파일로 추출해 내는지에 대해..
일단 TESTSVN 이라는 svn repository 를 생성을 하였다. (svn 은 설치가 되었다는 전제) svnadmin create --fs-type fsfs /app/svn/TESTSVN 생성을 마치면 이클립스에서 바로 생성된 svn 주소를 통해 만든 Reposit..
Jeus WebAdmin 진입 후 Servers > 적용할 서버 선택 > Basic 탭 > Basic Info > JVM Option 에서 -Dfile.encoding=UTF-8 추가 Servers > 적용할 서버 선택 > Engine 탭 > Web Engine > Basic > 고급선택사항 에서..
spring에서 mssql datasource를 설정하는 방법이다. pom.xml 에서 mssql 연동을 위한 driver를 가지고 온다. com.microsoft.sqlserver sqljdbc4 4.0 applicationContext에서 datasource 설정을 다음과 같이 한다...
logback이라던지 log4j2 등 비교적 최근에 나온 logging framework을 사용하면 appender를 이용해 시간이 오래 된 로그를 삭제할 수 있지만 그 전에 나온 log4j 등의 logging framework은 이런 기능이 없다. 따라..
JaCoCo (Java Code Coverage)는 품질 측정 도구중 하나로 동적 소스 분석 툴에 해당한다. 쉽게 설명을 하자면 내가 개발을 하면서 100가지 기능을 만들었는데 이 기능들이 모두 잘 사용이 되고 있는지 검사를 해주..
spring security에서는 중복 로그인 방지를 다음과 같이 간단하게 수행할 수 있다. 하지만 login page를 통하지 않고 SSO로 로그인을 하기를 원하는 경우에는 위와 같은 방법이 통하지 않는다. login page를 통해..
어떤 클래스를 리눅스 서버에 배포를 했더니 위와 같은 오류가 서버 로그에 출력이 되었다. 오류 내용은 java.awt.HeadlessException: no x11 display variable was set but this program performed an..
이클립스에서 SVN을 사용하여 프로젝트를 진행할때 SVN Repository와 sync를 맞춰 보면 위와 같이 내가 의도치 않은 target 하위에 있는 내용들도 모두 나오는걸 볼수 있다. 이렇게 target 하위의 내용들이 모두..
springboot 2.0 부터 기본 JDBC Connection Pool 로 지정이 된 hikariCP 라는 JDBC Connection Pool 이 있다. 나온지가 꽤 오래 되었지만 매번 쓰던 Spring의 SimpleDriverDataSource 라던지 Commons DBCP 만 사용..
maven으로 프로젝트를 진행하다보면 3rd party library를 가져와야 하는 상황이 있다. 3rd party library는 maven central repository에는 물론 등록되지 않은 library이다. 일반적으로 이럴 경우에는 remote repo..
RESTful은 REST + WebService 으로 REST 원리를 따르는 시스템 정도로 이해하면 될듯 싶다. 그럼 REST(REpresentational State Transfer)는 무엇일까? HTTP URI (eg. /customer)로 자원을 표현하고 Method(GET, P..
logback에 spring profile을 왜 적용하는가? 이유는 간단하다. 하나의 파일만 만들기 위해서다. spring profile을 적용하지 않는다면 logback.xml 하나만 있어도 될걸 logback-dev.xml, logback-prd.xml 등등 각 P..
이클립스 환경에서 SVN sync를 맞추고 update든 commit이든 하려고 하면 아주 가끔 다음과 같은 오류창이 뜨면서 당황하게 한다. 나는 commit 할것이 하나도 없고 update만 받아야 될 상황이고 프로젝트가 작다면..
SI 프로젝트를 하며 매번 하는일들 그런데 매번 망각하는 부분들 매번 다시 찾아보는 수고를 없애고자 이곳에 정리를 하려고 합니다.
datasource intializing 과정에서 [18:17:46.353][ERROR][com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException:line595] - HikariPool-1 - Exception during pool initialization. java.sql.SQLE..
프로젝트를 하다 보면 application을 /app/was/tomcat/instance1 이라는 곳에 deploy를 시켜놨는데 /app/NAS/images 라는 곳에서 이미지를 가져와야 하는 경우가 생길수가 있다. 실제 내 application이 deploy 된..
CORS 란 간단히 말해 서로 다른 도메인간 통신을 하는것을 승인하거나 차단하는 것. 차단이 되어 있을때는 여러가지 방법( eg. jsonp, proxy, 웹서버설정 등)으로 해결할수 있지만 그중 filter를 이용해서 해결하..
Jad는 Decompiler 이다. 다음 링크를 통해 Jad를 다운받을 수 있다. JAD Java Decompiler Download Mirror JAD Java Decompiler Download Mirror As http://www.kpdus.com is no longer accessible, JAD Java Deco..
일전에 springloaded를 이용하여 일반적인 tomcat 개발환경에서 hot swapping을 하는 방법에 대해 다룬적이 있었다. Eclipse, tomcat 환경에서 hot deploy 적용하기 (with springloaded) springloaded는 hot deplo..