2016-02-08 1 views
-2

Я использую apache tomcat 7 для запуска моего веб-приложения. Мне нужно узнать количество активных сеансов, запустив приложение Java.Как написать java-приложение с использованием JMX-кода для получения активного сеанса в tomcat 7?

Я прочитал, что можно использовать JMX. Я получил счет, используя jconsole. Но, используя приложение Java, мне нужно его получить.

Может кто-нибудь, пожалуйста, помогите мне начать его.

+0

В каком коде у вас есть проблема? С помощью [JMX] (http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html) или с помощью поиска [имена MBean] (https://tomcat.apache.org /tomcat-7.0-doc/funcspecs/mbean-names.html). – SubOptimal

+0

Я не знаю, с чего начать или как начать. Поэтому, пожалуйста, помогите мне написать приложение Java для чтения активных сеансов из tomcat. Чему я должен научиться писать приложение. –

+2

Привет, и добро пожаловать к этому. Спросить о учебниках не по теме. Поскольку у вас нет какого-либо кода или реальной проблемы, чтобы обсудить здесь, я голосую, чтобы закрыть этот вопрос. – Marcinek

ответ

1

Очень простой подход был бы

String serviceUrl = "service:jmx:rmi:///jndi/rmi://localhost:9001/jmxrmi"; 
JMXServiceURL jmxServiceUrl = new JMXServiceURL(serviceUrl); 
JMXConnector jmxc = JMXConnectorFactory.connect(jmxServiceUrl, null); 
MBeanServerConnection conn = jmxc.getMBeanServerConnection(); 
ObjectName name = new ObjectName("Catalina:type=ProtocolHandler,port=8080"); 
System.out.println(conn.getAttribute(name, "connectionCount")); 

Чтобы узнать больше о Tomcat мониторинга взглянуть на Monitoring and Managing Tomcat (или на вашей локальной установки http://localhost:8080/docs/monitoring.html) и в FAQ - Monitoring

редактировать Чтобы найти активные сеансы приложения соответствующим образом изменяют пример. В приведенных ниже двух строках будут показаны активные сеансы, если вы получите доступ к SessionExample из установки по умолчанию Tomcat.

ObjectName name = new ObjectName(
    "Catalina:type=Manager,context=/examples,host=localhost"); 
System.out.println(conn.getAttribute(name, "activeSessions")); 
+0

Я пробовал это раньше. Но я получаю сообщение об ошибке «java.io.IOException: не удалось получить заглушку RMIServer: javax.naming.ServiceUnavailableException». Как получить URL-адрес службы? –

+0

@SreevidyaAravind Это объясняется ссылкой на «Контроль и управление Tomcat» в разделе «Включение JMX Remote». – SubOptimal

+0

Эта ошибка была решена после перезапуска tomcat. Но теперь у меня есть сомнения относительно спецификации контекста. Как указать контекст? ObjectName name = new ObjectName ("Catalina: type = Manager, context =/testApp, host = localhost, port = 8080"); Вот как я это указал. Но не работает –

Смежные вопросы