Это очень старая тема, но так как я искал и нашел фактический ответ на этот вопрос, я могу также опубликовать его.
http://www.java2s.com/Code/Java/Development-Class/ThisFullThreadDumpclassdemonstratesthecapabilitytogetafullthreaddumpandalsodetectdeadlockremotely.htm
Выше показано оченьХороший пример того, как получить доступ ко всем потокам на удаленном JMX.
В Синопсисе:
// First connect to the remote service
String urlPath = "/jndi/rmi://" + hostname + ":" + port + "/jmxrmi";
JMXServiceURL url = new JMXServiceURL("rmi", "", 0, urlPath);
JMXConnector jmxc = JMXConnectorFactory.connect(url);
MBeanServerConnection server = jmxc.getMBeanServerConnection();
// Then get all threads
ThreadMXBean tmbean = newPlatformMXBeanProxy(server, THREAD_MXBEAN_NAME, ThreadMXBean.class);
ObjectName tmbean = new ObjectName(THREAD_MXBEAN_NAME);
long[] tids = tmbean.getAllThreadIds();
ThreadInfo[] tinfos = tmbean.getThreadInfo(tids, Integer.MAX_VALUE);
for (ThreadInfo ti : tinfos) {
// do something with this particular thread...
}
Чтобы подчеркнуть возможную необходимость написать собственный инструмент мониторинга, опрошенный @Aaron-McIver;потоки содержат много информации, и в бизнес-процессе может быть много потоков, и их невозможно просмотреть, например, в VisualVM.Может иметь смысл программировать циклы по потокам для поиска конкретных ключевых слов, времени процессора, трассировки стека, имен файлов и т. Д. *