diff --git a/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/MetricsService.java b/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/MetricsService.java index 8bc267b6e27..e6c6144a24b 100644 --- a/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/MetricsService.java +++ b/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/MetricsService.java @@ -55,13 +55,9 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.xml.bind.JAXB; -import org.eclipse.microprofile.config.Config; -import org.eclipse.microprofile.config.ConfigProvider; import org.eclipse.microprofile.metrics.Metadata; import org.eclipse.microprofile.metrics.Metric; import org.eclipse.microprofile.metrics.MetricRegistry; @@ -104,7 +100,7 @@ public MetricsService() { public void init() { events.register(this); metricsServiceConfiguration = serviceLocator.getService(MetricsServiceConfiguration.class); - initMetadataConfig(JAXB.unmarshal(getConfigStream(), MBeanMetadataConfig.class)); + initMetadataConfig(getConfig()); } @Override @@ -135,20 +131,25 @@ private void initMetadataConfig(MBeanMetadataConfig metadataConfig) { globalTags); } - private InputStream getConfigStream() { - InputStream configStream = null; + private MBeanMetadataConfig getConfig() { + + InputStream defaultConfig = MetricsHelper.class.getResourceAsStream("/metrics.xml"); + MBeanMetadataConfig config = JAXB.unmarshal(defaultConfig, MBeanMetadataConfig.class); + + File metricsResource = new File(serverEnv.getConfigDirPath(), "metrics.xml"); if (metricsResource.exists()) { try { - configStream = new FileInputStream(metricsResource); + InputStream userMetrics = new FileInputStream(metricsResource); + MBeanMetadataConfig extraConfig = JAXB.unmarshal(userMetrics, MBeanMetadataConfig.class); + config.addBaseMetadata(extraConfig.getBaseMetadata()); + config.addVendorMetadata(extraConfig.getVendorMetadata()); + } catch (FileNotFoundException ex) { //ignore } } - if (configStream == null) { - configStream = MetricsHelper.class.getResourceAsStream("/metrics.xml"); - } - return configStream; + return config; } public Boolean isMetricsEnabled() { diff --git a/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/jmx/MBeanMetadataConfig.java b/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/jmx/MBeanMetadataConfig.java index d8fb1f0a138..9f5ce3ba627 100644 --- a/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/jmx/MBeanMetadataConfig.java +++ b/appserver/payara-appserver-modules/microprofile/metrics/src/main/java/fish/payara/microprofile/metrics/jmx/MBeanMetadataConfig.java @@ -70,6 +70,13 @@ public List getBaseMetadata() { public void setBaseMetadata(List baseMetadata) { this.baseMetadata = baseMetadata; } + + public void addBaseMetadata(List baseMetadata) { + if (this.baseMetadata == null) { + this.baseMetadata = new ArrayList<>(); + } + this.baseMetadata.addAll(baseMetadata); + } public List getVendorMetadata() { if (vendorMetadata == null) { @@ -82,4 +89,11 @@ public void setVendorMetadata(List vendorMetadata) { this.vendorMetadata = vendorMetadata; } + public void addVendorMetadata(List vendorMetadata) { + if (this.vendorMetadata == null) { + this.vendorMetadata = new ArrayList<>(); + } + this.vendorMetadata.addAll(vendorMetadata); + } + }