我想要使用 JConsole 监控我的 WebSphere 应用程序,但我不确定如何启用 JMX。
我想要使用 JConsole 监控我的 WebSphere 应用程序,但我不确定如何启用 JMX。
以下信息适用于Windows上的Websphere 6.1。
首先,连接到MBean服务器的魔法URL为:
service:jmx:iiop://<host>:<port>/jndi/JMXConnector
如果你使用了默认的Websphere安装,JNDI端口号很可能是2809,2810等,这取决于在一个系统上安装了多少个服务器以及你想要连接哪个特定的服务器。为了确保,请在启动Websphere时检查日志,因为它会输出类似以下的行:0000000a RMIConnectorC A ADMC0026I: The RMI Connector is available at port 2810
如果您不理解这行内容,请打开Websphere管理控制台并转到Application servers > server1 > Administration Services > JMX connectors,查看是否需要添加或更改配置。另一个重要的信息是,与服务器进行JMX时始终需要以下JAR文件:com.ibm.ws.admin.client_6.1.0.jar
你可以在Websphere的目录中找到这个JAR文件。无论你是通过编程访问Websphere上的MBeans,还是使用JConsole等工具,都要使用magic URL,并始终包含这个JAR文件。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。点击连接,然后您应该看到出现MBeans。
使用Sun JDK则完全不同。您需要一个额外的JAR文件,位于IBM JDK的lib中但不在Sun的lib中(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错误消息,因为它期望在端口2809上得到一些回应,而我的Websphere安装正在监听2810端口,尽管我在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的“概述”选项卡中发布信息。
进程ID:12568 主机:localhost 主类:<unknown> 参数:<none> JVM:IBM J9 VM(2.3,J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20100808(启用JIT) J9VM - 20100629_60535_lHdSMr JIT - 20100623_16197_r8 GC - 20100211_AA) Java:版本1.5.0,供应商IBM Corporation Java主目录:C:\Program Files\IBM\SDP\runtimes\base_v61\java\jre JVM标志:<none> 内存转储开关:禁用
Servers/Application servers/server1/Java y gestión de procesos/Definición de proceso/Máquina virtual Java/Argumentos de JVM genéricos
中添加相同的参数(抱歉,这是西班牙语,我也更喜欢英文版,但IBM的某个人一定认为我们以西班牙语为母语的人会更喜欢可怕的翻译)。希望这能帮助到某些人。 - jambriz@echo off
set HOST=<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%
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中找到。
我发现,要使用Sun JDK JConsole连接到WAS 6.1,除了com.ibm.ws.admin.client_6.1.0.jar
JAR文件外,在启动JConsole时还必须将以下3个JAR文件包含在引导类路径中:
ibmorbapi.jar
ibmorb.jar
ibmcfw.jar
这些文件可以在WebSphere的java\jre\lib目录中找到。
例如,在Windows上,如果你将上述四个JAR文件复制到你指定的目录中(在下面的示例中,我已将它们复制到C:\packages\was61-jmx),你可以使用以下批处理文件启动JConsole:
set JAVA_HOME=C:\Progra~1\Java\jdk1.5.0_20
set WAS6.1_JARS=C:\packages\was61-jmx
set BOOTJARS=%WAS6.1_JARS%\ibmorbapi.jar
set BOOTJARS=%BOOTJARS%;%WAS6.1_JARS%\ibmorb.jar
set BOOTJARS=%BOOTJARS%;%WAS6.1_JARS%\ibmcfw.jar
set CLASSPATH=%WAS6.1_JARS%\com.ibm.ws.admin.client_6.1.0.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\tools.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\jconsole.jar
%JAVA_HOME%\bin\jconsole -J-Xbootclasspath/p:%BOOTJARS% -J-Djava.class.path=%CLASSPATH%
这个对于Sun Jconsole 1.5和1.6版本的jdk对我有用。
#!/bin/bash
WAS_HOME=/opt/IBM/WebSphere/AppServer
# setup server-specific env variables
. $WAS_HOME/profiles/AppSrv01/bin/setupCmdLine.sh
HOST=localhost
PORT=9100
CLASSPATH=$JAVA_HOME/lib/jconsole.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.admin.client_8.5.0.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.ejb.thinclient_8.5.0.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.orb_8.5.0.jar
$JAVA_HOME/bin/jconsole \
-J-Djava.class.path=$CLASSPATH\
-J$CLIENTSAS\
-J$CLIENTSSL\
service:jmx:iiop://$HOST:$PORT/jndi/JMXConnector
来自http://malliktalksjava.in/2010/07/26/enable-jmx-remote-port-in-websphere/
在WebSphere中启用JMX远程端口的步骤:
Login to Admin console of the web sphere any profile(server), short cut will be available in start menu programs.
Enable the PMI Data and set all the statistics enabled.
Set JVM argument
-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote
in shows the servers list. click on the server you want.
-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote
in Generic Jvm Argument field
and save changes.To enable the JMX remote port open the following properties file and add the code that follows. In [WebSphere-directory]\AppServer\java\jre\lib\management\management.properties, add:
com.sun.management.jmxremote.port=9001
com.sun.management.jmxremote.ssl=false
com.sun.management.jmxremote.authenticate=false
Save the master data, stop the server, and start the server to load the changes.
您无法通过WAS控制台设置所需的系统属性,因为它不允许您指定空值。相反,您需要在'server.xml'底部插入以下内容:
<systemProperties xmi:id="Property_1315391623828" name="com.sun.management.jmxremote" value="" required="false"/> <systemProperties xmi:id="Property_1315327918140" name="com.sun.management.jmxremote.port" value="1235" required="false"/>
<systemProperties xmi:id="Property_1315327935281" name="com.sun.management.jmxremote.authenticate" value="false" required="false"/>
<systemProperties xmi:id="Property_1315327948046" name="com.sun.management.jmxremote.ssl" value="false" required="false"/>
<systemProperties xmi:id="Property_1315390852859" name="javax.management.builder.initial" value="" required="false"/>
您可以在WebSphere应用服务器的通信 -> 端口下找到正确的端口。与BOOTSTRAP_ADDRESS相关联的端口允许您进行连接。
jconsole.jar
添加到类路径中,同时也要添加 IBM jconsole。 - Flavioservice:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
对我起了作用。 - Joost