我想使用JConsole来监视我的Websphere应用程序,但我不知道如何启用JMX.
以下信息适用于Windows上的Websphere 6.1.
首先,连接到MBean服务器的神奇URL是:
service:jmx:iiop://: /jndi/JMXConnector
如果您有默认的Websphere安装,则JNDI端口号可能是2809,2810,...取决于一个系统上安装的服务器数量以及您要连接的特定服务器.可以肯定的是,在启动Websphere时,请检查日志,因为它会转储一行
0000000a RMIConnectorC A ADMC0026I: The RMI Connector is available at port 2810
如果您没有获得此行,请打开Websphere管理控制台并转到
应用程序服务器> server1>管理服务> JMX连接器
查看是否需要添加或更改配置.
第二个重要信息是在与服务器进行JMX时总是需要以下JAR:
com.ibm.ws.admin.client_6.1.0.jar
您可以在runtimes
Websphere目录中找到此JAR .无论您做什么,无论是以编程方式访问Websphere上的MBean,还是使用JConsole等,都使用魔术URL并始终包含此JAR.
对于本答案的其余部分,假设Websphere安装在D:\ prog\was61中.
要运行JConsole,请键入以下内容:
D:\prog\was61\java\bin>jconsole -J-Djava.class.path=d:\prog\was61\java\lib\tools.jar;D:\prog\was61\runtimes\com.ibm.ws.admin.client_6.1.0.jar
然后转到"高级"选项卡并输入魔术JMX URL.按连接,您应该看到MBean出现.
使用Sun JDK是一个完全不同的问题.您需要一个额外的JAR,它位于IBM JDK的lib中,而不是Sun的(ibmorb.jar),并且以下命令可能对您有用:
C:\Program Files\Java\jdk1.5.0_11\bin>jconsole -J-Djava.class.path="c:\Program Files\Java\jdk1.5.0_11\lib\jconsole.jar";"c:\Program Files\Java\jdk1.5.0_11\lib\tools.jar";D:\prog\was61\runtimes\com.ibm.ws.admin.client_6.1.0.jar;D:\prog\was61\java\jre\lib\ibmorb.jar
我说也许,因为它对我不起作用.我得到了一个很好的jndiUnavailCommErr错误消息,因为当我的Websphere安装正在监听2810时,它期望端口2809上的某些内容,尽管我在JMX URL中正确指定了端口2810.但是,如果您调整路径以指向Sun JDK,它可能适合您.这是我使用Sun的JDK连接到Websphere的最接近的.
最后说明:我尝试了基于RMI的解决方案,还有一个SOAP连接器可用,但还没有尝试过.
和J2EE,Websphere一样:好运,你需要它.
很简单.只需使用以下JMX参数启动Websphere:
-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1099
然后启动JConsole或VisualVM并连接到localhost:1099
由于我不允许发布证明屏幕截图,我发布了visualvm"概述选项卡"中的信息.
PID: 12568 Host: localhost Main class:Arguments: JVM: IBM J9 VM (2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20100808 (JIT enabled) J9VM - 20100629_60535_lHdSMr JIT - 20100623_16197_r8 GC - 20100211_AA) Java: version 1.5.0, vendor IBM Corporation Java Home: C:\Program Files\IBM\SDP\runtimes\base_v61\java\jre JVM Flags: Heap dump on OOME: disabled
也许它有点偏离主题,但我找到了一种从JConsole连接到WAS 7.0 JMX服务器的方法.不需要服务器设置,没有AppClient,只有一些JAR和一些小客户端设置.
使用以下脚本
@echo off set HOST=set PORT=2809 set WAS_HOME=D:/Programy/IBM/WebSphere/AppServer set THIS_DIR=E:/Home/Bogus/Pulpit set CLIENTSAS=-Dcom.ibm.CORBA.ConfigURL=file:/%THIS_DIR%/sas.client.props set PROVIDER=-Djava.naming.provider.url=corbaname:iiop:%HOST%:%PORT% set PROPS= set PROPS=%PROPS% %CLIENTSAS% set PROPS=%PROPS% %PROVIDER% set CLASSPATH= set CLASSPATH=%CLASSPATH%;%WAS_HOME%\java\lib\tools.jar set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.admin.client_7.0.0.jar set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.ejb.thinclient_7.0.0.jar set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.orb_7.0.0.jar set CLASSPATH=%CLASSPATH%;%WAS_HOME%\java\lib\jconsole.jar set URL=service:jmx:iiop://%HOST%:%PORT%/jndi/JMXConnector @echo on :: %WAS_HOME%\java\bin\ java -classpath %CLASSPATH% %PROPS% sun.tools.jconsole.JConsole %URL%
如果目标服务器已禁用管理安全性,请注释掉CLIENTSAS和PROVIDER行.
如果启用了安全性,则还需要将sas.client.props文件放在THIS_DIR目录中.模板文件可以在WAS_profile\properties目录下找到.你将不得不做一些设置.这是我的sas.client.props的摘录
com.ibm.CORBA.securityEnabled=true com.ibm.CORBA.authenticationTarget=BasicAuth com.ibm.CORBA.authenticationRetryEnabled=true com.ibm.CORBA.authenticationRetryCount=3 com.ibm.CORBA.validateBasicAuth=true com.ibm.CORBA.securityServerHost= com.ibm.CORBA.securityServerPort= com.ibm.CORBA.loginTimeout=300 com.ibm.CORBA.loginSource=prompt com.ibm.CORBA.loginUserid= com.ibm.CORBA.loginPassword= com.ibm.CORBA.krb5ConfigFile= com.ibm.CORBA.krb5CcacheFile= com.ibm.CSI.performStateful=true com.ibm.CSI.performClientAuthenticationRequired=false com.ibm.CSI.performClientAuthenticationSupported=true # SET ALL THE FOLLOWING VALUES TO FALSE com.ibm.CSI.performTLClientAuthenticationRequired=false com.ibm.CSI.performTLClientAuthenticationSupported=false com.ibm.CSI.performTransportAssocSSLTLSRequired=false com.ibm.CSI.performTransportAssocSSLTLSSupported=false com.ibm.CSI.performMessageIntegrityRequired=false com.ibm.CSI.performMessageIntegritySupported=false com.ibm.CSI.performMessageConfidentialityRequired=false com.ibm.CSI.performMessageConfidentialitySupported=false # COMMENT THIS OUT #com.ibm.ssl.alias=DefaultSSLSettings com.ibm.CORBA.requestTimeout=180
好 :)
连接后,将出现登录弹出窗口.输入您的管理员用户和密码(JConsole中的连接对话框中不需要用户和密码)
您可以从IBM JDK或Sun JDK运行JConsole.对于IBM,不需要其他设置.但是,对于Sun,您可能需要将orb.properties文件放在主目录中.该文件可以在com.ibm.ws.ejb.thinclient_7.0.0.jar中找到.
我无法让这个工作.我得到的只是
与username @ service:jmx:iiop // localhost:2809/jndi/JMXConnector的连接未成功.你想再试一次吗?
然而,我做了以下工作:
将"-Djavax.management.builder.initial = -Dcom.sun.management.jmxremote"添加到通用JVM参数中.
将这些行添加到WebSphere/AppServer/java/jre/lib/management/management.properties
com.sun.management.jmxremote.port=9999 com.sun.management.jmxremote.authenticate=false com.sun.management.jmxremote.ssl=false
但没有一个有用的mbeans出现..?