2008-12-10 31 views

Respuesta

32

La siguiente información es para Websphere 6.1 en Windows.

En primer lugar, la URL magia para conectarse al servidor MBean es:

service:jmx:iiop://<host>:<port>/jndi/JMXConnector 

Si usted tiene una instalación de WebSphere defecto, el número de puerto JNDI probable que haya 2809, 2810, ... en función de cuántos servidores hay instalados en un sistema y el específico al que desea conectarse. Para estar seguro, al iniciar Websphere, comprobar los registros, ya que volcará una línea como

0000000a RMIConnectorC A ADMC0026I: The RMI Connector is available at port 2810 

Si usted no recibe esta línea, abra la consola de administración de Websphere e ir a

Aplicación Servidores> server1> Administración de Servicios> JMX conectores

para ver si es necesario agregar o cambiar la configuración.

segundo dato importante es que el siguiente JAR es siempre necesario cuando se hace JMX con el servidor:

com.ibm.ws.admin.client_6.1.0.jar 

Usted puede encontrar esta JAR en el directorio runtimes de Websphere. Hagas lo que hagas, ya sea accediendo mediante programación a MBeans en Websphere, o usando JConsole, y demás, utiliza la URL mágica y siempre incluye este JAR.

Para el resto de esta respuesta, suponga que Websphere está instalado en D: \ prog \ was61.

Para ejecutar JConsole, escriba lo siguiente:

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 

y luego ir a la pestaña "Avanzado" y escriba la dirección URL de JMX magia. Presione conectar y debería ver aparecer los MBeans.

El uso de Sun JDK es un asunto completamente diferente. Es necesario un frasco extra que se encuentra en el lib de la IBM JDK pero no de Sun (ibmorb.jar), y tal vez el siguiente comando puede funcionar para usted:

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 

digo tal vez, ya que no funcionaba para mi. Obtuve un buen mensaje de error jndiUnavailCommErr, ya que esperaba algo en el puerto 2809 mientras la instalación de Websphere está escuchando en 2810, aunque especifiqué correctamente el puerto 2810 en la URL JMX. Pero, si adapta las rutas para apuntar a su Sun JDK, podría funcionar para usted. Es lo más cerca que he estado de conectarme a Websphere usando Sun's JDK.

Nota final: Intenté una solución basada en RMI, también hay un conector SOAP disponible pero no lo he probado.

Como siempre con J2EE, Websphere y demás: buena suerte, la necesitarás.

+1

+1 funcionó como un amuleto. Lamento el dolor que debiste haber sufrido :) –

+0

+1 por "buena suerte, lo necesitarás" ... Por cierto, tengo el árbol con el objeto pero no puedo ver las propiedades debido a ADMN0022E (derechos perdidos o algo así) ¿Alguna idea? – poussma

+0

Es posible que deba agregar 'jconsole.jar' a classpath también con IBM jconsole. – Flavio

1

mira el siguiente simple method to connect jconsole to Websphere 6.1

Lo hace trabajos para mí (Solaris, fue de 6,1, Sun JVM), también funciona con Visual VM

chat!

+0

¿Aún puede acceder a los beans de WebSphere JMX con esta solución para obtener información sobre servlets y grupos de conexiones? – eljenso

+0

el enlace no funciona –

+0

El enlace está aquí y el método funciona: http://www.ecovations.de/blog/?p=99. No se puede conectar desde una consola remota aunque ... no estoy seguro de por qué. Consola local solamente. – djangofan

5

No pude hacer que esto funcione. Todo lo que obtuve fue

La conexión al nombre de usuario @ servicio: jmx: iiop // localhost: 2809/jndi/JMXConnector no funcionó. ¿Le gustaría volver a intentarlo?

Yo sin embargo hacerlo funcionar de la siguiente manera:

  1. Agregar "-Djavax.management.builder.initial = -Dcom.sun.management.jmxremote" al argumento de JVM genéricos.
  2. Añadir estas líneas para WebSphere/AppServer/java/jre// gestión/lib management.properties
 
com.sun.management.jmxremote.port=9999 
com.sun.management.jmxremote.authenticate=false 
com.sun.management.jmxremote.ssl=false 

Pero ninguno de los mbeans Utiles apareces ..?

+0

+1 Esto funcionó perfecto para mí cuando lo usé para una aplicación web. –

+0

@Tommy - ¿Obtuviste las cosas "interesantes" de alguna manera? Quiero decir, sin todos los frascos adicionales/IIOP mumbo-jumbo ... – Chris

+0

@Chris No, nunca funcionó como yo quería. Terminó usando el servlet PMI que viene con WAS y luego analiza el xml y lo grafica con Munin. Funciona bien – Tommy

4

