我有两台在Glassfish 2.1上运行的服务器,它们都有相同的网络应用程序。
两次出现这个错误:一些jsp页面停止显示只显示一个空白页面,并且在日志中打印了以下错误...
PWC1231:servlet jsp 的 Servlet.service() 抛出异常 java.io.FileNotFoundException: /path/to/jsp/file/jsp_file.jsp.java (Permission denied) at java.io.FileOutputStream.open(Native Method) at java .io.FileOutputStream.(FileOutputStream.java:179) 在 org.apache.jasper.compiler.AntJavaCompiler.getJavaWriter(AntJavaCompiler.java:213) 在 org.apache.java.io.FileOutputStream.(FileOutputStream.java:70)。 jasper.compiler.Compiler.generateJava(Compiler.java:173) 在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:409) 在 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470) 在 org.apache.jasper.servlet.JspServlet。service(JspServlet.java:364) at javax.servlet.http.HttpServlet.service(HttpServlet.java:831) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411) at org.apache.catalina .core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:855) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:542 ) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:366) 在 org.apache.struts.action.RequestProcessor 的 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:474)。 doForward(RequestProcessor.java:1056) 在 org.apache.struts.tiles.TilesRequestProcessor。doForward(TilesRequestProcessor.java:261) at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388) at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316) at org.apache .struts.action.RequestProcessor.process(RequestProcessor.java:231) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) 在 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java :415) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:738) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:831) 在 org.apache.catalina.core.ApplicationFilterChain.servletService( ApplicationFilterChain.java:411) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198) 在 com.my.app.filtro.FiltroCallcenter.doFilter(FiltroCallcenter.java:90) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain. java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288) at org.apache.catalina.core .StandardContextValve.invokeInternal(StandardContextValve.java:271) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) 在com.sun.enterprise 的 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)。web.WebPipeline.invoke(WebPipeline.java:94) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) 在 org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:1080) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)。 catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571) 在 org.apache.catalina.core。ContainerBase.invoke(ContainerBase.java:1080) 在 org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272) 在 com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:第637章) .sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) 在 com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263) 在 com.sun.enterprise .web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214) 在 com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)在 com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
紧随其后的是:
PWC6344: 无法为文件 /path/to/jsp/file/jsp_file.jsp.java|#] 创建输出编写器
有时只打印 PWC6344 错误,有时两者都打印,PWC1231 错误后面总是跟着 PWC6344(这有点道理,因为发生 IOException 时会抛出该异常)。
好吧,两次都发生了这个错误,我唯一做的就是停止并启动实例,一切又好了,而且这个错误只发生在其中一个服务器上。
发生了什么事?...或者我如何诊断是什么导致了这种情况,这样我就可以解决问题,而不是永远停止并重新开始...
更新:
正如 sbridges 所建议的那样,我正在调查这可能是文件描述符问题,但是!,文件处理程序的最大数量是 811975,其中一个服务器上打开了 4520 个文件,而另一个服务器上只有 6894 个文件处理程序是 359532。
所以,我想可以肯定地说这不是问题!
有人有其他理论吗?