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

Leonardo Uribe commented on MYFACES-3104:
-----------------------------------------

I can't see anything wrong in the code, but I have a theory :-).

Suppose you have a custom css file with some EL expressions inside it. For 
example:

.mycssclass {
    background-image: 
url('#{facesContext.externalContext.requestContextPath}/resources/images/background.gif');
}

Or something like this:

.someclass { 
    background-image:url("#{resource['images:logo.png']}"); 
}

This work in jsf so far, but what happen if by some reason you have a css 
resource that contains #{ in a comment or something starting with those 
characters that is not supposed to be an EL expression? JSF will try to check 
if is an EL and try to evaluate it, but that could cause an error. 

In such case, the ExceptionHandler is called, but the buffer was already 
filled, and part of the response already committed with the headers. The 
ExceptionHandler try to set the headers again (because it tries to render an 
error page again) but in this case it does not work and you can see the strange 
message on the log without see anything wrong in the app.

So, first check if the css files contains any #{ . 

If this is your case, let us know, maybe we can include a custom hack to 
disable css parsing (I was thinking on if there is an text string like 
#{oam.disable.parse.EL}, all further parsing is disabled automatically).

Suggestions are welcome.
                
> MyFaces 2 with EL 2.2 in Websphere 7
> ------------------------------------
>
>                 Key: MYFACES-3104
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3104
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 2.0.4
>         Environment: WebSphere Platform 7.0.0.13
> Host Operating System is Windows XP, version 5.1 build 2600 Service Pack 3
> Java version = 1.6.0, Java Compiler = j9jit24, Java VM name = IBM J9 VM
> Servlet API : 2.5
> JSP API : 2.1
>            Reporter: mansour
>         Attachments: MyFacesEL2Sample_was7.zip
>
>
> We have followed your documentation on the wiki in order to enable EL 2.2 
> (http://wiki.apache.org/myfaces/HowToEnableEl22), it doesn't work on 
> Websphere 7. 
> - we have added the 2 jars (el-api-2.2.jar and el-impl-2.2.jar from Glassfish 
> implementation) in th classpath of the web application
> - we have configured the web.xml like this :
>           <context-param>
>               <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
>               <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
>           </context-param>
>           [...]
>           <listener>
>               
> <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
>           </listener>
> The web application starts without errors,
> Problem :
> 1) When the web application starts we have this first exception :
> [04/04/11 11:24:39:136 CEST] 0000000a DefaultFacesC I   Reading standard 
> config META-INF/standard-faces-config.xml
> [04/04/11 11:24:39:277 CEST] 0000000a DefaultFacesC I   Reading config 
> /WEB-INF/faces-config.xml
> [04/04/11 11:24:39:823 CEST] 0000000a ExternalSpeci I   MyFaces Bean 
> Validation support disabled
> [04/04/11 11:24:39:855 CEST] 0000000a ApplicationIm I   Couldn't discover the 
> current project stage, using Production
> [04/04/11 11:24:39:855 CEST] 0000000a FacesConfigur I   Serialization 
> provider : class 
> org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory
> [04/04/11 11:24:39:855 CEST] 0000000a DefaultLifecy I   Using 
> LifecycleProvider 
> org.apache.myfaces.config.annotation.AllAnnotationLifecycleProvider
> [04/04/11 11:24:39:933 CEST] 0000000a FfdcProvider  W 
> com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: Incident FFDC émis 
> sur 
> C:\IBM\SDP75\runtimes\base_v7\profiles\was70profile2\logs\ffdc\server1_48704870_11.04.04_11.24.39.8706071861720806063404.txt
>  com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated 1341
> [04/04/11 11:24:39:933 CEST] 0000000a webapp        E 
> com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: 
> Exception interceptée lors de l''initialisation du contexte : {0}
>                                  java.lang.VerifyError: 
> javax/servlet/jsp/JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)V
>       at 
> org.apache.myfaces.webapp.Jsp21FacesInitializer.configureResolverForJSP(Jsp21FacesInitializer.java:123)
>       at 
> org.apache.myfaces.webapp.Jsp21FacesInitializer.initContainerIntegration(Jsp21FacesInitializer.java:77)
>       at 
> org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:126)
>       at 
> org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:111)
>       at 
> com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1681)
>       at 
> com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:374)
>       at 
> com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:299)
>       at 
> com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:100)
>       at 
> com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:166)
>       at 
> com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:731)
>       at 
> com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:616)
>       at 
> com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:376)
>       at 
> com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:668)
>       at 
> com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1122)
>       at 
> com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1319)
>       at 
> com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:609)
>       at 
> com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:944)
>       at 
> com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:725)
>       at 
> com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2046)
>       at 
> com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:439)
>       at 
> com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
>       at 
> com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:382)
>       at 
> com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$300(CompositionUnitMgrImpl.java:110)
>       at 
> com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:949)
>       at 
> com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:349)
>       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1563)
> 2) This second exception appears in the log :
> [04/04/11 11:24:53:436 CEST] 00000018 webapp        E 
> com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextDestroyed 
> SRVE0285E: Exception interceptée lors de la destruction du contexte : {0}
>                                  java.lang.IllegalStateException: No 
> Factories configured for this Application. This happens if the 
> faces-initialization does not work at all - make sure that you properly 
> include all configuration settings necessary for a basic faces application 
> and that all the necessary libs are included. Also check the logging output 
> of your web application and your container for any exceptions!
> If you did that and find nothing, the mistake might be due to the fact that 
> you use some special web-containers which do not support registering 
> context-listeners via TLD files and a context listener is not setup in your 
> web.xml.
> A typical config looks like this;
> <listener>
>   
> <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
> </listener>
>       at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:196)
>         [...]
> So can you tell us please how to configure EL 2.2 on Websphere 7 ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to