he encontrado que con el fin de conectarse a fue de 6,1 utilizando Sun JDK JConsole, además del archivo com.ibm.ws.admin.client_6.1.0.jar JAR, tuve que también incluyen los siguientes 3 frascos en la ruta de clase de arranque cuando se JConsole: -

ibmorbapi.jar 
ibmorb.jar 
ibmcfw.jar 

Se pueden encontrar en el directorio java \ jre \ lib de websphere.

Por ejemplo en Windows, si copia los cuatro JAR enumerados anteriormente en un directorio de su elección (los he copiado en C: \ packages \ was61-jmx en el ejemplo a continuación), puede usar un lote presentar como el siguiente para comenzar 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% 

Esto funcionó para mí para JDK 1.5 y 1.6 versiones del Sol jconsole.

6

Tal vez es un poco offtopic, pero he encontrado una manera de conectarse al servidor WAS 7.0 JMX de JConsole. No se requiere configuración de servidor, no hay AppClient, solo algunos JAR y una pequeña configuración de cliente.

utilizar el siguiente script

@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% 

Si el servidor de destino ha deshabilitado la seguridad administrativa, comente CLIENTSAS y líneas PROVEEDOR.

Si la seguridad está habilitada, también necesitará el archivo sas.client.props para ubicarlo en el directorio THIS_DIR. El archivo de plantilla se puede encontrar en el directorio WAS_profile \ properties. Tendrás que hacer una pequeña configuración. He aquí un extracto de mis 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 

OK :)

Después de conectar, aparecerá la ventana emergente de inicio de sesión.Escriba su usuario administrador y contraseña (el usuario & pw no es necesario en el cuadro de diálogo de conexión en JConsole)

Puede ejecutar JConsole desde IBM JDK o Sun JDK. Para IBM, no se requiere ninguna otra configuración. Sin embargo, para Sun es posible que deba colocar el archivo orb.properties en su directorio de inicio. El archivo se puede encontrar en com.ibm.ws.ejb.thinclient_7.0.0.jar.

+0

¡Gracias, trabajado como un encanto! –

1

Puede encontrar el puerto correcto para conectarse en WebSphere Application Server en Comunicaciones -> Puertos. El puerto asociado con BOOTSTRAP_ADDRESS le permite conectarse.

9

Es simple. Simplemente comienza a Websphere con los siguientes parámetros JMX:

-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 

A continuación, iniciar JConsole o VisualVM y conectarse a localhost: 1099

ya que no estoy autorizado para publicar una captura de pantalla a prueba puedo enviar la información de la VisualVM "Información general lengüeta".

 
PID: 12568 
Host: localhost 
Main class: <unknown> 
Arguments: <none> 
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: <none> 
Heap dump on OOME: disabled 
+0

este tipo de trabajo para mí, tuve que agregar estos mismos parámetros en la consola de websphere en 'Servidores/Servidores de aplicaciones/servidor1/Java y gestión de procesos/Definición de proceso/Máquina virtual Java/Argumentos de JVM genéricos' está en español, prefiero la versión en inglés también, pero alguien en ibm debe haber pensado que los hablantes nativos de español preferiríamos una traducción deshonesta). Espero que esto ayude a alguien de todos modos – jambriz

+0

En realidad, esto no funciona. Lo intenté agregando esos parámetros a la opción D_ARGS en el archivo startServer.sh. Luego, se conecta a 1099 y solo muestra datos para el proceso de administración de la esfera web y no muestra información para el proceso de solicitud contenido. – djangofan

+0

Tiene sentido que no funcionaría porque WebSphere se ejecuta en un IBM JDK y, por lo tanto, los paquetes en com.sun. * No existen, ¿no? – djangofan

2

No puede establecer las propiedades de sistema requeridas a través de la consola WAS, porque no le permite especificar valores vacíos. En su lugar, usted tiene que insertar el siguiente en la parte inferior de la '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"/> 
0

puede probar la siguiente, se utiliza el adaptador de protocolo SOAP. Creo que es una configuración lo más esbelta posible.

#!/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 

Créditos a mi colega Jeroen para la versión inicial de la secuencia de comandos mediante IIOP (Estoy tratando de SOAP con la esperanza de que va a trabajar con Hyperic)

3

también luché durante unas horas para llegar esto para trabajar y encontré la solución. La cuestión clave aquí es SSL: el cliente debe usar las claves adecuadas para establecer una conexión SSL con el servidor. Esto implica señalar a la ubicación correcta del almacén de confianza y la contraseña del almacén de confianza como se describe en here. La mejor manera de configurar el entorno es llamar a la setupCmdLine.sh (en Windoze es setupCmdLine.bat) para el servidor correspondiente, y luego invocar jconsole así:

#!/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 
0

