myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Kočí (JIRA) <...@myfaces.apache.org>
Subject [jira] [Updated] (MYFACES-3545) FACELETS_REFRESH_PERIOD > 0 + .xhtml in .jar = Too many open files
Date Thu, 10 May 2012 19:08:58 GMT

     [ https://issues.apache.org/jira/browse/MYFACES-3545?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Martin Kočí updated MYFACES-3545:
---------------------------------

    Status: Patch Available  (was: Open)
    
> FACELETS_REFRESH_PERIOD > 0 + .xhtml in .jar = Too many open files 
> -------------------------------------------------------------------
>
>                 Key: MYFACES-3545
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3545
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.1.7
>         Environment: myfaces trunk
>            Reporter: Martin Kočí
>            Assignee: Martin Kočí
>         Attachments: MYFACES-3545.patch
>
>
> this is a classic one:
> https://issues.apache.org/jira/browse/TRINIDAD-73
> https://issues.apache.org/jira/browse/MYFACES-1982
> From http://www.mail-archive.com/wicket-user@lists.sourceforge.net/msg20937.html:
> " .... It's a bug in Sun's JarURLConnection. The workaround should solve the problems
even in 
> development mode.
> When you open an URL connection to an entry in a jar, you get a
> JarURLConnection. The JarURLConnection in the package
> sun.net.www.protocol.jar has an internal field
>     /* the url connection for the JAR file */
>     private URLConnection jarFileURLConnection;
> which you cannot access in any way. When you ask for the last modified
> time, the JarURLConnection will ask for the header field
> "last-modified", which in turn will ask the jarFileURLConnection for the
> that header field, which in turn will cause the initializeHeaders() call
> in FileURLConnection, which in turn calls connect() and opens the file
> (even though for the last modified header that is quite unnecessary).
> The way to close the file is to call getInputStream().close() on the
> jarFileURLConnection field, but unfortunately you can't since it is hidden.
> There is a very simple workaround though. In code:
>             URL url = new URL("jar:file:jarfile.jar!Entry.class");
>             URLConnection connection = url.openConnection();
>             if (connection instanceof JarURLConnection) {
>                 JarURLConnection jarUrlConnection = (JarURLConnection)
> connection;
>                 URL jarFileUrl = jarUrlConnection.getJarFileURL();
>                 URLConnection jarFileConnection =
> jarFileUrl.openConnection();
>                 long lastModified = jarFileConnection.getLastModified();
>                 jarFileConnection.getInputStream().close();
>                 System.out.println("last modified=" + new
> Date(lastModified));
>             }
> ... "
> This little hack is not done in myfaces DefaultFaceletFactory and FaceletCacheImpl.
> Simple workaround is:  javax.faces.FACELETS_REFRESH_PERIOD=0 in Development stage

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

Mime
View raw message