簡體   English   中英

如何在Tomcat和WAS等Java Web服務器上獲取應用程序庫(jarName)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM