码头服务器运行一段时间后,码头服务器无法为某些 jsp 加载某些类



我们有一个应用程序在独立的码头服务器上运行,服务器版本是6.1.20。启动应用程序后,它会在一段时间内运行良好。但是一段时间后(它不是确定的),除了重新启动码头服务器之外,某些 jsp 页面无法在应用程序中打开。

有人遇到这个问题吗?

例外情况是:

Nested in org.apache.jasper.JasperException: PWC6034: Unable to load class for JSP:
java.lang.ClassNotFoundException:org.apache.jsp.XXX.XXX_jsp
 at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at org.apache.jasper.servlet.JasperLoader.findClass(JasperLoader.java:204)
        at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:190)
        at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:122)
        at org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:639)
        at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:192)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
        at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
        at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
        at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:112)
        at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:249)
        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:827)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:736)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1162)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1153)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
        at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
这类

问题通常与某种清理过程有关,清理 Jetty 解压缩 Web 应用程序的临时目录

某些 tmp 目录清理进程可能只删除指定时间内未访问的某些文件。

我遇到了同样的问题,发现在我的 CentOS 5.9 上,tmpwatch 正在从 tmp 目录中删除 10 天内未访问的文件。这就是为什么有些 jsp 可以工作而有些不能工作的原因。

我通过从 tmpwatch 进程中排除 Jetty tmp 文件夹来解决此问题。

最新更新