From: Giovanni Meo Date: Mon, 26 Aug 2013 10:39:05 +0000 (+0200) Subject: Allow controller to be managed via JMX remotely X-Git-Tag: releasepom-0.1.0~163 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;ds=sidebyside;h=c7ea9849f6b8bcd3539d411cfa81d80426c68f22;hp=--cc;p=controller.git Allow controller to be managed via JMX remotely - In order to inspect the controller remotely JMX comes very handy especially in clustered environment, this patch allow to start the controller and to enable JMX remotely, this is still only the unsecure version, for secure version a subsequent patch will be provided Change-Id: I47c8651f19e4207b37b064161bb88476f3e31d0b Signed-off-by: Giovanni Meo --- c7ea9849f6b8bcd3539d411cfa81d80426c68f22 diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java b/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java index c3fd30ae9b..f5c655a4ea 100644 --- a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java +++ b/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManager.java @@ -227,7 +227,8 @@ public class ClusterManager implements IClusterServices, IContainerAware { if (amIGossipRouter) { logger.info("I'm a GossipRouter will listen on port {}", gossipRouterPort); - res = new GossipRouter(gossipRouterPort); + // Start a GossipRouter with JMX support + res = new GossipRouter(gossipRouterPort, null, true); } return res; } diff --git a/opendaylight/distribution/opendaylight/src/main/resources/run.sh b/opendaylight/distribution/opendaylight/src/main/resources/run.sh index 2587a5d2ab..2daa1f42e3 100755 --- a/opendaylight/distribution/opendaylight/src/main/resources/run.sh +++ b/opendaylight/distribution/opendaylight/src/main/resources/run.sh @@ -40,7 +40,7 @@ JVM at path ${JAVA_HOME}/bin/java check your JAVA_HOME" && exit -1; basedir=`dirname ${fullpath}` function usage { - echo "Usage: $0 [-debug] [-debugsuspend] [-debugport ] [-start []] [-stop] [-status] [-console] [-help] []" + echo "Usage: $0 [-jmx] [-jmxport ] [-debug] [-debugsuspend] [-debugport ] [-start []] [-stop] [-status] [-console] [-help] []" exit 1 } @@ -56,6 +56,9 @@ debugportread="" startdaemon=0 daemonport=2400 daemonportread="" +jmxport=1088 +jmxportread="" +startjmx=0 stopdaemon=0 statusdaemon=0 consolestart=1 @@ -65,8 +68,10 @@ unknown_option=0 while true ; do case "$1" in -debug) debug=1; shift ;; + -jmx) startjmx=1; shift ;; -debugsuspend) debugsuspend=1; shift ;; -debugport) shift; debugportread="$1"; if [[ "${debugportread}" =~ ^[0-9]+$ ]] ; then debugport=${debugportread}; shift; else echo "-debugport expects a number but was not found"; exit -1; fi;; + -jmxport) shift; jmxportread="$1"; if [[ "${jmxportread}" =~ ^[0-9]+$ ]] ; then jmxport=${jmxportread}; shift; else echo "-jmxport expects a number but was not found"; exit -1; fi;; -start) startdaemon=1; shift; daemonportread="$1"; if [[ "${daemonportread}" =~ ^[0-9]+$ ]] ; then daemonport=${daemonportread}; shift; fi;; -stop) stopdaemon=1; shift ;; -status) statusdaemon=1; shift ;; @@ -100,6 +105,12 @@ if [[ "${daemonport}" -lt 1024 ]] || [[ "${daemonport}" -gt 65535 ]]; then exit -1 fi +# Validate jmx port +if [[ "${jmxport}" -lt 1024 ]] || [[ "${jmxport}" -gt 65535 ]]; then + echo "JMX Port not in the range [1024,65535] value is ${jmxport}" + exit -1 +fi + # Debug options if [ "${debugsuspend}" -eq 1 ]; then extraJVMOpts="${extraJVMOpts} -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${debugport}" @@ -107,6 +118,11 @@ elif [ "${debug}" -eq 1 ]; then extraJVMOpts="${extraJVMOpts} -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${debugport}" fi +# Add JMX support +if [ "${startjmx}" -eq 1 ]; then + extraJVMOpts="${extraJVMOpts} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=${jmxport} -Dcom.sun.management.jmxremote" +fi + ######################################## # Now add to classpath the OSGi JAR ########################################