Ok. Hay dos maneras de hacer esto: uno usando el conector SOAP uno usando el conector RMi/IIOP.

Para SOAP, necesita realizar la configuración de WAS para agregar un nuevo puerto y otros argumentos de JVM descritos anteriormente. Pero todo lo que obtienes una vez que JConsole se conecta al servidor son métricas básicas de JVM.

Con RMI, obtiene todo lo que expone WebSphere. Todos los MBeans! La única advertencia es: si su WAS JVM está detrás de un firewall, deberá abrir un puerto para acceder desde su escritorio. ¡Pero puede ejecutar esto a través de X11 directamente desde el host del servidor de la aplicación!

Utilicé JDK7 en mi escritorio con Windows XP para conectarme a WAS 7.0 con seguridad global habilitada. Tomé un script de la respuesta n. ° 4 anterior y lo usé como punto de partida. aquí está mi versión de la misma:

@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% 

El INICIO_WAS es sólo un directorio donde tengo esos frascos de IBM que he descargado de mis WebSphere binarios (fuera de Solaris).También creé dos subdivisiones debajo: propiedades y keystore. En el subdirectorio de propiedades puse mis sas.client.props y ssl.client.props, también descargados de una celda WAS7 en funcionamiento (lo saqué de un DM). En el subdirectorio keystore pongo los archivos key.p12 y trust.p12, también descargados de una celda WAS7. ¡Asegúrate de que tengan los certs correctos! Si los de WAS/etc no funcionan, pruebe los de $ {CONFIG_ROOT}/cells /. ¡Modifique ssl.client.props para asegurarse de que la ruta a los archivos p12 es correcta!

Ahora, con el fin para que esto funcione también hay que descargar el siguiente desde los binarios fue:

WAS_BIN_HOME/java/jre/lib/endorsed 

poner este directorio completo bajo JRE del JDK de Sun/lib directorio. Esto se ocupa de los errores del Proveedor IBM JSSE2 y demás. Además, conseguir los siguientes tres archivos de WAS_BIN_HOME/java/jre/lib/security:

java.security 
local_policy.jar 
US_export_policy.jar 

acabo sobreescribí de los suministrados con el JDK de Sun con los tomé de IBM.

Además, en sas.client.props asegúrese de ingresar la identificación de usuario y la contraseña, de forma similar a cómo lo hace en soap.client.props. Puede codificar la contraseña de la misma manera. Esto es necesario para superar BasicAuth de Global Security.

Creo que eso es todo. P.S. No soy un profesional de Windows, así que si hay una manera más clara de hacerlo, por favor compártelo.

1

de http://malliktalksjava.in/2010/07/26/enable-jmx-remote-port-in-websphere/

  1. de sesión en la Consola de administración de la esfera web de cualquier perfil (servidor), corte corto estará disponible en los programas del menú de inicio.

    • implementar la aplicación PerfServletApp.ear si no desplegado ya.
    • Comprobar si PerfServletApp.ear se despliega:
      • Exapnd Aplicaciones +> Tipos de aplicación Aplicaciones +>WebSphere enterpise
      • Si no es así, haga clic en Nueva aplicación .
    • Examinar en WebSphere directorio ->AppServer ->installableApps.
    • (seguir los pasos.)
  2. se habiliten los datos PMI y configurar todas las estadísticas habilitados.

    • En el panel izquierdo (parte inferior), vaya a Supervisión y ajuste +>Performance Monitoring Infrastructure (PMI)
    • En ficha Configuración, active la PMI.
    • En esta pestaña Configuración y la ficha Tiempo de ejecución , establecer Todas las estadísticas. Luego Guardar cambios.
  3. Conjunto JVM argumento

    • En Severs +>Tipos de servidores +>WebSphere Application Servers, a continuación, ->[nombre-servidor] +>definición de procesos ->Java Virtual Machine
    • Establezca el argumento genérico jvm para incluir

      -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote

    en muestra la lista de servidores. haga clic en el servidor que desea.

    • En el panel derecho -> Servidor de Infraestructura ->Java y gestión de procesos clic en Proceso definición, de nuevo en Propiedades adicionales de configuración pestaña clic en Java Virtual Machine. poner el -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote en Genérico Jvm Argumento campo y guardar cambios.
  4. Para habilitar el puerto remoto JMX abra el siguiente archivo de propiedades y agregue el siguiente código. En [WebSphere-directorio] \ AppServer \ java \ jre \ lib \ \ management.properties gestión, añaden:

    com.sun.management.jmxremote.port=9001 
    com.sun.management.jmxremote.ssl=false 
    com.sun.management.jmxremote.authenticate=false 
    
  5. Guardar los datos maestros, detenga el servidor, e iniciar el servidor para cargar el cambios.