[ 
https://issues.apache.org/jira/browse/MYFACES-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12804170#action_12804170
 ] 

Ali Ok edited comment on MYFACES-2504 at 2/5/10 9:59 AM:
---------------------------------------------------------

----IGNORE THIS Comment----

In order to run MyFaces on Google App Engine with this patch, you must
1. Use Facelets.
2. Set org.apache.myfaces.config.annotation.LifecycleProvider context param to 
org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider. 
Since AllAnnotationLifecycleProvider and ResourceAnnotationLifecycleProvider 
providers need javax.naming.Context which is a restricted class on GAE, we must 
use NoInjectionAnnotationLifecycleProvider or NoAnnotationLifecyleProvider.

Reasons for code changes:
1. In Jsp21FacesInitializer.initContainerIntegration() method, I got 
AbstractMethodError. It seems like GAE container passes the JSP 2.1 test, but 
the JSP engine implementation fails to implement 
javax.servlet.jsp.JspFactory.getJspApplicationContext method. So, if server is 
detected as GAE, container is treated like JSP 2.0 (or less).
2. I got java.security.AccessControlException on method 
org.apache.myfaces.config.FacesConfigurator.getLastModifiedTime(). Google App 
Engine does not allow to get last modified time of a file and when an 
application is running on GAE there is no way to update faces config xml file. 
Thus, no need to check if the config file is modified.


Example configuration:
<context-param>
        
<param-name>org.apache.myfaces.config.annotation.LifecycleProvider</param-name>
        
<param-value>org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider</param-value>
</context-param>


Please review it.
Since this is my first patch, I would appreciate your long explanations.


Edit: I changed my comment. 
Please see " 2504-doc.diff " for the configuration.

      was (Author: aliok-com-tr):
    In order to run MyFaces on Google App Engine with this patch, you must
1. Use Facelets.
2. Set org.apache.myfaces.IS_GOOGLE_APP_ENGINE context param to true in 
web.xml. MyFaces is initialized like JSP 2.0 (or less) if this is set, and some 
other controls are disabled.
1. Set org.apache.myfaces.config.annotation.LifecycleProvider context param to 
org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider. I 
didn't want to override this with org.apache.myfaces.IS_GOOGLE_APP_ENGINE 
param. Since AllAnnotationLifecycleProvider and 
ResourceAnnotationLifecycleProvider providers need javax.naming.Context which 
is a restricted class on GAE, we must use 
NoInjectionAnnotationLifecycleProvider or NoAnnotationLifecyleProvider.

Reasons for code changes:
1. In Jsp21FacesInitializer.initContainerIntegration() method, I got 
AbstractMethodError. It seems like GAE container passes the JSP 2.1 test, but 
the JSP engine implementation fails to implement 
javax.servlet.jsp.JspFactory.getJspApplicationContext method. So, if the new 
org.apache.myfaces.IS_GOOGLE_APP_ENGINE context param is set to true, container 
is treated like JSP 2.0 (or less).
2. I got java.security.AccessControlException on method 
org.apache.myfaces.config.FacesConfigurator.getLastModifiedTime(). Google App 
Engine does not allow to get last modified time of a file and when an 
application is running on GAE there is no way to update faces config xml file. 
Thus, no need to check if the config file is modified.


Example configuration:
<context-param>
        <param-name>org.apache.myfaces.IS_GOOGLE_APP_ENGINE</param-name>
        <param-value>true</param-value>
</context-param>
<context-param>
        
<param-name>org.apache.myfaces.config.annotation.LifecycleProvider</param-name>
        
<param-value>org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider</param-value>
</context-param>


Please review it.
Since this is my first patch, I would appreciate your long explanations.
  
> Google App Engine Support
> -------------------------
>
>                 Key: MYFACES-2504
>                 URL: https://issues.apache.org/jira/browse/MYFACES-2504
>             Project: MyFaces Core
>          Issue Type: Improvement
>          Components: JSR-252, JSR-314
>    Affects Versions: 1.2.8, 2.0.0-alpha
>         Environment: Google App Engine 1.3
>            Reporter: Ali Ok
>            Priority: Minor
>         Attachments: 2504-4.diff, 2504-doc.diff
>
>
> Support for Google App Engine for MyFaces 1.2 and 2.0.

-- 
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