2017-05-03 110 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文件名给出该文件路径。

所以如果有人有更好的办法,请分享。

相关问题