Repository: camel Updated Branches: refs/heads/master 20b24d7c1 -> 8a414c3d9
Add Host IP Address to JMX properties Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/a0034348 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a0034348 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a0034348 Branch: refs/heads/master Commit: a003434805705ab1df1e1b66f9d55a6bb9441573 Parents: 20b24d7 Author: Yamini Sadu <ys...@tdktech.com> Authored: Tue Aug 4 11:07:36 2015 -0500 Committer: Claus Ibsen <davscl...@apache.org> Committed: Wed Aug 5 09:50:54 2015 +0200 ---------------------------------------------------------------------- .../management/DefaultManagementAgent.java | 23 ++++++++++- .../camel/management/JmxSystemPropertyKeys.java | 4 ++ .../org/apache/camel/spi/ManagementAgent.java | 13 ++++++ .../DefaultManagementAgentMockTest.java | 42 ++++++++++++++++---- .../xml/AbstractCamelContextFactoryBean.java | 3 ++ .../camel/core/xml/CamelJMXAgentDefinition.java | 19 ++++++++- .../camel/spring/JMXAgentPropertiesTest.java | 11 +++++ .../org/apache/camel/spring/JMXAgentTest.java | 3 ++ .../org/apache/camel/spring/jmxConfig.xml | 3 +- .../camel/spring/jmxConfigUsingProperties.xml | 3 +- 10 files changed, 111 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java index a65fffc..e2f40b8 100644 --- a/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java +++ b/camel-core/src/main/java/org/apache/camel/management/DefaultManagementAgent.java @@ -84,6 +84,7 @@ public class DefaultManagementAgent extends ServiceSupport implements Management private Boolean registerNewRoutes = true; private Boolean mask = true; private Boolean includeHostName = false; + private Boolean useHostIPAddress= false; private String managementNamePattern = "#name#"; private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.Default; @@ -166,6 +167,10 @@ public class DefaultManagementAgent extends ServiceSupport implements Management managementNamePattern = System.getProperty(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN); values.put(JmxSystemPropertyKeys.MANAGEMENT_NAME_PATTERN, managementNamePattern); } + if (System.getProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS) != null) { + useHostIPAddress = Boolean.getBoolean(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS); + values.put(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, useHostIPAddress); + } if (!values.isEmpty()) { LOG.info("ManagementAgent detected JVM system properties: {}", values); @@ -275,8 +280,18 @@ public class DefaultManagementAgent extends ServiceSupport implements Management public void setIncludeHostName(Boolean includeHostName) { this.includeHostName = includeHostName; } + + @Override + public Boolean getUseHostIPAddress() { + return useHostIPAddress !=null && useHostIPAddress; + } + + @Override + public void setUseHostIPAddress(Boolean useHostIPAddress) { + this.useHostIPAddress = useHostIPAddress; + } - public String getManagementNamePattern() { + public String getManagementNamePattern() { return managementNamePattern; } @@ -465,7 +480,11 @@ public class DefaultManagementAgent extends ServiceSupport implements Management if (canAccessSystemProps) { try { - hostName = InetAddress.getLocalHost().getHostName(); + if(useHostIPAddress){ + hostName = InetAddress.getLocalHost().getHostAddress(); + }else{ + hostName = InetAddress.getLocalHost().getHostName(); + } } catch (UnknownHostException uhe) { LOG.info("Cannot determine localhost name. Using default: " + DEFAULT_REGISTRY_PORT, uhe); hostName = DEFAULT_HOST; http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java b/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java index 5684e5d..8fc9040 100644 --- a/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java +++ b/camel-core/src/main/java/org/apache/camel/management/JmxSystemPropertyKeys.java @@ -73,6 +73,10 @@ public final class JmxSystemPropertyKeys { // To configure the default management name pattern using a JVM system property public static final String MANAGEMENT_NAME_PATTERN = "org.apache.camel.jmx.managementNamePattern"; + + // flag to enable host ip address instead of host name + public static final String USE_HOST_IP_ADDRESS = "org.apache.camel.jmx.useHostIPAddress"; + private JmxSystemPropertyKeys() { // not instantiated http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java b/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java index ac25bd2..b208c8d 100644 --- a/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java +++ b/camel-core/src/main/java/org/apache/camel/spi/ManagementAgent.java @@ -351,5 +351,18 @@ public interface ManagementAgent extends Service { * @return the level */ ManagementStatisticsLevel getStatisticsLevel(); + + /** + * Gets whether host IP Address to be used instead of host name. + * + * @return <tt>true</tt> if included + */ + Boolean getUseHostIPAddress(); + + /** + * Sets whether to use host IP Address + * @param useHostIPAddress <tt>true</tt> to use IP Address. + */ + void setUseHostIPAddress(Boolean useHostIPAddress); } http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java b/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java index 848fbb3..efeb20d 100644 --- a/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java +++ b/camel-core/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java @@ -16,14 +16,6 @@ */ package org.apache.camel.management; -import javax.management.JMException; -import javax.management.MBeanServer; -import javax.management.ObjectInstance; -import javax.management.ObjectName; - -import org.apache.camel.spi.ManagementAgent; -import org.junit.Test; - import static org.easymock.EasyMock.createStrictMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; @@ -32,6 +24,16 @@ import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import javax.management.JMException; +import javax.management.MBeanServer; +import javax.management.ObjectInstance; +import javax.management.ObjectName; + +import org.apache.camel.CamelContext; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.spi.ManagementAgent; +import org.junit.Test; + /** * Tests proper behavior of DefaultManagementAgent when * {@link MBeanServer#registerMBean(Object, ObjectName)} returns an @@ -75,5 +77,29 @@ public class DefaultManagementAgentMockTest { assertFalse(agent.isRegistered(sourceObjectName)); verify(mbeanServer); } + + @Test + public void testShouldUseHostIPAddressWhenFlagisTrue() throws Exception { + System.setProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, "true"); + System.setProperty(JmxSystemPropertyKeys.CREATE_CONNECTOR, "true"); + CamelContext ctx = new DefaultCamelContext(); + + ManagementAgent agent = new DefaultManagementAgent(ctx); + agent.start(); + + assertTrue(agent.getUseHostIPAddress()); + } + + @Test + public void shouldUseHostNameWhenFlagisFalse() throws Exception{ + System.setProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, "false"); + System.setProperty(JmxSystemPropertyKeys.CREATE_CONNECTOR, "true"); + CamelContext ctx = new DefaultCamelContext(); + + ManagementAgent agent = new DefaultManagementAgent(ctx); + agent.start(); + + assertFalse(agent.getUseHostIPAddress()); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java ---------------------------------------------------------------------- diff --git a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java index 20e93a3..b24cf81 100644 --- a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java +++ b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java @@ -456,6 +456,9 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex if (camelJMXAgent.getIncludeHostName() != null) { agent.setIncludeHostName(CamelContextHelper.parseBoolean(getContext(), camelJMXAgent.getIncludeHostName())); } + if (camelJMXAgent.getUseHostIPAddress() != null) { + agent.setUseHostIPAddress(CamelContextHelper.parseBoolean(getContext(), camelJMXAgent.getUseHostIPAddress())); + } if (camelJMXAgent.getMask() != null) { agent.setMask(CamelContextHelper.parseBoolean(getContext(), camelJMXAgent.getMask())); } http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java ---------------------------------------------------------------------- diff --git a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java index b4ce31b..e2d532ef 100644 --- a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java +++ b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java @@ -122,6 +122,12 @@ public class CamelJMXAgentDefinition extends IdentifiedType { */ @XmlAttribute private String includeHostName; + + /** + * A flag that indicates whether to use hostname or IP Address in the service url. + */ + @XmlAttribute + private String useHostIPAddress; /** * A flag that indicates whether to remove detected sensitive information (such as passwords) from MBean names and attributes. @@ -256,8 +262,16 @@ public class CamelJMXAgentDefinition extends IdentifiedType { public void setMask(String mask) { this.mask = mask; } + + public String getUseHostIPAddress() { + return useHostIPAddress; + } - @Override + public void setUseHostIPAddress(String useHostIPAddress) { + this.useHostIPAddress = useHostIPAddress; + } + + @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("CamelJMXAgent["); @@ -308,6 +322,9 @@ public class CamelJMXAgentDefinition extends IdentifiedType { if (includeHostName != null) { csb.append("includeHostName=" + includeHostName); } + if (useHostIPAddress != null) { + csb.append("useHostIPAddress=" + useHostIPAddress); + } if (mask != null) { csb.append("mask=" + mask); } http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java index 6f1ed61..e2ac4d3 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java +++ b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentPropertiesTest.java @@ -16,6 +16,8 @@ */ package org.apache.camel.spring; +import org.apache.camel.CamelContext; +import org.apache.camel.spi.ManagementAgent; import org.springframework.context.support.AbstractXmlApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; @@ -35,5 +37,14 @@ public class JMXAgentPropertiesTest extends JMXAgentTest { protected AbstractXmlApplicationContext createApplicationContext() { return new ClassPathXmlApplicationContext("org/apache/camel/spring/jmxConfigUsingProperties.xml"); } + + public void testEnableUseHostIPAddress() throws Exception{ + + CamelContext ctx = createCamelContext(); + ManagementAgent agent = ctx.getManagementStrategy().getManagementAgent(); + agent.start(); + assertTrue(agent.getUseHostIPAddress()); + + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java index 3724738..b6a19c2 100644 --- a/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java +++ b/components/camel-spring/src/test/java/org/apache/camel/spring/JMXAgentTest.java @@ -21,6 +21,9 @@ import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; +import org.apache.camel.CamelContext; +import org.apache.camel.spi.ManagementAgent; +import org.junit.Test; import org.springframework.context.support.AbstractXmlApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml index 00cdd52..1d685a3 100644 --- a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml +++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfig.xml @@ -27,7 +27,8 @@ <!-- enable JMX --> <jmxAgent id="agent" registryPort="20008" usePlatformMBeanServer="true" - createConnector="true"/> + createConnector="true" + /> <route id="foo" autoStartup="false"> <from uri="seda:start"/> http://git-wip-us.apache.org/repos/asf/camel/blob/a0034348/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml ---------------------------------------------------------------------- diff --git a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml index 5b80817..18c186a 100644 --- a/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml +++ b/components/camel-spring/src/test/resources/org/apache/camel/spring/jmxConfigUsingProperties.xml @@ -30,7 +30,8 @@ <jmxAgent id="agent" registryPort="{{myjmx.port}}" disabled="{{myjmx.disabled}}" usePlatformMBeanServer="{{myjmx.usePlatform}}" createConnector="true" - statisticsLevel="RoutesOnly"/> + statisticsLevel="RoutesOnly" + useHostIPAddress="true"/> <route id="foo" autoStartup="false"> <from uri="seda:start"/>