我需要在Apache Tomcat中获取已部署的Web应用程序列表.此外,对于每个webapp,我需要获取初始化的servlet和JSP列表.有什么想法可以做到这一点?
我发现该目录\tomcat\work\Catalina\localhost\
包含每个webapp的子目录.是否有任何其他部署的Web应用程序不存在?
JRi*_*dsz 16
有点晚了,但我希望这有帮助.
要获取tomcat中已部署应用程序的列表,您需要配置xml文件并执行简单的curl命令:
在/.../.../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"/>
Run Code Online (Sandbox Code Playgroud)
之后,重启tomcat
转到您喜欢的浏览器并输入此网址:
http://some_ip:some_port/manager/text/list
Run Code Online (Sandbox Code Playgroud)
将出现登录信息.输入在TOMCAT_HOME/conf/tomcat-users.xml中配置的用户/密码
只需执行此操作:
curl -v -u my_user:my_pass http://127.0.0.1:some_port/manager/text/list
Run Code Online (Sandbox Code Playgroud)
结果应该是:
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
Run Code Online (Sandbox Code Playgroud)
最后一种方法被许多与自动tomcat部署相关的插件使用(Devops)
HTH
Sta*_*lin 11
您可以使用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.
}
Run Code Online (Sandbox Code Playgroud)
手动报价:List_Currently_Deployed_Applications
http://localhost:8080/manager/text/list
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做。但是tomcat的标准发行版中有一个管理器应用程序,它列出了已部署的应用程序。提供了源码,大家可以看一下。
关于您关于其他 webapp 的问题:是的,可能还有其他 webapp,它们不在 webapp 目录中。它们可以在 server.xml 中指定。
归档时间: |
|
查看次数: |
43866 次 |
最近记录: |