OSGI(Open Service Gatewary Initiative) 는 java 애플리케이션간 동적으로 동작, 배포를 가능하게 하는 서비스 번들, 모듈화를 위한 specification이다.. 예를 들면 이클립스IDE 의 플러그인 설치를 통해 기능을 확장해 가는 것과 같다.(이클립스도 OSGI Framework 인 Eclipse Equinox을 이용한다.) OSGI specification 구현하는 Framework는 몇 가지 종류가 있는데 오늘은 그중 하나인 apache felix와 felix를 이용한 OSGI 플랫폼인 apache karaf를 이용해서 간단한 예제를 만들어 보겠다. Pom.xml bundle작업을 하기위해 felix maven plugin 과 osgi dependency 를 추가한다..
Maven에서 Java 애플리케이션을 runnable jar 파일로 만드는 방법은 아래와 같이 대략 3가지 방법이 있다. maven-jar-plugin : src/main/java, src/main/resources 만 포함한다. maven-assembling-plugin: depdendencies jar 를 파일들을 함께 모듈화 한다. maven-shade-plugin: depdendencies jar 를 파일을 함께 모듈화 하고 중복되는 클래스가 있을경우 relocate dependency 모듈들의 packing 과 패키지, 클래스명 중복시 유연한 대처를 위해서 shade 플러그인을 사용하는게 가장 좋다. 오늘은 아주 간단한 자바 애플리케이션으로 Runnable Jar 파일을 만들어보겠다. pom.x..
지난번 처럼 메모리를 이용한 사용자 정보 저장은 Demo 등 인트라넷 내에서 운영하는 간단한 시스템일 경우 사용하고 대부분에 경우 사용하지 않는다. 오늘은 DB를 이용해 사용자를 로그인 처리하겠다. H2 database 스프링부트에 embded되어 있는 H2 database 를 사용하겠다. 이런 간단한 예제 애플리케이션을 만들거나 할때 사용하기 간편하다. pom.xml pom.xml 파일에 dependency 를 추가한다. com.zaxxer HikariCP com.h2database h2 1.3.148 org.springframework.boot spring-boot-starter-jdbc S1SecurityConfiguration 두 라인은 h2 Db사용에 있어서 필수적인 부분이다. http.csrf..
jEnv Mac 에서 여러개의 Java 버전을 관리하고 이용할 수 있는 툴이다. 아마도 jEnv 는 Java Enviorment에 약어일듯 싶다. 뭐 그게 중요한 건 아니고 오늘은 jEnv를 이용해서 여러 버전의 Java를 쉽게 사용하는 법을 알아보겠다. multiple java version /usr/libexec/java_home -V 명령어로 현재 설치된 java들을 확인할 수 있다. 현재 Mac에는 1.8, 11, 12가 설치 돼있다. ~ % /usr/libexec/java_home -V Matching Java Virtual Machines (3): 12, x86_64:"OpenJDK 12"/Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/H..
Ubuntu에서 여러 version의 자바를 사용하는 법을 알아보겠다. 우선 터미널에서 "java -version" 를 입력해보자 $ java -version openjdk version "1.8.0_232" OpenJDK Runtime Environment (Zulu 8.42.0.23-CA-linux64) (build 1.8.0_232-b18) OpenJDK 64-Bit Server VM (Zulu 8.42.0.23-CA-linux64) (build 25.232-b18, mixed mode) Auzul System의 Zulu 1.8 버전이 설치돼 있다. 이렇게 경로없이 java가 실행 가능한 이유는 환경 변수에 PATH가 잡혀있고 해당 PATH 에 java 실행파일이 존재하기 때문이다. "which j..
Build 설정 jenkins의 구성 메뉴에 접근해서 Build로 이동한다. gradle을 이용해서 jar를 파일을 생성하겠다. Build 메뉴에서 Invoke Gradle script를 선택해서 아래와같이 입력한다. 프로젝트에 소스코드와 같이 위치해 있는 gradle을 사용하기 때문에 gradle을 별도로 설치하지 않는다. 애플리케이션의 중단 스크립트와, build jar 파일의 복사, 애플리케이션 기동 스크립트실행 shell을 아래와 같이 순서대로 추가한다. 3번째 shell 의 BUILD_ID=my-web 부분은 jenkins에서 실행 시키는 start.sh의 lifecycle 을 분리하기 위해서다. start.sh 스프링 boot background 로 실행시킨다. #!/bin/sh nohup j..
지난 문서에 이어서 설치된 jenkins에 github를 연동해서 소스를 체크아웃 받는 프로젝트를 생성해보겠다. github에는 이미 SpringBoot 로 생성한 간단한 webapplication을 올려놨다. 프로젝트 생성 새로운 Item을 클릭해서 프로젝트 생성 화면으로 이동한다. 프로젝트 type을 선택할 수 있다. 가장 기본적인 Freestyle Project를 선택한다. Github porject 를 체크하고 연동할 Github repository 정보를 입력한다. 현재는 Credentials 정보가 없기 때문에 Add 버튼을 눌러 아래와 같이 Github 정보를 입력한다. Git 로그인 Username 과 Password 를 입력하면 된다. 완료 버튼으로 프로젝트 생성후 리스트에서 빌드 버튼을..
젠키스는 CI Tool 이다. CI는 지속적 통합(Continuous Integration)의 약자로 한마디로 빌드, 배포, 테스트등을 서비스 반영을 위한 일련의 과정등을 쉽게 처리할 수 있게 도와준다. 오늘은 리눅스 환경인 Ubuntu에 Jenkins를 설치해보겠다. install Jenkins package management tool 인 apt 명령어를 이용해 간단히 설치할 수 있다. wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenk..
웹 애플리케이션에서 사용자 요청에 대한 빠른 응답 속도 개선을 위해 client browser cache 나 server에 메모리등을 이용한 cache를 활용할 수 있다. 오늘은 spring boot2.x 와 연동할 수 있는 무료 오픈소스 cache framework인 ehcache를 활용하는 방법을 알아보겠다. pom.xml spring boot 와 ehcache 연동을 위한 필수적인 maven dependency 목록이다. org.springframework.boot spring-boot-starter-cache javax.cache cache-api org.ehcache ehcache 3.6.2 @EnableCaching cache 메소드들의 proxy 메서드를 만들기 위한 annotation이다...
한 대의 PC에서 GitHub의 계정을 여러개 사용할 경우 번거로움이 있다. Git크라켄 같은 상용Git 툴에서는 해당 기능을 유료 버전에만 지원하기도한다. 오늘은 ssh를 이용한 github 계정 여러개 사용하는 방법을 알아 보려한다. SSH Key 생성 ssh-keygen -t rsa -C "warpgate3@naver.com" #github 계정 ➜ .ssh ssh-keygen -t rsa -C "warpgate3@naver.com" Generating public/private rsa key pair. Enter file in which to save the key (/Users/mhkim/.ssh/id_rsa):/Users/mhkim/.ssh/my_github #디렉토리를 명시적으로 써주는게 좋..
- Total
- Today
- Yesterday