I also like the idea, however I would like to see some modifications 
which would allow this idea to work for application development, not 
only in deployment environments.

When developing applications, the requirement is to see the changes 
immediately, not after a period of time. So there should be an option to 
run the check on each request (the option can be implemented as an init 
parameter of JSPServlet). This option would be used in a development 
case, and the background thread solution would be used in the live 
deployment scenario. Note that in the former case, not all files in the 
application need to be checked, only the ones included in the currently 
requested page.

Petr Jiricka
software engineer
NetBeans / Forte for Java
Sun Microsystems


Kin-Man Chung wrote:

> +1 on the idea.
> 
> With minor changes, we can also implement a compiler server that compiles
> out-of-date pages in the background thread.  This would greatly improve
> the response time for accessing the pages, when recompilations are needed.
> 
> 
>>Date: Wed, 24 Apr 2002 10:52:51 -0500
>>From: Glenn Nielsen <[EMAIL PROTECTED]>
>>Subject: [PROPOSAL] jasper2 detection of compile time page include changes
>>To: [EMAIL PROTECTED]
>>MIME-version: 1.0
>>Content-transfer-encoding: 7bit
>>X-Accept-Language: en
>>Delivered-to: mailing list [EMAIL PROTECTED]
>>Mailing-List: contact [EMAIL PROTECTED]; run by ezmlm
>>X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N
>>List-Post: <mailto:[EMAIL PROTECTED]>
>>List-Subscribe: <mailto:[EMAIL PROTECTED]>
>>List-Unsubscribe: <mailto:[EMAIL PROTECTED]>
>>List-Help: <mailto:[EMAIL PROTECTED]>
>>List-Id: "Tomcat Developers List" <tomcat-dev.jakarta.apache.org>
>>
>>A common problem Tomcat users have is that Jasper does not detect when
>>a compile time included file <%@include file="..."%> changes so that
>>it can recompile dependent JSP pages.  This propsoal maps out a possible
>>solution for this.
>>
>>Create a new class (JspDependency) which is used to store mapping of JSP 
>>pages to dependent compile time included files.  This class will be 
>>created for each web application context and the data it depends upon
>>serialized to a special file in the work directory on context stop,
>>and read from that file on context startup.  Proposed filename is
>>JSP_DEPENDENCY.ser.
>>
>>Here is how this integrates into Jasper:
>>
>>On context start instantiate a JspDependency object and read in the
>>dependencies from JSP_DEPENDENCY.ser.  If there are dependencies,
>>start a background thread which checks for changes in compile time
>>included files once each 5-15 minutes. Perhaps make this configurable.
>>If changes are detected, set flags for dependent JSP pages which are 
>>affected.  Using a thread to accomplish this rather than having JSP 
>>Load do the dependency checks should reduce the request latency 
>>overhead for detecting these changes.
>>
>>The JSP Load method will call a method in JspDependency to determine
>>whether the current page needs to be recompiled due to dependency changes.
>>This will just be a quick test of a boolean, actual dependency checks
>>are done by the background thread.
>>
>>The JSP page compiler will call a method in JspDependency to remove all
>>dependencies for the current JSP page on compile start, then call an
>>add method for each compile time include dependency found.
>>
>>After a JSP page compile has completed any changes to dependencies
>>are written back out to the JSP_DEPENDENCY.ser file.
>>
>>Comments or suggestions?
>>
>>Regards,
>>
>>Glenn
>>
>>----------------------------------------------------------------------
>>Glenn Nielsen             [EMAIL PROTECTED] | /* Spelin donut madder    |
>>MOREnet System Programming               |  * if iz ina coment.      |
>>Missouri Research and Education Network  |  */                       |
>>----------------------------------------------------------------------
>>
>>--
>>To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
>>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> 



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to