Проблема:
Когда я подключаюсь через VisualVM и предоставляю правильные учетные данные, программа, похоже, немного подождет (либо обрабатывает, либо ожидает подключения), затем выдает ошибки с этим исключением.Кажется, что соединение не добавляется правильно после того, как это исключение - throw:
java.lang.NullPointerException: Illegal null argument
at javax.management.remote.JMXConnectionNotification.<init>(JMXConnectionNotification.java:152)
at javax.management.remote.rmi.RMIConnector$RMIClientCommunicatorAdmin.gotIOException(RMIConnector.java:1444)
at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.isInstanceOf(RMIConnector.java:1062)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.tools.visualvm.jmx.impl.JmxModelImpl$CheckerInvocationHandler.invoke(JmxModelImpl.java:598)
at $Proxy7.isInstanceOf(Unknown Source)
at java.lang.management.ManagementFactory.newPlatformMXBeanProxy(ManagementFactory.java:616)
at com.sun.tools.visualvm.tools.jmx.JvmMXBeansFactory$JvmMXBeansImpl.getMXBean(JvmMXBeansFactory.java:383)
at com.sun.tools.visualvm.tools.jmx.JvmMXBeansFactory$JvmMXBeansImpl.getRuntimeMXBean(JvmMXBeansFactory.java:356)
at com.sun.tools.visualvm.jmx.impl.JmxApplication.getPid(JmxApplication.java:84)
at com.sun.tools.visualvm.jvmstat.JvmstatModelProvider.getMonitoredVm(JvmstatModelProvider.java:49)
at com.sun.tools.visualvm.jvmstat.JvmstatModelProvider.createModelFor(JvmstatModelProvider.java:71)
at com.sun.tools.visualvm.jvmstat.JvmstatModelProvider.createModelFor(JvmstatModelProvider.java:45)
at com.sun.tools.visualvm.core.model.ModelFactory.getModel(ModelFactory.java:111)
at com.sun.tools.visualvm.tools.jvmstat.JvmstatModelFactory.getJvmstatFor(JvmstatModelFactory.java:65)
at com.sun.tools.visualvm.jvm.JRockitJvmProvider.createModelFor(JRockitJvmProvider.java:49)
at com.sun.tools.visualvm.jvm.JRockitJvmProvider.createModelFor(JRockitJvmProvider.java:42)
at com.sun.tools.visualvm.core.model.ModelFactory.getModel(ModelFactory.java:111)
at com.sun.tools.visualvm.application.jvm.JvmFactory.getJVMFor(JvmFactory.java:65)
at com.sun.tools.visualvm.jmx.impl.JmxApplicationProvider.addJmxApplication(JmxApplicationProvider.java:292)
at com.sun.tools.visualvm.jmx.impl.JmxApplicationProvider.access$100(JmxApplicationProvider.java:73)
at com.sun.tools.visualvm.jmx.impl.JmxApplicationProvider$3$1.run(JmxApplicationProvider.java:408)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1424)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1968)
Фон:
Я использую VisualVM для выполнения некоторой простой работы по профилированию.Я запускаю jboss-4.2.2.GA в Windows.
В моем файле run.bat
есть:
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=<myport>
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.local.only=false
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false
В созданном мною файле паролей JMX я включил рольс доступом только для чтения и убедитесь, что права доступа для чтения установлены для этого файла.
Я могу подключиться к серверу на localhost:<myport>
через JMX.Имя пользователя и пароль совпадают с ролью и паролем в моем файле конфигурации паролей JMX.Использование других учетных данных или другого пароля не работает, поэтому это определенно настроено правильно.
Я установил исключение общего брандмауэра в моем домене для java.exe
.Когда у меня нет этого исключения, я вообще не могу подключиться к серверу.Когда он включен, я могу удаленно подключиться к myport
через telnet и получить диалоговое окно с паролем, когда пытаюсь подключиться удаленно через VisualVM.
Я попытался просмотреть код, указанный в трассировке стека исключений.,Насколько я могу судить, connectionId
, вероятно, null
при построении JMXConnectionNotification
.Я не могу сказать почему, потому что я не удосужился попытаться запустить это в отладчике.
Есть что-то, что я настроил неправильно?Как обойти эту ошибку?
Редактировать:
Я только что попытался подключиться удаленно с JConsole, и я получил совершенно другую ошибку:
java.rmi.ConnectException: Connection refused to host: 127.0.0.1;
У меня нет записей в моем файле hosts на клиентском компьютере, так как некоторые вещи в сети предлагают WRT эту ошибку.Это свидетельствует о другой проблеме, или они связаны?