понять порт HTTP-коннектора Tomcat из JMX MBeans


Я подключаюсь к Tomcat через JMX. Я написал простой клиент JMX для подключения к tomcat и чтения различных атрибутов JMX MBean для мониторинга tomcat. Моя проблема в том, что я хотел бы знать, какой порт прослушивает HTTP-коннектор Tomcat. Есть ли способ получить эту информацию через JMX Mbean - без чтения файла server.xml tomcat. Но чтобы получить это через некоторые атрибуты одного MBean?


person Shamik    schedule 17.03.2009    source источник


Ответы (2)


MBean называется что-то вроде Catalina:type=ThreadPool,name=http-8080. Как видите, порт разъема указан в названии.

person Kees de Kooter    schedule 17.03.2009
comment
Если tomcat запущен не на 8080, а на 9090 - тогда имя bean-компонента станет Catalina: type = ThreadPool, name = http-9090. В этом случае мне нужно знать, на каком порту работает http-коннектор. - person Shamik; 17.03.2009
comment
В этом случае он работает на порту 9090. Имя пула потоков отражает порт коннектора http. - person Kees de Kooter; 17.03.2009
comment
Вероятно, один глупый вопрос - но мой вопрос - есть ли способ узнать имена bean-компонентов программно, которые предоставляет tomcat? - person Shamik; 18.03.2009
comment
Вы можете использовать утилиту JConsole для проверки всех MBean-компонентов работающего приложения. - person Kees de Kooter; 18.03.2009
comment
Вы можете получить список MBean-компонентов, соответствующих различным критериям, используя метод MBeanServerConnection.queryNames(). Например, queryNames(new ObjectName("Catalina:type=ThreadPool,*", null)) должен возвращать список всех ThreadPool MBean. - person Matt Solnit; 16.12.2009

Для каждого коннектора есть выделенный MBean. Вы можете использовать все имена объектов MBean, запросив *:type=Connector,*. Разумеется, разъемов может быть несколько. Эти MBean-компоненты имеют атрибут port, из которого вы можете запросить номер порта.

Если вы используете jmx4perl, вы можете легко запросить эти атрибуты с помощью

jmx4perl http://localhost:8080/jolokia read *:type=Connector,* port

{
  "Catalina:port=8009,type=Connector" => {
     port => 8009
  },
  "Catalina:port=8080,type=Connector" => {
     port => 8080
  }
}
person Roland Huß    schedule 11.03.2011