2011-05-11 3 views
6

Windows XP Professional 컴퓨터에서 여러 Java 프로세스를 실행 중입니다. 로컬 JConsole을 통해 이러한 프로세스에 연결하려고하면 프로세스가 회색으로 표시됩니다.JMX를 통해 연결할 때 로컬 java 프로세스가 회색으로 표시됩니다.

그러나 다른 컴퓨터에서 동일한 프로세스를 실행하고 해당 컴퓨터의 로컬 JConsole을 통해 연결할 수 있습니다.

두 시스템 모두 프로세스와 jconsole에 대해 Java 1.6 버전을 실행 중입니다.

이러한 프로세스가 회색으로 표시되는 이유는 무엇입니까?

+0

모두 동일한 버전의 Java 1.6을 실행하고 있습니까? 나는 jdk 1.6 릴리스 중 일부에서이 물건과 관련된 버그가 있음을 모호하게 기억하고있다. – jtahlborn

+0

같은 디렉토리에서 똑같은 JDK를 사용하여 하나의 프로세스와 jconsole을 실행했습니다. 여전히 그 프로세스는 회색을 보여줍니다. – richs

+0

맞아요. 두 개의 다른 상자가 동일한 버전의 jdk를 사용하는지 묻는 것입니다. – jtahlborn

답변

2

프로세스가 다른 사용자 (예 : 서비스로 시작한 경우)로 실행중인 경우 해당 프로세스에 연결할 수 없습니다. 또한 오래된 jvm에서 실행중인 경우에는 그들과 대화 할 수 없을 것입니다.

경우에 따라 로컬 jmx 통신 메커니즘은 로컬 파일 시스템을 사용하며 권한이 올바르게 정의되지 않은 경우 문제가 발생할 수 있습니다. 네트워크 파일 시스템 (nfs, samba)에서 이러한 프로세스를 실행할 가능성이 있습니까? http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html에서

2

: 관리 에이전트를 무효로 한 접속하지

응용 프로그램. 여기에는 -Dcom.sun.management.jmxremote 또는 com.sun.management.jmxremote.port 옵션이없는 J2SE 1.4.2 플랫폼에서 시작되었거나 J2SE 5.0 플랫폼에서 시작된 응용 프로그램이 포함됩니다. 이러한 응용 프로그램은 테이블에 회색으로 표시되어이며 JConsole에서 연결할 수 없습니다. 그림 3-1에있는 예제 연결 대화 상자에서 Anagrams 어플리케이션은 JMX 에이전트를 사용할 수있는 관리 등록 정보없이 J2SE 5.0 플랫폼 VM에서 시작되었으므로 회색으로 표시되어 선택할 수 없습니다. 문서에 기록되는 무슨에도 불구하고

Figure 3-1 Creating a Connection to a Local Process http://download.oracle.com/javase/6/docs/technotes/guides/management/figures/connect.gif 는 가장 가능성이 과정은 다른 사용자로 실행 중입니다. 관리자로 jconsole을 실행하고 시도하십시오.

+0

Windows 작업 관리자를 열었고 jconsole과 java 프로세스가 모두 동일한 사용자를 대상으로합니다. – richs

+0

안녕하세요 Tomasz - 관리자 권한으로 jconsole을 실행해도 문제가 해결되지 않습니다. 이걸로 들어갔나요? 흥미롭게도 Process Explorer를 관리자로 실행하면이 특정 Java 프로세스의 프로세스 정보를 볼 수 있습니다. 해결 방법은'com.sun.management.jmxremote.port'를 사용하고 "원격 프로세스"를 사용하여 연결하는 것입니다. 그러나 많은 프로세스가 실행 중이며 고유 한 포트를 할당하는 것이 문제가되기 때문에 최적의 솔루션이 아닙니다. – sourcedelica

16

지금은이 문제와 싸우고 난 주위에 작품을 발견 : (: \ 온도, 예를 들어 D)

당신은 뭔가 그들이 할 수있는 확실히 액세스 로컬 사용자의 임시 디렉토리를 변경할 수 있습니다. 모니터링하려는 프로세스와 jconsole 프로세스에 대해이 작업을 수행해야합니다.

명백하게 문제를 일으킬 수있는 또 다른 사항은 대문자가있는 사용자 이름입니다. 디렉토리는 항상 모든 소문자로 작성되지만, 작업 관리자에 표시되는 방법으로 정확하게 이름을 변경하면 모든 문제가 사라집니다. http://planeofthought.com/wp/?p=75

+1

감사합니다. 수정 한 링크가 트릭 +1을했습니다. (나는 아직도 사용자들에게 폴더의 이름을 바꾸라고 말하지 않아도된다.) hsperfdata_ 디렉토리의 이름을 hsperfdata_ 으로 변경하면 효과가있었습니다. – km1

+0

이것은 나를 위해 머리에 손톱을 친다. 이 디렉터리의 이름을 바꾸는 데 문제가 있었지만 Sysinternals Process Explorer 도구를 사용하여 내 SmartSVN 복사본에 디렉터리가 잠겼다 고 판단 할 수있었습니다. 그런 다음 SmartSVN을 종료하고 디렉토리의 이름을 변경하면 모든 것이 잘되었습니다. 이 경우 디렉토리가 다시 만들어집니다. –

+0

믿기 어렵지만 실제로 효과가있었습니다! 나는. TEMP와 TMP를 모두 c : \ temp로 설정하십시오. 믿을 수 없는. 감사! – fool4jesus

1

다음은 저에게 효과적입니다. 내 %TEMP%%TMP% 환경 변수가 %HOME% 위치 (예 : C:\Users\[YOUR_NAME]\Temp)에서 생성 한 폴더를 가리 키도록 변경했습니다. 내가 이것을 한 후에는 모든 문제가 사라졌습니다.

2

작업 관리자에 표시된 Java 응용 프로그램을 시작하는 데 사용하는 Windows 사용자 이름이 YOUR_USER_NAME이라고 가정 해보십시오. 임시 폴더에서 이름이 hsperfdata_XXXXX (XXXXX는 사용자 이름이어야 함)로 보이는 폴더를 확인하고 YOUR_USER_NAME 및 XXXXX가 정확히 동일해야합니다 (대문자와 소문자에주의하십시오).

0

환경 변수에서 TEMP 경로를 권한 문제 일 수 있으므로 D : \ temp로 변경하십시오.