JMXコマンドラインツール(jmxterm)
JMXでjavaプロセスにアクセスしたいけど、GUI環境無くてjconsole使えないってときに便利なOSSツール。
■公式
http://wiki.cyclopsgroup.org/jmxterm/
jarファイル形式のツールで対話式でMBeanにアクセスできる。
■起動
C:\>java -jar jmxterm-1.0-alpha-4-uber.jar Welcome to JMX terminal. Type "help" for available commands. $>
■コマンド一覧表示(helpコマンド)
$>help #following commands are available to use: about - Display about page bean - Display or set current selected MBean. beans - List available beans under a domain or all domains bye - Terminate console and exit close - Close current JMX connection domain - Display or set current selected domain. domains - List all available domain names exit - Terminate console and exit get - Get value of MBean attribute(s) help - Display available commands or usage of a command info - Display detail information about an MBean jvms - List all running local JVM processes open - Open JMX session or display current connection option - Set options for command session quit - Terminate console and exit run - Invoke an MBean operation set - Set value of an MBean attribute
■JMXポートにアクセス(openコマンド)
$>open localhost:9999 #Connection to localhost:9999 is opened
■ドメイン一覧表示(domainsコマンド)
$>domains #following domains are available Catalina JMImplementation Users com.sun.management java.lang java.nio java.util.logging org.apache.derby tomcat.jdbc
■MBean一覧表示(beansコマンド)※ここではCatalinaドメインに絞っている
$>beans -d Catalina #domain = Catalina: Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,j2eeType=Servlet,name=default Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,j2eeType=Servlet,name=dispatcherServlet Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,j2eeType=Servlet,name=jsp Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/,name=jsp,type=JspMonitor Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,j2eeType=Servlet,name=default Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,j2eeType=Servlet,name=jsp Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/docs,name=jsp,type=JspMonitor Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=CompressionFilter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Request Dumper Filter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Set Character Encoding Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Timing Filter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=ChatServlet Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=CompressionFilterTestServlet Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=CookieExample Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=HelloWorldExample Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=RequestHeaderExample Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=RequestInfoExample Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=RequestParamExample Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=ServletToJsp Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=SessionExample Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async0 Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async1 Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async2 Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=async3 Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=bytecounter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=default Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=jsp Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=numberwriter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,j2eeType=Servlet,name=stock Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/examples,name=jsp,type=JspMonitor Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Filter,name=CSRF Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Filter,name=SetCharacterEncoding Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=HTMLHostManager Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=HostManager Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=default Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,j2eeType=Servlet,name=jsp Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/host-manager,name=jsp,type=JspMonitor Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Filter,name=CSRF Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Filter,name=SetCharacterEncoding Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Filter,name=Tomcat WebSocket (JSR356) Filter Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=HTMLManager Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=JMXProxy Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=Manager Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=Status Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=default Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,j2eeType=Servlet,name=jsp Catalina:J2EEApplication=none,J2EEServer=none,WebModule=//localhost/manager,name=jsp,type=JspMonitor Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/ Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/docs Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/examples Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/host-manager Catalina:J2EEApplication=none,J2EEServer=none,j2eeType=WebModule,name=//localhost/manager Catalina:class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",resourcetype=Context,type=Resource Catalina:class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",type=DataSource Catalina:class=org.apache.catalina.UserDatabase,name="UserDatabase",resourcetype=Global,type=Resource Catalina:context=/,host=localhost,name=Cache,type=WebResourceRoot Catalina:context=/,host=localhost,name=NonLoginAuthenticator,type=Valve Catalina:context=/,host=localhost,name=StandardContextValve,type=Valve Catalina:context=/,host=localhost,type=Loader Catalina:context=/,host=localhost,type=Manager Catalina:context=/,host=localhost,type=NamingResources Catalina:context=/,host=localhost,type=WebResourceRoot Catalina:context=/,host=localhost,type=WebappClassLoader Catalina:context=/docs,host=localhost,name=Cache,type=WebResourceRoot Catalina:context=/docs,host=localhost,name=StandardContextValve,type=Valve Catalina:context=/docs,host=localhost,type=Loader Catalina:context=/docs,host=localhost,type=Manager Catalina:context=/docs,host=localhost,type=NamingResources Catalina:context=/docs,host=localhost,type=WebResourceRoot Catalina:context=/docs,host=localhost,type=WebappClassLoader Catalina:context=/examples,host=localhost,name=Cache,type=WebResourceRoot Catalina:context=/examples,host=localhost,name=FormAuthenticator,type=Valve Catalina:context=/examples,host=localhost,name=StandardContextValve,type=Valve Catalina:context=/examples,host=localhost,name=foo/bar/name2,resourcetype=Context,type=Environment Catalina:context=/examples,host=localhost,name=foo/name1,resourcetype=Context,type=Environment Catalina:context=/examples,host=localhost,name=foo/name4,resourcetype=Context,type=Environment Catalina:context=/examples,host=localhost,name=minExemptions,resourcetype=Context,type=Environment Catalina:context=/examples,host=localhost,name=name3,resourcetype=Context,type=Environment Catalina:context=/examples,host=localhost,type=Loader Catalina:context=/examples,host=localhost,type=Manager Catalina:context=/examples,host=localhost,type=NamingResources Catalina:context=/examples,host=localhost,type=WebResourceRoot Catalina:context=/examples,host=localhost,type=WebappClassLoader Catalina:context=/host-manager,host=localhost,name=BasicAuthenticator,type=Valve Catalina:context=/host-manager,host=localhost,name=Cache,type=WebResourceRoot Catalina:context=/host-manager,host=localhost,name=StandardContextValve,type=Valve Catalina:context=/host-manager,host=localhost,type=Loader Catalina:context=/host-manager,host=localhost,type=Manager Catalina:context=/host-manager,host=localhost,type=NamingResources Catalina:context=/host-manager,host=localhost,type=WebResourceRoot Catalina:context=/host-manager,host=localhost,type=WebappClassLoader Catalina:context=/manager,host=localhost,name=BasicAuthenticator,type=Valve Catalina:context=/manager,host=localhost,name=Cache,type=WebResourceRoot Catalina:context=/manager,host=localhost,name=StandardContextValve,type=Valve Catalina:context=/manager,host=localhost,type=Loader Catalina:context=/manager,host=localhost,type=Manager Catalina:context=/manager,host=localhost,type=NamingResources Catalina:context=/manager,host=localhost,type=WebResourceRoot Catalina:context=/manager,host=localhost,type=WebappClassLoader Catalina:host=localhost,name=AccessLogValve,type=Valve Catalina:host=localhost,name=ErrorReportValve,type=Valve Catalina:host=localhost,name=StandardHostValve,type=Valve Catalina:host=localhost,type=Deployer Catalina:host=localhost,type=Host Catalina:name="ajp-apr-8009",type=GlobalRequestProcessor Catalina:name="ajp-apr-8009",type=ThreadPool Catalina:name="http-apr-8080",type=GlobalRequestProcessor Catalina:name="http-apr-8080",type=ThreadPool Catalina:name=HttpRequest1,type=RequestProcessor,worker="http-apr-8080" Catalina:name=StandardEngineValve,type=Valve Catalina:port=8009,type=Connector Catalina:port=8009,type=ProtocolHandler Catalina:port=8080,type=Connector Catalina:port=8080,type=ProtocolHandler Catalina:realmPath=/realm0,type=Realm Catalina:realmPath=/realm0/realm0,type=Realm Catalina:type=Engine Catalina:type=MBeanFactory Catalina:type=Mapper Catalina:type=NamingResources Catalina:type=Server Catalina:type=Service Catalina:type=StringCache
■MBeanの情報を表示(infoコマンド)
$>info -b class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",resourcetype=Context,type=Reso urce -d Catalina #mbean = Catalina:class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",resourcetype=Context,t ype=Resource #class name = org.apache.catalina.mbeans.ContextResourceMBean # attributes %0 - auth (java.lang.String, rw) %1 - description (java.lang.String, rw) %2 - modelerType (java.lang.String, r) %3 - name (java.lang.String, rw) %4 - scope (java.lang.String, rw) %5 - type (java.lang.String, rw) #there's no operations #there's no notifications $>info -b class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",type=DataSource -d Catalina #mbean = Catalina:class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",type=DataSource #class name = org.apache.tomcat.util.modeler.BaseModelMBean # attributes %0 - abandonWhenPercentageFull (java.lang.Integer, r) %1 - accessToUnderlyingConnectionAllowed (java.lang.Boolean, r) %2 - active (java.lang.Integer, r) %3 - alternateUsernameAllowed (java.lang.Boolean, r) %4 - className (java.lang.String, r) %5 - commitOnReturn (java.lang.Boolean, r) %6 - connectionProperties (java.lang.String, r) %7 - dataSource (javax.sql.DataSource, r) %8 - dataSourceJNDI (java.lang.String, r) %9 - defaultAutoCommit (java.lang.Boolean, r) %10 - defaultCatalog (java.lang.String, r) %11 - defaultReadOnly (java.lang.Boolean, r) %12 - defaultTransactionIsolation (java.lang.Integer, r) %13 - driverClassName (java.lang.String, r) %14 - fairQueue (java.lang.Boolean, r) %15 - idle (java.lang.Integer, r) %16 - ignoreExceptionOnPreLoad (java.lang.Boolean, r) %17 - initSQL (java.lang.String, r) %18 - initialSize (java.lang.Integer, r) %19 - jdbcInterceptors (java.lang.String, r) %20 - jmxEnabled (java.lang.Boolean, r) %21 - logAbandoned (java.lang.Boolean, r) %22 - logValidationErrors (java.lang.Boolean, r) %23 - loginTimeout (java.lang.Integer, r) %24 - maxActive (java.lang.Integer, r) %25 - maxAge (java.lang.Long, r) %26 - maxIdle (java.lang.Integer, r) %27 - maxWait (java.lang.Integer, r) %28 - minEvictableIdleTimeMillis (java.lang.Integer, r) %29 - minIdle (java.lang.Integer, r) %30 - modelerType (java.lang.String, r) %31 - name (java.lang.String, r) %32 - numActive (java.lang.Integer, r) %33 - numIdle (java.lang.Integer, r) %34 - numTestsPerEvictionRun (java.lang.Integer, r) %35 - password (java.lang.String, r) %36 - poolSweeperEnabled (java.lang.Boolean, r) %37 - propagateInterruptState (java.lang.Boolean, r) %38 - removeAbandoned (java.lang.Boolean, r) %39 - removeAbandonedTimeout (java.lang.Integer, r) %40 - rollbackOnReturn (java.lang.Boolean, r) %41 - size (java.lang.Integer, r) %42 - suspectTimeout (java.lang.Integer, r) %43 - testOnBorrow (java.lang.Boolean, r) %44 - testOnConnect (java.lang.Boolean, r) %45 - testOnReturn (java.lang.Boolean, r) %46 - testWhileIdle (java.lang.Boolean, r) %47 - timeBetweenEvictionRunsMillis (java.lang.Integer, r) %48 - url (java.lang.String, r) %49 - useDisposableConnectionFacade (java.lang.Boolean, r) %50 - useEquals (java.lang.Boolean, r) %51 - useLock (java.lang.Boolean, r) %52 - username (java.lang.String, r) %53 - validationInterval (java.lang.Long, r) %54 - validationQuery (java.lang.String, r) %55 - validationQueryTimeout (java.lang.Integer, r) %56 - validatorClassName (java.lang.String, r) %57 - waitCount (java.lang.Integer, r) # operations %0 - void checkAbandoned() %1 - void checkIdle() %2 - void purge() %3 - void purgeOnReturn() %4 - void testIdle() #there's no notifications
■MBeanから属性一覧を取得(getコマンド)
$>get -b class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",type=DataSource -d Catalina * #mbean = Catalina:class=javax.sql.DataSource,context=/,host=localhost,name="jdbc/derby",type=DataSource: connectionProperties = null; propagateInterruptState = false; useDisposableConnectionFacade = true; defaultCatalog = null; validationInterval = 30000; jmxEnabled = true; ignoreExceptionOnPreLoad = false; logAbandoned = false; commitOnReturn = false; password = Password not available as DataSource/JMX operation.; maxIdle = 0; testWhileIdle = false; removeAbandoned = false; minIdle = 0; abandonWhenPercentageFull = 0; defaultReadOnly = null; maxWait = 0; active = 0; size = 0; logValidationErrors = false; driverClassName = org.apache.derby.jdbc.EmbeddedDriver; name = Tomcat Connection Pool[1-633127]; dataSource = null; poolSweeperEnabled = true; validationQueryTimeout = -1; initSQL = null; numActive = 0; modelerType = org.apache.tomcat.jdbc.pool.DataSource; validationQuery = null; rollbackOnReturn = false; className = org.apache.tomcat.jdbc.pool.DataSource; numIdle = 0; alternateUsernameAllowed = false; dataSourceJNDI = null; validatorClassName = null; suspectTimeout = 0; useEquals = true; removeAbandonedTimeout = 60; defaultAutoCommit = null; loginTimeout = 0; testOnConnect = false; jdbcInterceptors = StatementCache(prepared=true,max=50); idle = 0; initialSize = 0; defaultTransactionIsolation = -1; url = jdbc:derby:H:/Derby/JpaSample;create=true; numTestsPerEvictionRun = 0; testOnBorrow = false; fairQueue = true; timeBetweenEvictionRunsMillis = 5000; minEvictableIdleTimeMillis = 60000; accessToUnderlyingConnectionAllowed = true; maxAge = 0; testOnReturn = false; useLock = false; waitCount = 0; maxActive = 20; username = null; $>exit #bye
いい感じ。