Как включить JMX в Websphere? - PullRequest
30 голосов
/ 10 декабря 2008

Я хотел бы использовать JConsole для мониторинга моего приложения Websphere, но я не уверен, как включить JMX.

Ответы [ 12 ]

0 голосов
/ 28 марта 2013

Хорошо. Есть два способа сделать это: один с использованием SOAP-коннектора один с использованием разъема RMi / IIOP.

Для SOAP вам необходимо выполнить настройку WAS, чтобы добавить новый PORT и другие аргументы JVM, описанные выше. Но все, что вы получаете, когда JConsole подключается к серверу, - это основные метрики JVM.

С RMI вы получаете все, что предоставляет WebSphere. Все MBeans! Единственное предостережение: если ваша WAS JVM находится за брандмауэром, вам нужно открыть порт, чтобы получить к нему доступ со своего рабочего стола. Но вы можете запустить это через X11 прямо с хоста сервера приложений!

Я использовал JDK7 на рабочем столе Windows XP для подключения к WAS 7.0 с включенной глобальной безопасностью. Я взял сценарий из ответа № 4 выше и использовал его в качестве отправной точки. Вот моя версия этого:

@echo off 
set HOST=<put hostname here>
set PORT=<put JVM's BOOTSTRAP_PORT here>

set WAS_HOME=C:\jconsole
set JAVA_HOME=C:\glassfish3\jdk7
set PROPS_DIR=C:\jconsole\properties

set CLIENTSAS=-Dcom.ibm.CORBA.ConfigURL=file:/%PROPS_DIR%/sas.client.props
set CLIENTSSL=-Dcom.ibm.SSL.ConfigURL=file:/%PROPS_DIR%/ssl.client.props
set PROVIDER=-Djava.naming.provider.url=corbaname:iiop:%HOST%:%PORT% 

set PROPS=
set PROPS=%PROPS% %CLIENTSAS% %CLIENTSSL% %PROVIDER%

set CLASSPATH=
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\com.ibm.ws.admin.client_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\com.ibm.ws.ejb.thinclient_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\com.ibm.ws.orb_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\jconsole.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\tools.jar

set URL=service:jmx:iiop://%HOST%:%PORT%/jndi/JMXConnector

@echo on

%JAVA_HOME%\bin\java -classpath %CLASSPATH% %PROPS% sun.tools.jconsole.JConsole %URL%

WAS_HOME - это просто каталог, в котором у меня есть те JAR-файлы IBM, которые я скачал из моих двоичных файлов WebSphere (из Solaris). Я также создал там два подкаталога: properties и keystore . В поддиректории свойств я поместил мои sas.client.props и ssl.client.props, также загруженные из рабочей ячейки WAS7 (я снял ее с DM). В подкаталог keystore я поместил файлы key.p12 и trust.p12, также загруженные из ячейки WAS7. Убедитесь, что у них есть правильные сертификаты! Если те из WAS / etc не работают - попробуйте те из $ {CONFIG_ROOT} / cell /. Измените ssl.client.props, чтобы убедиться, что путь к файлам p12 правильный!

Теперь, чтобы это работало, вы также должны загрузить следующие файлы из ваших двоичных файлов WAS:

WAS_BIN_HOME/java/jre/lib/endorsed

Поместите весь этот каталог в каталог jre / lib вашего SUN JDK. Это учитывает ошибки провайдера IBM JSSE2 и тому подобное. Кроме того, получите следующие три файла из WAS_BIN_HOME / java / jre / lib / security :

java.security
local_policy.jar
US_export_policy.jar

Я только что переписал те, что шли с JDK от SUN, с теми, что я взял у IBM.

Также, в sas.client.props обязательно введите идентификатор пользователя и пароль, аналогично тому, как вы это делаете в soap.client.props. Вы можете закодировать пароль таким же образом. Это необходимо для преодоления BasicAuth Global Security.

Я думаю, вот и все. Постскриптум Я не профессионал в Windows, поэтому, если есть более понятный способ сделать это - поделитесь им.

0 голосов
/ 04 октября 2011

вы можете попробовать следующее, он использует адаптер протокола SOAP. Я думаю, что это максимально возможная конфигурация.

#!/bin/sh 
current_dir=`dirname "$0"`

HOSTNAME=host.fqdn
PORT=2809

WAS_HOME=/opt/IBM/WebSphere/AppServer
WAS_PROFILE=$WAS_HOME/profiles/AppSrv01
WAS_RUNTIMES=$WAS_HOME/runtimes

WAS_LIB=$WAS_HOME/java/lib
JAVA_HOME=$WAS_HOME/java



CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/jconsole.jar:$WAS_RUNTIMES/com.ibm.ws.admin.client_7.0.0.jar:$WAS_LIB/ibmcfw.jar 

TARGET=service:jmx:soap://$HOSTNAME:$PORT/jndi/JMXConnector

CP="-J-Djava.class.path=$CLASSPATH"
SSL_SERVER_KEY="-J-Djavax.net.ssl.keyStore=$WAS_PROFILE/etc/DummyServerKeyFile.jks -J-Djavax.net.ssl.keyStorePassword=WebAS"
SSL_TRUST_STORE="-J-Djavax.net.ssl.trustStore=$WAS_PROFILE/etc/DummyServerTrustFile.jks -J-Djavax.net.ssl.trustStorePassword=WebAS"
SSL_OPTS="-J-Dcom.ibm.SSL.ConfigURL=file:$WAS_PROFILE/properties/ssl.client.props"
SOAP_OPTS="-J-Dcom.ibm.SOAP.ConfigURL=file:$WAS_PROFILE/properties/soap.client.props"
WAS_OPTS="-J-Dwas.install.root=$WAS_HOME -J-Djava.ext.dirs=$WAS_HOME/plugins:$WAS_HOME/lib:$WAS_HOME/plugins/com.ibm.ws.security.crypto_6.1.0:$WAS_HOME/lib:$JAVA_HOME/jre/lib/ext"

COMMAND="$JAVA_HOME/bin/jconsole $CP $SSL_SERVER_KEY $SSL_TRUST_STORE $SSL_OPTS $SOAP_OPTS $WAS_OPTS $TARGET"

exec $COMMAND

Кредиты моему коллеге Джероену за начальную версию скрипта с использованием IIOP (я пробую SOAP в надежде, что он будет работать с Hyperic)

...