본문으로 바로가기
반응형

Java 애플리케이션을 백그라운드 서비스로 실행하고 싶으신가요? Apache Commons Daemon 라이브러리와 jsvc 도구를 사용하면 Java 애플리케이션을 시스템 서비스나 데몬으로 쉽게 실행할 수 있습니다. 이 글에서는 jsvc의 개념과 사용법을 자세히 설명합니다.

Apache Commons Daemon이란?

Apache Commons Daemon은 Java 애플리케이션을 Unix-like 시스템에서 시스템 서비스 또는 데몬으로 실행할 수 있게 해주는 라이브러리입니다. 이를 통해 Java 애플리케이션을 시스템 부팅 시 자동으로 시작하거나 종료할 수 있습니다.

jsvc란?

jsvc는 Apache Commons Daemon 프로젝트의 일부로 제공되는 도구입니다. jsvc는 Java 애플리케이션을 데몬으로 실행할 수 있게 해주며, root 권한으로 시작한 다음 권한을 낮추는 기능도 제공합니다. 이를 통해 보안성을 높일 수 있습니다.

jsvc의 주요 기능

  • Java 애플리케이션을 백그라운드 서비스로 실행
  • 권한 승격 후 권한 낮추기
  • 애플리케이션의 시작, 중지, 재시작 관리

jsvc 설치

jsvc는 Apache Commons Daemon 프로젝트의 일부로 제공되며, 소스 코드를 다운로드 받아 빌드할 수 있습니다.

  1. Apache Commons Daemon 소스 코드 다운로드:
wget https://archive.apache.org/dist/commons/daemon/source/commons-daemon-1.2.4-src.tar.gz
tar xzf commons-daemon-1.2.4-src.tar.gz
cd commons-daemon-1.2.4-src/src/native/unix

   2. jsvc 빌드:

./configure
make
sudo cp jsvc /usr/bin

Daemon 인터페이스 구현

먼저, Daemon 인터페이스를 구현하는 클래스를 작성합니다. 이 클래스는 데몬의 초기화, 시작, 중지, 종료 메서드를 포함합니다.

import org.apache.commons.daemon.Daemon;
import org.apache.commons.daemon.DaemonContext;
import org.apache.commons.daemon.DaemonInitException;

public class MyDaemon implements Daemon {

    @Override
    public void init(DaemonContext context) throws DaemonInitException, Exception {
        // 초기화 코드
        System.out.println("Daemon 초기화");
    }

    @Override
    public void start() throws Exception {
        // 서비스 시작 코드
        System.out.println("Daemon 시작");
    }

    @Override
    public void stop() throws Exception {
        // 서비스 중지 코드
        System.out.println("Daemon 중지");
    }

    @Override
    public void destroy() {
        // 정리 코드
        System.out.println("Daemon 종료");
    }
}

Maven 설정

프로젝트의 pom.xml 파일에 Apache Commons Daemon 라이브러리를 추가합니다:

<dependency>
    <groupId>commons-daemon</groupId>
    <artifactId>commons-daemon</artifactId>
    <version>1.2.4</version>
</dependency>

Maven을 사용하여 프로젝트를 빌드합니다:

mvn clean package

jsvc로 데몬 실행

  1. 다음 명령을 사용하여 jsvc로 데몬을 실행합니다:
sudo jsvc -cp /path/to/your/classes:/path/to/commons-daemon.jar MyDaemon

위 명령에서 /path/to/your/classes는 컴파일된 클래스 파일의 경로를, /path/to/commons-daemon.jar는 Commons Daemon JAR 파일의 경로를 가리킵니다.

   2. 데몬 중지:

sudo jsvc -stop -pidfile /path/to/your/pidfile MyDaemon

   3.추가 옵션:

  • -user <username>: 데몬 실행 후 권한을 낮출 사용자 이름
  • -outfile <filename>: 표준 출력 리다이렉션 파일
  • -errfile <filename>: 표준 에러 리다이렉션 파일
  • -pidfile <filename>: 데몬의 PID를 저장할 파일

결론

Apache Commons Daemon과 jsvc를 사용하면 Java 애플리케이션을 손쉽게 시스템 서비스나 데몬으로 실행할 수 있습니다. Daemon 인터페이스를 구현하고 jsvc 도구를 사용하여 애플리케이션을 백그라운드에서 안정적으로 실행해보세요. 이를 통해 시스템 부팅 시 자동으로 애플리케이션을 시작하거나 종료할 수 있으며, 높은 보안성을 유지할 수 있습니다.

 

 

반응형