java - proyecto - Lista de aplicaciones web desplegadas en Apache Tomcat
servidor web java (7)
Necesito obtener una lista de aplicaciones web implementadas en Apache Tomcat. Además, para cada aplicación web necesito obtener una lista de servlets inicializados y JSP. ¿Alguna idea de cómo se puede hacer esto?
He encontrado que el directorio /tomcat/work/Catalina/localhost/
contiene un directorio secundario para cada aplicación web. ¿Podría haber alguna otra aplicación web desplegada que no esté presente allí?
Echa un vistazo al manual de Apache Tomcat . La Sección 5 trata sobre la aplicación Manager en Tomcat, que hace precisamente eso.
La mejor manera de encontrar información sobre las aplicaciones implementadas y su contenido (incluidos servlets, archivos, conexiones y demás) es instalar Lambda Probe además de lo que sirva la instancia de Tomcat.
No se como hacerlo Pero hay una aplicación de administrador en la distribución estándar de Tomcat, que enumera las aplicaciones implementadas. Se proporciona el código fuente, por lo que podría echar un vistazo allí.
Con respecto a su pregunta sobre otras aplicaciones web: Sí, podría haber otras aplicaciones web, que no residen en el directorio de aplicaciones web. Se podrían especificar en el server.xml.
Puedes hacerlo usando javax.management. Se verá como
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.
}
Un poco tarde, pero espero que esta ayuda:
Configuraciones de tomcat
Agregue esto en su /.../.../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"/>
Después de eso, reinicie Tomcat y use:
Usando url (inicio de sesión anterior)
Usando linea de comando
curl -v -u my_user: my_pass http://127.0.0.1:some_port/manager/text/list
El resultado debe ser:
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
HTH
http://code.google.com/p/psi-probe/wiki/Features parece ser un buen lugar para mirar.
Cotización manual: List_Currently_Deployed_Applications
http://localhost:8080/manager/text/list