JBOSS – Changing connection pool size with JMX

Enable password in JBOSS_HOME/server/JBOSS_SERVER_NAME/conf/props/jmx-console-users.properties

You can then punch in bean calls such as the following…

[sa-jboss@servername ~]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=atgcatalogb_ds" MinSize
MinSize=10
[sa-jboss@servername ~]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin set "jboss.jca:service=ManagedConnectionPool,name=atgcatalogb_ds" MinSize 40
MinSize=40
[sa-jboss@servername ~]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=atgcatalogb_ds" MinSize
MinSize=40
[sa-jboss@servername bin]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=atgcataloga_ds" StateString
StateString=Started
[sa-jboss@servername bin]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=atgcataloga_ds" ConnectionCount
ConnectionCount=40
[sa-jboss@servername bin]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin invoke "jboss.jca:service=ManagedConnectionPool,name=atgcataloga_ds" flush
'null'
[sa-jboss@servername bin]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=atgcataloga_ds" ConnectionCount
ConnectionCount=0
[sa-jboss@servername bin]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin invoke "jboss.jca:service=ManagedConnectionPool,name=atgcataloga_ds" testConnection
true
[sa-jboss@servername bin]$ /usr/local/jboss/bin/twiddle.sh --server=servername:1599 -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=atgcataloga_ds" ConnectionCount
ConnectionCount=40
[sa-jboss@servername bin]$

You can completely refresh pools with something like the following…

#!/bin/sh

#--------------------------------------------------------------------------------------------------------------------------------------------------

function expPrint {
  echo -e $(date)'\t'$MESSAGE
}

#--------------------------------------------------------------------------------------------------------------------------------------------------

INSTANCE=$1
PID=$(ps -ef | grep java | awk -v INSTANCE=$INSTANCE '$(NF - 2) == INSTANCE {print $2}')
echo -e $(date)'\t'"java PID is $PID"
export PORT=$(netstat -anp 2>&1 | awk -v PID=$PID '$NF == PID"/java" && $6 == "LISTEN" && $4 ~ ":..99" {split($4,t,":");print t[2]}')

if [ ! $PORT ]; then
  echo "can't find port!"
  exit
fi

echo -e $(date)'\t'"connecting to JMX port $PORT on $HOSTNAME for instance $INSTANCE"

for pool in {atgcataloga_ds,atgcatalogb_ds,atgcore_ds}; do
  MESSAGE="flushing ${pool}..."
  expPrint
  MESSAGE=$(/usr/local/jboss/bin/twiddle.sh --server=${HOSTNAME}:${PORT} -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=${pool}" StateString)
  expPrint
  MESSAGE=$(/usr/local/jboss/bin/twiddle.sh --server=${HOSTNAME}:${PORT} -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=${pool}" ConnectionCount)
  expPrint
  MESSAGE=$(/usr/local/jboss/bin/twiddle.sh --server=${HOSTNAME}:${PORT} -u admin -p admin invoke "jboss.jca:service=ManagedConnectionPool,name=${pool}" flush)
  expPrint
  MESSAGE=$(/usr/local/jboss/bin/twiddle.sh --server=${HOSTNAME}:${PORT} -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=${pool}" ConnectionCount)
  expPrint
  MESSAGE=$(/usr/local/jboss/bin/twiddle.sh --server=${HOSTNAME}:${PORT} -u admin -p admin invoke "jboss.jca:service=ManagedConnectionPool,name=${pool}" testConnection)
  expPrint
  sleep 3
  #give time to repopulate pool before checking.  could add a handler here to alert if pool is not re-populated...
  MESSAGE=$(/usr/local/jboss/bin/twiddle.sh --server=${HOSTNAME}:${PORT} -u admin -p admin get "jboss.jca:service=ManagedConnectionPool,name=${pool}" ConnectionCount)
  expPrint
  MESSAGE="---------------------------------------------------------------------"
  expPrint
done

#---------------------------------------------------------------------------------------------------------------------------------------------------

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.