JMX, определенный [закрытый]

Здесь есть несколько проблем:

1) Вы отправляете неправильную вещь в Client.js - вы хотите отправить переменную 'obj', а не переменную 'message'. 2) В Server.js вы пытаетесь получить доступ к «message.data», которого не существует. 3) Сначала вам нужно проанализировать ответ JSON

, поэтому вы хотите, чтобы он был таким:

socket.on('message', function(message) {
    var json=JSON.parse(message);
    if (json.body === 'connect') {
        ...

И в Client.js:

ws.send(JSON.stringify(obj));
28
задан mainstringargs 13 May 2009 в 19:13
поделиться

4 ответа

JMX - это способ просмотра и управления состоянием выполнения вашего приложения. Это несколько похоже на концепцию SNMP, если это помогает. ИМО, это необходимо для мониторинга и понимания приложений серверного типа, которые могут не иметь никакого другого пользовательского интерфейса, кроме записи в файл журнала.

Базовый подход - создать интерфейс для вещей, которые вы хотите отслеживать, а затем иметь класс реализовать интерфейс, а затем зарегистрируйте экземпляр этого класса с помощью «MBeanServer» (который фактически делает вещи, определенные в интерфейсе, доступными для приложений мониторинга JMX, таких как jconsole).

Вот тривиальный, но работающий пример:

(я предполагаю, что Java 5 или выше)

TestServerMBean.java

public interface TestServerMBean
{
    public long getUptimeMillis();
    public long getFooCount();
    public void setFooCount(long val);
    public void printStuff(String stuff);
}

TestServer.java:

import java.lang.management.ManagementFactory;
import java.util.concurrent.atomic.AtomicLong;

import javax.management.ObjectName;

// If jconsole doesn't see this app automatically, invoke the application with the following java flags, and connect
// 'remotely' via jconsole.
//
// -Dcom.sun.management.jmxremote
// -Dcom.sun.management.jmxremote.port=2222 (or whatever)
// -Dcom.sun.management.jmxremote.authenticate=false
// -Dcom.sun.management.jmxremote.ssl=false
public class TestServer implements TestServerMBean
{
    private final AtomicLong m_counter = new AtomicLong(0L);
    private final long m_startTimeMillis = System.currentTimeMillis();

    public void run() throws InterruptedException {
        while (true) {
            m_counter.incrementAndGet();
            Thread.sleep(5000);
        }
    }

    public long getFooCount() {
        return m_counter.get();
    }

    public void setFooCount(long val) {
        m_counter.set(val);
    }

    public long getUptimeMillis() {
        return System.currentTimeMillis() - m_startTimeMillis;
    }

    public void printStuff(String stuff) {
        System.out.println(stuff);
    }

    public static void main(String[] args) throws Exception {
        TestServer ts = new TestServer();
        ManagementFactory.getPlatformMBeanServer().registerMBean(ts, new ObjectName("myapp:service=MyServer"));
        ts.run();
    }
}

Скомпилируйте и запустите TestServer.class как обычно, запустите jconsole , подключитесь к TestServer (он появится автоматически, иначе посмотрите комментарии в коде выше), затем посмотрите на вкладку «MBeans», и вы увидите наш экземпляр с именем myapp: service = MyServer . Вы можете просмотреть текущее время безотказной работы и наблюдать, как FooCounter увеличивается каждые 5 секунд. Вы также можете установить для FooCounter любое (длинное) значение, которое хотите, и вызвать метод printStuff с любым аргументом String.

Очевидно, что это нелепый «сервер», но, надеюсь, простой рабочий пример поможет помогите проиллюстрировать общую концепцию: возможность заглядывать в работающее приложение и управлять им.

Существует множество дополнительных функций и различных типов MBean-компонентов, но только стандартный JMX, показанный выше, имеет большое значение, IMO.

в противном случае см. комментарии в приведенном выше коде), затем посмотрите вкладку «MBeans», и вы увидите наш экземпляр с именем myapp: service = MyServer . Вы можете просмотреть текущее время безотказной работы и наблюдать, как FooCounter увеличивается каждые 5 секунд. Вы также можете установить для FooCounter любое (длинное) значение, которое хотите, и вызвать метод printStuff с любым аргументом String.

Очевидно, что это нелепый «сервер», но, надеюсь, простой рабочий пример поможет помогите проиллюстрировать общую концепцию: возможность заглядывать в работающее приложение и управлять им.

Существует множество дополнительных функций и различных типов MBean-компонентов, но только стандартный JMX, показанный выше, имеет большое значение, IMO.

в противном случае см. комментарии в приведенном выше коде), затем посмотрите вкладку «MBeans», и вы увидите наш экземпляр с именем myapp: service = MyServer . Вы можете просмотреть текущее время безотказной работы и наблюдать, как FooCounter увеличивается каждые 5 секунд. Вы также можете установить для FooCounter любое (длинное) значение, которое хотите, и вызвать метод printStuff с любым аргументом String.

Очевидно, что это нелепый «сервер», но, надеюсь, простой рабочий пример поможет помогите проиллюстрировать общую концепцию: возможность заглядывать в работающее приложение и управлять им.

Существует множество дополнительных функций и различных типов MBean-компонентов, но только стандартный JMX, показанный выше, имеет большое значение, IMO.

Вы увидите наш экземпляр с именем myapp: service = MyServer . Вы можете просмотреть текущее время безотказной работы и наблюдать, как FooCounter увеличивается каждые 5 секунд. Вы также можете установить для FooCounter любое (длинное) значение, которое хотите, и вызвать метод printStuff с любым аргументом String.

Очевидно, что это нелепый «сервер», но, надеюсь, простой рабочий пример поможет помогите проиллюстрировать общую концепцию: возможность заглядывать в работающее приложение и управлять им.

Существует множество дополнительных функций и различных типов MBean-компонентов, но только стандартный JMX, показанный выше, имеет большое значение, IMO.

Вы увидите наш экземпляр с именем myapp: service = MyServer . Вы можете просмотреть текущее время безотказной работы и наблюдать, как FooCounter увеличивается каждые 5 секунд. Вы также можете установить для FooCounter любое (длинное) значение, которое хотите, и вызвать метод printStuff с любым аргументом String.

Очевидно, что это нелепый «сервер», но, надеюсь, простой рабочий пример поможет помогите проиллюстрировать общую концепцию: возможность заглядывать в работающее приложение и управлять им.

Существует множество дополнительных функций и различных типов MBean-компонентов, но только стандартный JMX, показанный выше, имеет большое значение, IMO.

30
ответ дан 28 November 2019 в 03:25
поделиться

These are the two I read when first reading up on JMX.

Sun Tutorial: http://java.sun.com/docs/books/tutorial/jmx/index.html

Spring 2.5/JMX: http://static.springframework.org/spring/docs/2.5.x/reference/jmx.html

0
ответ дан 28 November 2019 в 03:25
поделиться

Вкратце, JMX позволяет удаленно вызывать методы или просматривать открытые данные изнутри работающей JVM. Многие приложения используют JMX для своего рода присоединения удаленной панели мониторинга к своим запущенным JVM для обеспечения удаленного управления.

Например, если у вас есть сервер приложений, работающий на машине, с JMX можно будет удаленно просматривать открытая информация об этом сервере. Также можно создать собственный код JMX MBeans, который может предоставлять любые переменные или методы внутри вашего приложения. Затем открытые переменные могут быть "опрошены" удаленно для проверки определенных условий, о которых вы хотели бы знать.

Еще одна полезная вещь в JMX - это то, что вы можете удаленно изменять переменные на лету. Например, если у вас есть какой-то пул с максимальной общей суммой, это максимальное количество может быть изменено удаленно без перезапуска или изменения каких-либо файлов конфигурации на сервере приложений.

jconsole предоставляется Sun вместе с Java, чтобы иметь возможность легко просматривать ваши MBean-компоненты удаленно без необходимости кодирования собственного клиента решение. Вы также можете использовать MBean-компоненты с помощью специального решения, которое может дать вам отличную гибкость.

Кроме того, уже существует некоторое программное обеспечение для мониторинга, которое поставляется со встроенным мониторингом JMX MBean. Zenoss и Applications Manager 8 делают это, чтобы назвать пару.

Дополнение:

Уже существует множество программ, использующих JMX. Tomcat предоставляет информацию, доступную через jconsole, как и сервер приложений JBoss.

jconsole предоставляется Sun вместе с Java, чтобы иметь возможность легко просматривать ваши MBeans удаленно без необходимости кодирования собственного клиентского решения. Вы также можете использовать MBean-компоненты с помощью специального решения, которое может дать вам отличную гибкость.

Кроме того, уже существует некоторое программное обеспечение для мониторинга, которое поставляется со встроенным мониторингом JMX MBean. Zenoss и Applications Manager 8 делают это, чтобы назвать пару.

Дополнение:

Уже существует множество программ, использующих JMX. Tomcat предоставляет информацию, доступную через jconsole, как и сервер приложений JBoss.

jconsole предоставляется Sun вместе с Java, чтобы иметь возможность легко просматривать ваши MBeans удаленно без необходимости кодирования собственного клиентского решения. Вы также можете использовать MBean-компоненты с помощью специального решения, которое может дать вам отличную гибкость.

Кроме того, уже существует некоторое программное обеспечение для мониторинга, которое поставляется со встроенным мониторингом JMX MBean. Zenoss и Applications Manager 8 делают это, чтобы назвать пару.

Дополнение:

Уже существует множество программ, использующих JMX. Tomcat предоставляет информацию, доступную через jconsole, как и сервер приложений JBoss.

уже существует некоторое программное обеспечение для мониторинга, которое поставляется со встроенным мониторингом JMX MBean. Zenoss и Applications Manager 8 делают это, чтобы назвать пару.

Дополнение:

Уже существует много программного обеспечения, которое использует преимущества JMX. Tomcat предоставляет информацию, доступную через jconsole, как и сервер приложений JBoss.

уже существует некоторое программное обеспечение для мониторинга, которое поставляется со встроенным мониторингом JMX MBean. Zenoss и Applications Manager 8 делают это, чтобы назвать пару.

Дополнение:

Уже существует много программного обеспечения, которое использует преимущества JMX. Tomcat предоставляет информацию, доступную через jconsole, как и сервер приложений JBoss.

12
ответ дан 28 November 2019 в 03:25
поделиться

Возможно, здесь стоит упомянуть также JSR 262.

«JSR 262 определяет соединитель для JMX Remote API, который использует веб-службы для обеспечения удаленного доступа к инструментариям JMX. Клиенты не обязательно должны быть приложениями Java, но могут быть такими ».

Весьма вероятно, что JSR 262 будет частью следующей версии Java (Java 7).

Существует проект java.net для соединителя JMX WS , который зависит от Проект WiseMan . Wiseman - это Java-реализация стандарта WS-Management с открытым исходным кодом.

1
ответ дан 28 November 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: