I'd like enable JMXMP in Spring application running locally.
application.properties:
spring.jmx.enabled=true
spring.jmx.url=service:jmx:jmxmp://localhost:9875/
SampleAppConfig.java:
import com.app.config.properties.SampleAppProperties;
import com.app.exception.InternalErrorException;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jmx.support.ConnectorServerFactoryBean;
@RequiredArgsConstructor
@EnableConfigurationProperties({SampleAppProperties.class})
@Configuration
public class SampleAppConfig implements InitializingBean {
@Value("${spring.jmx.url}")
private String jmxUrl;
@Value("${log4j2.formatMsgNoLookups:#{null}}")
private Boolean formatMsgNoLookups;
@Bean
@ConditionalOnProperty(prefix = "spring.jmx",name = "enabled",havingValue = "true",matchIfMissing = false)
public ConnectorServerFactoryBean connectorServerFactoryBean() throws Exception {
final ConnectorServerFactoryBean connectorServerFactoryBean = new ConnectorServerFactoryBean();
connectorServerFactoryBean.setServiceUrl(jmxUrl);
return connectorServerFactoryBean;
}
}
Running app:
java -Xms128m -Xmx2048m -XX:ReservedCodeCacheSize=240m -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:ParallelGCThreads=4 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true com.app.SampleAppApplication
I'm trying to connect to VisualVM via service:jmx:jmxmp://localhost:1099/ and getting error: Unavailable application defined by a JMX connection
.
Any ideas?