Список развернутых webapps в Apache Tomcat
Мне нужно получить список развернутых webapps в Apache Tomcat. Кроме того, для каждого webapp мне нужно получить список инициализированных сервлетов и JSP. Любые идеи, как это можно сделать?
Я обнаружил, что каталог \tomcat\work\Catalina\localhost\
содержит дочерний каталог для каждого webapp. Могут ли быть какие-либо другие развернутые webapps, которых там нет?
Ответы
Ответ 1
Вы можете сделать это, используя javax.management. Это будет выглядеть
private Iterable<String> collectAllDeployedApps() {
try {
final Set<String> result = new HashSet<>();
final Set<ObjectName> instances = findServer()
.queryNames(new ObjectName("Tomcat:j2eeType=WebModule,*"), null);
for (ObjectName each : instances) {
result.add(substringAfterLast(each.getKeyProperty("name"), "/")); //it will be in format like //localhost/appname
}
return result;
} catch (MalformedObjectNameException e) {
//handle
}
}
private MBeanServer findServer() {
ArrayList<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
for (MBeanServer eachServer : servers) {
for (String domain : eachServer.getDomains()) {
if (domain.equals("Tomcat")) {
return eachServer;
}
}
}
//handle. We are not in Tomcat.
}
Ответ 2
Немного поздно, но я надеюсь, что эта помощь:
Конфигурации Tomcat
Добавьте это в свой /.../.../TOMCAT_HOME/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="my_user" password="my_pass" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
После этого перезапустите tomcat и используйте:
Результат должен быть:
OK - Listed applications for virtual host localhost
/manager:running:0:manager
/:running:0:ROOT
/docs:running:0:docs
/examples:running:0:examples
/host-manager:running:0:host-manager
/my_app:running:0:my_app
/my_other_app:running:0:my_other_app
....
* Connection #0 to host 127.0.0.1 left intact
НТН
Ответ 3
Ручная цитата: List_Currently_Deployed_Applications
http://localhost:8080/manager/text/list
Ответ 4
Я не знаю, как это сделать. Но есть приложение-менеджер в стандартном дистрибутиве tomcat, в котором перечислены развернутые приложения. Исходный код предоставляется, поэтому вы можете посмотреть его.
Что касается вашего вопроса о других webapps: Да, могут быть другие webapps, которые не находятся в каталоге webapp. Они могут быть указаны в файле server.xml.
Ответ 5
Лучший способ найти информацию о развернутых приложениях и их контенте (включая сервлеты, файлы, подключения и т.д.) - это установить Lambda Probe в дополнение к тому, что обслуживает экземпляр tomcat.
Ответ 6
Ознакомьтесь с руководством Apache Tomcat. Раздел 5 касается приложения Manager в Tomcat, которое делает именно это.
Ответ 7
http://code.google.com/p/psi-probe/wiki/Features кажется хорошим местом для просмотра.