![](/img/trans.png)
[英]How can I access tomcat log files from Java web application deployed on it?
[英]How can I get application libraries (jarNames) on java web servers like Tomcat and WAS?
我需要從Tomcat和Websphere服務器上的Web應用程序獲取使用的庫的jarNames。
我有以下代碼:
public void libs(ActionEvent e){
System.getProperty("java.class.path");
try {
Field ucp = this.getClass().getClassLoader().getClass()
.getSuperclass().getDeclaredField("ucp");
ucp.setAccessible(true);
Object valueUcp = ucp.get(this.getClass().getClassLoader());
Field loaders = valueUcp.getClass().getDeclaredField("path");
loaders.setAccessible(true);
ArrayList collection = (ArrayList) loaders.get(valueUcp);
} catch (Exception e) {
e.printStackTrace();
}
}
它適用於Tomcat,但不適用於Websphere。
PS。 對不起,我的英語不好。
沒有可移植的API來獲取此信息。 在WebSphere Application Server上,ClassLoader.toString通常包含用於診斷目的的完整類路徑,但是我絕對不建議嘗試“解析”輸出。 我也不建議在Tomcat上使用反射:它可能適用於當前的Tomcat版本,但是不能保證類加載器的實現不會改變並破壞您的應用程序。
如果不需要以編程方式獲取它,這就是我的建議。 在控制台中使用類加載器查看器,它為您提供了必需的信息。
我建議您在測試環境中運行自動化測試用例,然后進行查看,然后您將能夠看到運行時為滿足Web應用程序需求而加載的所有類。
我同意fnt編寫這些東西的需求是什么? 如果您正處於故障排除階段並嘗試查找某種NCDF或CNF異常,則使用Class Loader Viewer的方法將很有幫助。 在故障排除活動期間,還要查看native_stderr.log中詳細的類加載器輸出,這將有很大幫助。
HTH芒格魯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.