2011-05-11 14 views
6

Estoy ejecutando varios procesos de Java en una máquina profesional de Windows XP. Cuando intento conectarme a estos procesos a través de una JConsole local, los procesos aparecen atenuados.Los procesos locales de Java se atenúan cuando se intenta conectar a través de JMX

Sin embargo, puedo ejecutar los mismos procesos en otra máquina y conectarme a través de una JConsole local en esa máquina.

Ambas máquinas ejecutan la versión 1.6 de java para los procesos y jconsole.

¿Alguna idea de por qué estos procesos están atenuados?

+0

¿ambas máquinas funcionan con la misma versión de java 1.6? Recuerdo vagamente que hay algunos errores relacionados con esto en algunos de los lanzamientos de jdk 1.6. – jtahlborn

+0

Ejecuté uno de los procesos y jconsole utilizando exactamente el mismo JDK, desde ese mismo directorio. Todavía ese proceso muestra gris. – richs

+0

a la derecha, estoy preguntando si las 2 cajas diferentes están usando la misma versión de jdk. – jtahlborn

Respuesta

2

si los procesos se están ejecutando como un usuario diferente (por ejemplo, si los inicia como servicios), entonces no podrá conectarse a ellos. Además, si se están ejecutando bajo una JVM anterior, probablemente tampoco podrá hablar con ellos.

En algunos casos, el mecanismo de comunicación jmx local utiliza el sistema de archivos local y puede tener problemas si los permisos no están definidos correctamente. ¿Es posible que esté ejecutando alguno de estos procesos en sistemas de archivos en red (nfs, samba)?

2

De http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html:

Aplicaciones que no se puede fijar, con el agente de administración desactivado. Estas incluyen aplicaciones iniciadas en una plataforma J2SE 1.4.2 o iniciadas en una plataforma J2SE 5.0 sin las opciones -Dcom.sun.management.jmxremote o com.sun.management.jmxremote.port. Estas aplicaciones aparecen atenuadas en la tabla y JConsole no se puede conectar a ellas. En el cuadro de diálogo de conexión de ejemplo que se muestra en la Figura 3-1, la aplicación Anagramas se inició con una máquina virtual J2SE 5.0 platform sin ninguna de las propiedades de gestión para habilitar el agente JMX, y por lo tanto aparece en gris y no se puede seleccionar.

Figure 3-1 Creating a Connection to a Local Process http://download.oracle.com/javase/6/docs/technotes/guides/management/figures/connect.gif

A pesar de lo que se escribe en la documentación, más probable es que su proceso se ejecuta con un usuario diferente. Puede ejecutar jconsole como administrador e intente luego.

+0

Abrí el administrador de tareas de Windows y jconsole y mis procesos de Java son todos para el mismo usuario. – richs

+0

Hola Tomasz: ejecutar jconsole como administrador no resuelve el problema (aunque creo que sí). ¿Te has encontrado con esto? Interesantemente, ejecutar Process Explorer como administrador le permite ver la información del proceso para este proceso Java en particular. La solución alternativa es usar 'com.sun.management.jmxremote.port' y conectarse mediante" Remote Process "pero no es una solución óptima para mí, ya que tengo muchos procesos en ejecución y la asignación de puertos únicos para ellos es problemática. – sourcedelica

16

estoy luchando con este problema en este momento y me encontré con un trabajo en torno a:

Puede cambiar directorio temporal del usuario local a algo que puede definitivamente de acceso (por ejemplo, D: \ temp). Asegúrese de hacer esto para el proceso que está tratando de supervisar y el proceso de jconsole.

Otra cosa que aparentemente puede causar problemas son los nombres de usuario con letras mayúsculas en ellos. El directorio siempre se creará con todas las letras minúsculas, pero simplemente cambiarle el nombre a exactamente cómo se muestra en el Administrador de tareas hizo desaparecer todos los problemas: http://planeofthought.com/wp/?p=75

+1

Gracias RegRog. Su enlace de su edición hizo el truco +1. (Todavía no me gusta tener que decirles a mis usuarios que cambien el nombre de la carpeta). Cambiar el nombre del directorio hsperfdata_ a hsperfdata_ funcionó para mí. – km1

+0

Este golpeó el clavo en la cabeza para mí. También tuve problemas para cambiar el nombre de este directorio, pero pude utilizar la herramienta Sysinternals Process Explorer para determinar que mi copia de SmartSVN tenía el directorio bloqueado. Luego apagué SmartSVN, renombré el directorio y todo estuvo bien. El directorio se volvió a crear en el caso correcto. –

+0

¡Por difícil que sea de creer, esto realmente funcionó! Es decir. estableciendo TEMP y TMP ambos en c: \ temp. Increíble. ¡Gracias! – fool4jesus

1

Esto es lo que funcionó para mí. Cambié mis variables de entorno %TEMP% y %TMP% para que apuntaran a una carpeta que creé en mi ubicación %HOME% (como C:\Users\[YOUR_NAME]\Temp). Una vez que hice esto, todos los problemas desaparecieron.

2

Supongamos que su nombre de usuario de Windows que utiliza para iniciar su aplicación Java que se ve en el administrador de tareas es YOUR_USER_NAME. Compruebe una carpeta cuyo nombre parezca hsperfdata_XXXXX (XXXXX debería ser su nombre de usuario) en su carpeta temporal y asegúrese de que YOUR_USER_NAME y XXXXX sean exactamente iguales (tenga cuidado con las mayúsculas y minúsculas).

0

Cambia tus rutas TEMP en variables de entorno a algo así como D: \ temp, ya que podría ser un problema de permiso. Se corrigió este problema para mí

Cuestiones relacionadas