[java] Java Jolokia와 스프링 부트의 연동 방법은?

Jolokia는 Java 애플리케이션의 MBean을 원격으로 관리하기위한 오픈 소스 프로젝트입니다. 스프링 부트와 Jolokia를 함께 사용하면 스프링 애플리케이션의 MBean을 간편하게 모니터링하고 관리할 수 있습니다. 이번 포스트에서는 Java Jolokia를 스프링 부트와 연동하는 방법을 알아보겠습니다.

1. 의존성 추가하기

먼저, 스프링 부트 프로젝트에 Jolokia를 추가하기 위해 의존성을 설정해야 합니다. pom.xml 파일에 다음과 같은 의존성을 추가합니다:

<dependencies>
    <!-- 기타 의존성 추가 -->
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-core</artifactId>
        <version>1.6.2</version>
    </dependency>
</dependencies>

2. Jolokia 설정하기

Jolokia를 사용하기 위해 스프링 부트 애플리케이션의 설정 파일인 application.properties 또는 application.yml 파일에 다음과 같은 설정을 추가해야 합니다:

management.endpoints.web.exposure.include=*
management.endpoint.jolokia.enabled=true
spring.jmx.enabled=true

위 설정은 스프링 부트 애플리케이션의 모든 엔드포인트를 노출시키기 위한 management.endpoints.web.exposure.include=* 설정과 Jolokia 엔드포인트를 활성화하기 위한 management.endpoint.jolokia.enabled=true 설정, 그리고 JMX를 활성화하기 위한 spring.jmx.enabled=true 설정을 포함하고 있습니다.

3. Jolokia를 사용하여 MBean에 접근하기

이제 Jolokia를 사용하여 MBean에 접근해보겠습니다. 예를 들어, com.example.MyMBean이라는 MBean이 있다고 가정해봅시다. 다음과 같이 Jolokia를 통해 MBean의 정보를 가져올 수 있습니다:

import javax.management.ObjectName;
import org.jolokia.client.J4pClient;
import org.jolokia.client.request.J4pReadRequest;
import org.jolokia.client.request.J4pReadResponse;

public class JolokiaExample {
    public static void main(String[] args) throws Exception {
        J4pClient jolokia = new J4pClient("http://localhost:8080/actuator/jolokia");
        J4pReadRequest request = new J4pReadRequest(
            new ObjectName("com.example:type=MyMBean"), 
            "Attribute1", "Attribute2");
        J4pReadResponse response = jolokia.execute(request);
        
        System.out.println("Attribute1: " + response.getValue("Attribute1"));
        System.out.println("Attribute2: " + response.getValue("Attribute2"));
    }
}

위 예제 코드에서는 Jolokia 클라이언트를 사용하여 http://localhost:8080/actuator/jolokia 엔드포인트에 접근하고, com.example.MyMBeanAttribute1Attribute2를 가져오는 요청을 보냅니다. 응답으로 받은 결과를 출력합니다.

참고 자료