2017-05-03 111 views
1

問題:如何在運行時從服務器加載爲給定的JSP文件生成的servlet類的位置獲取文件路徑?例如,我有一個可以在某個URL訪問的JSP文件research_form_manage.jsp,並且我想記錄正在處理我的請求的生成的__research_form_manage.java的文件路徑(它可能位於服務器的緩存中)。如何在運行時獲得從JSP生成的servlet類的文件路徑?

上下文:我有一個Web應用程序部署在WebLogic 12c上(我使用IntelliJ的JRebel自動部署)。有時我會收到錯誤,因爲JSP是從某個緩存中加載的,並且已經過時。我手動清除了我知道的緩存位置(從my_domain \ server下的tmp \和cache \然後重新啓動服務器),但該文件仍然從緩存中加載。

我發現this idea有關如何找到其中的緩存類的加載,我想記錄的JSP的位置,使用的財產以後像 ...class.getProtectionDomain().getCodeSource().getLocation();

回答

0

我發現,似乎工作的一種方式,翻譯的servlet加入在JSP文件中這一行: <%= getClass().getProtectionDomain().getCodeSource().getLocation() %>

該類位於我刪除的domain \ servers ... \ tmp文件夾中,所以我不知道jsp的舊版本來自哪裏。

該代碼完成我所需要的功能,但這並不是很好,因爲這意味着我必須修改JSP,然後記住在推送前清理它。我最初想的是在某處放置一個斷點,並添加一個表達式,該表達式將根據jsp文件名給出該文件路徑。

所以如果有人有更好的辦法,請分享。

相關問題