[ 
https://issues.apache.org/jira/browse/CLK-564?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12728567#action_12728567
 ] 

Bob Schellink commented on CLK-564:
-----------------------------------

Great work on the implementation Malcolm.

Some comments:

- Testing Click examples on Tomcat and setting the context.xml property, 
unpackWAR="false", gives error when accessing the ExceptionDemo. Velocity 
complains that it cannot find error.htm. Problem is that error.htm should be 
looked up from "META-INF/resources/click/error.htm". One solution could be to 
enhance Velocity/FreemarkerTemplateService with the following:

  public void renderTemplate(Page page, Map model, Writer writer) throws 
Exception {

    ...
    String templatePath = page.getTemplate();
    boolean canDeploy = canDeploy();
    if (!canDeploy) {
      templatePath = "META-INF/web" + templatePath;
    }
    ...

- Currently the solution only caters for resources under the "/click/" folder. 
It would be nice if all mapped resources would be served

- The caching solution might end up caching Velocity resources. Consider the 
following:

  my-page.htm
  my-page.css
  my-page.js

  "my-page.htm" and "my-page-js" are Velocity templates and should not be 
cached as it won't be requested by the browser.

  One solution is a lazy on-demand cache. Instead of loading resources upfront, 
we only load resources when requested. It would mean
  switching the cache to a ConcurrentHashMap though.

> Add ResourceService for serving static resources
> ------------------------------------------------
>
>                 Key: CLK-564
>                 URL: https://issues.apache.org/jira/browse/CLK-564
>             Project: Click
>          Issue Type: New Feature
>          Components: core
>    Affects Versions: 2.1.0
>            Reporter: Malcolm Edgar
>
> The Click static resource deployment strategy of writing *.htm, *.css and 
> image files to the web application /click/ directory does not work on all 
> application servers. In particular WebLogic and WebSphere have security 
> restrictions which prevent this from occuring. In these scenarios users are 
> have to deploy these applications to the WAR file at build time.  Google GAE 
> also does not support this deployment mode.
> A solution to this problem is to use the ClickServlet to serve these 
> resources. By adding an additional web.xml mapping:
>       <servlet-mapping>
>               <servlet-name>ClickServlet</servlet-name>
>               <url-pattern>/click/*</url-pattern>
>       </servlet-mapping>
> The ClickServlet could use a ResourceService interface obtained from the 
> ConfigService which returns the resource data. A default ClickResourceService 
> would be provided which loads all the resources at application initialization 
> time. This service would scan all the JAR files for resources in META-INF/web 
> as is currently done in XmlConfigService and would cache them in memory. The 
> service would also scan all the resources under the WAR /click/ directory. 
> These resources would override any defined in the application JAR files.
> This could be a good feature for 2.1.0, we should possibly delay the 2.1.0 RC 
> release to include this feature.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to