title: Spring ResourceServlet throws too many open files exception in jetty and tomcat under linux
body: <p>I was running the petclinic example that was created with spring roo, also I test booking-mvc example that comes whit spring webflow 2.0.9 and the same happens, this is when I reload the main page many times.</p>
  
  <p>If I remove the lines from both examples there is no error.</p>
  
  <pre><code>&lt; spring:theme code="styleSheet" var="theme_css"/&gt;
              &lt;spring:url value="/${theme_css}" var="theme_css_url"/&gt;
  
  
              &lt;spring:url value="/resources/dojo/dojo.js" var="dojo_url"/&gt;
              &lt;spring:url value="/resources/dijit/themes/tundra/tundra.css" var="tundra_url"/&gt;
              &lt;spring:url value="/resources/spring/Spring.js" var="spring_url"/&gt;
              &lt;spring:url value="/resources/spring/Spring-Dojo.js" var="spring_dojo_url"/&gt;
              &lt;spring:url value="/static/images/favicon.ico" var="favicon" /&gt;
              &lt;link rel="stylesheet" type="text/css" media="screen" href="${theme_css_url}"&gt;&lt;!-- //required for FF3 and Opera --&gt;&lt;/link&gt;
              &lt;link rel="stylesheet" type="text/css" href="${tundra_url}"&gt;&lt;!-- //required for FF3 and Opera --&gt;&lt;/link&gt;
              &lt;link rel="SHORTCUT ICON" href="${favicon}" /&gt;
  
  
              &lt;script src="${dojo_url}" type="text/javascript" &gt;&lt;!-- //required for FF3 and Opera --&gt;&lt;/script&gt;
              &lt;script src="${spring_url}" type="text/javascript"&gt;&lt;!-- //required for FF3 and Opera --&gt;&lt;/script&gt;
              &lt;script src="${spring_dojo_url}" type="text/javascript"&gt;&lt;!-- //required for FF3 and Opera --&gt;&lt;/script&gt;
              &lt;script language="JavaScript" type="text/javascript"&gt;dojo.require("dojo.parser");&lt;/script&gt;
  </code></pre>
  
  <p>So I can deduce that this is something related with this servlet</p>
  
  <pre><code>   &lt;servlet&gt;
          &lt;servlet-name&gt;Resource Servlet&lt;/servlet-name&gt;
          &lt;servlet-class&gt;org.springframework.js.resource.ResourceServlet&lt;/servlet-class&gt;
      &lt;/servlet&gt;
  
  
      &lt;!--
                  Map all /resources requests to the Resource Servlet for handling
          --&gt;
      &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;Resource Servlet&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/resources/*&lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;
  </code></pre>
  
  <p>Running the example injetty 6.1.10, tomcat 1.6, in  fedora 12 with java 1.6.20, make errors. but in aix and websphere no errors, and tomcat 1.6 and windows no errors, I think that this is something related with linux.</p>
  
  <pre><code>STACKTRACE
      2010-05-21 12:53:07.733::WARN:  Nested in org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/layouts/default.jspx'.:
          org.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/layouts/default.jspx'.
           at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:691)
           at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:643)
           at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:626)
           at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:322)
           at org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:100)
           at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
           at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1060)
           at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
           at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
           at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
           at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
           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:487)
           at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
           at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
           at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
           at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
           at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
           at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:285)
           at org.mortbay.jetty.servlet.Dispatcher.error(Dispatcher.java:135)
           at org.mortbay.jetty.servlet.ErrorPageErrorHandler.handle(ErrorPageErrorHandler.java:121)
           at org.mortbay.jetty.Response.sendError(Response.java:274)
           at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:429)
           at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
           at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
           at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
           at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
           at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
           at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
           at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
           at org.mortbay.jetty.Server.handle(Server.java:324)
           at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
           at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
           at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
           at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
           at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
           at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
           at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
          Caused by: org.apache.tiles.util.TilesIOException: ServletException including path '/WEB-INF/layouts/default.jspx'.
           at org.apache.tiles.servlet.context.ServletUtil.wrapServletException(ServletUtil.java:232)
           at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:243)
           at org.apache.tiles.servlet.context.ServletTilesRequestContext.dispatch(ServletTilesRequestContext.java:222)
           at org.apache.tiles.renderer.impl.TemplateAttributeRenderer.write(TemplateAttributeRenderer.java:44)
           at org.apache.tiles.renderer.impl.AbstractBaseAttributeRenderer.render(AbstractBaseAttributeRenderer.java:103)
           at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:669)
           at org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:689)
           ... 38 more
          Caused by: java.io.FileNotFoundException: /home/tsalazar/Workspace/test/roo_clinic/src/main/webapp/WEB-INF/web.xml (Too many open files)
           at java.io.FileInputStream.open(Native Method)
           at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:106)
           at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:66)
           at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
           at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
           at java.net.URL.openStream(URL.java:1010)
           at org.apache.jasper.compiler.JspConfig.processWebDotXml(JspConfig.java:114)
           at org.apache.jasper.compiler.JspConfig.init(JspConfig.java:295)
           at org.apache.jasper.compiler.JspConfig.findJspProperty(JspConfig.java:360)
           at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:141)
           at org.apache.jasper.compiler.Compiler.compile(Compiler.java:409)
           at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
           at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
           at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)
           at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:364)
           at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
           at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
           at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
           at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
           at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
           at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
           at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
           at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:285)
           at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
           at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241)
           ... 43 more
  </code></pre>