动态生成的.jsp文件:使用jetty-maven-plugin的PWC6117错误

时间:2012-07-08 17:57:23

标签: jsp spring-mvc jetty embedded-jetty maven-jetty-plugin

我使用Spring MVC,Maven和jetty-maven-plugin插件(7.6.2.v20120308)进行本地开发。

我知道有些人会认为这不是一个好主意,但我会自动生成一些.jsp文件。例如,我有一个 dyn.js 文件,我希望它是动态的,以包含JSTL / EL代码。

简而言之,我的所作所为:

  • 如果调用动态dyn.js并且解释的缓存版本尚未存在,我会将请求重定向到特殊控制器。

  • 控制器获取dyn.js文件的内容,并使用此内容创建一个 dyn.js.jsp 文件,该文件位于我的其他.jsp文件所在的目录中。我在运行时使用以下内容获取该目录:

    getServletContext().getRealPath("/") + File.separator + "WEB-INF" + File.separator + "tags"
    
  • 生成jsp文件后,我的控制器返回视图路径(或ModelAndView),以便处理视图。

  • 最终呈现视图后,我会得到结果内容(使用过滤器中的自定义响应包装器),然后将其保存到缓存文件中。

这种方法效果很好!我很高兴。

唯一的问题是,有时我在尝试生成动态dyn.js时会出现此错误:

Jul 8, 2012 5:15:12 PM org.apache.jasper.servlet.JspServlet _serviceJspFile
SEVERE: PWC6117: File "C:\somepath\src\main\webapp\WEB-INF\tags\dyn.js.jsp" not found

当发生这种情况时,无所事事。即使我刷新页面,也找不到jsp,所以我的dyn.js不起作用。然后检查我的文件系统中的.jsp文件确实存在(C:\ somepath \ src \ main \ webapp \ WEB-INF \ tags \ dyn.js.jsp)!

此问题似乎是随机发生的。我无法随意重现问题。我说它发生在1/5的时间。

Jetty似乎无法"看到"在某些情况下生成的.jsp文件。

知道什么可以触发这个问题以及我如何解决它?

更新:我使用jetty-maven-plugin版本7.6.2.v20120308。

2 个答案:

答案 0 :(得分:0)

对于那些感兴趣的人,我想我找到了一个解决方法。创建临时.jsp文件,即使没有内容,在第一个请求之前似乎解决了问题。

因此,当应用程序启动时,我有一个钩子,用于创建带有空内容的动态.jsp文件。

答案 1 :(得分:0)

我认为问题与文件路径有关。当您在控制台上复制路径并将其粘贴到Windows资源管理器上时,无法打开路径。