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

Jonathan Gallimore edited comment on TOMEE-4450 at 2/4/25 12:19 PM:
--------------------------------------------------------------------

Did a bit of digging on this one, and it does look similar to TOMEE-4355. I 
tried changing the RequestProducer in Mojarra so it looks like this:

 
{quote}public class RequestProducer extends CdiProducer<HttpServletRequest> {

    /**
     * Serialization version
     */
    private static final long serialVersionUID = 1L;

    public RequestProducer(BeanManager beanManager) {
        super
                .name("request")
                .scope(RequestScoped.class)
                .beanClass(beanManager, HttpServletRequest.class)
                .types(HttpServletRequest.class)
                .create(e -> (HttpServletRequest) 
FacesContext.getCurrentInstance().getExternalContext().getRequest());
    }

}
{quote}
 

i.e. adding in the Generic as opposed to <Object> on the class, and specifying 
.beanClass and .type

This, however, creates other conflicts:
{quote}    Caused by: org.apache.openejb.OpenEJBRuntimeException: 
org.apache.webbeans.exception.WebBeansDeploymentException: 
jakarta.enterprise.inject.AmbiguousResolutionException: There is more than one 
Bean with type jakarta.servlet.http.HttpServletRequest Qualifiers: 
[@jakarta.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  request, Bean Owner : 
[BaseUrlProducer, WebBeansType:MANAGED, Name:null, API 
Types:[java.lang.Object,org.apache.tomee.security.cdi.openid.BaseUrlProducer], 
Qualifiers:[jakarta.enterprise.inject.Default,jakarta.enterprise.inject.Any]]
found beans: 
HttpServletRequest, WebBeansType:MANAGED, Name:null, API 
Types:[java.lang.Object,jakarta.servlet.ServletRequest,jakarta.servlet.http.HttpServletRequest],
 Qualifiers:[jakarta.enterprise.inject.Default,jakarta.enterprise.inject.Any] 
from 
jar:file:/tmp/apache-tomee/lib/servlet-api.jar!/jakarta/servlet/http/HttpServletRequest.class
HttpServletRequest, WebBeansType:THIRDPARTY, Name:request, API 
Types:[jakarta.servlet.http.HttpServletRequest,com.sun.faces.cdi.RequestProducer],
 Qualifiers:[jakarta.enterprise.inject.Default,jakarta.enterprise.inject.Any] 
from 
jar:file:/tmp/apache-tomee/lib/servlet-api.jar!/jakarta/servlet/http/HttpServletRequest.class
        at 
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:200)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:269)
        ... 47 more
{quote}
 

I'll keep digging, but I'm not entirely sure how to resolve that at the moment 
(ideas appreciated!)


was (Author: jgallimore):
Did a bit of digging on this one, and it does look similar to TOMEE-4355. I 
tried changing the RequestProducer in Mojarra so it looks like this:

 

```

public class RequestProducer extends CdiProducer<HttpServletRequest> {

    /**
     * Serialization version
     */
    private static final long serialVersionUID = 1L;

    public RequestProducer(BeanManager beanManager) {
        super
                .name("request")
                .scope(RequestScoped.class)
                .beanClass(beanManager, HttpServletRequest.class)
                .types(HttpServletRequest.class)
                .create(e -> (HttpServletRequest) 
FacesContext.getCurrentInstance().getExternalContext().getRequest());
    }

}

```

 

i.e. adding in the Generic as opposed to <Object> on the class, and specifying 
.beanClass and .type

This, however, creates other conflicts:

```

    Caused by: org.apache.openejb.OpenEJBRuntimeException: 
org.apache.webbeans.exception.WebBeansDeploymentException: 
jakarta.enterprise.inject.AmbiguousResolutionException: There is more than one 
Bean with type jakarta.servlet.http.HttpServletRequest Qualifiers: 
[@jakarta.enterprise.inject.Default()]
for injection into Field Injection Point, field name :  request, Bean Owner : 
[BaseUrlProducer, WebBeansType:MANAGED, Name:null, API 
Types:[java.lang.Object,org.apache.tomee.security.cdi.openid.BaseUrlProducer], 
Qualifiers:[jakarta.enterprise.inject.Default,jakarta.enterprise.inject.Any]]
found beans: 
HttpServletRequest, WebBeansType:MANAGED, Name:null, API 
Types:[java.lang.Object,jakarta.servlet.ServletRequest,jakarta.servlet.http.HttpServletRequest],
 Qualifiers:[jakarta.enterprise.inject.Default,jakarta.enterprise.inject.Any] 
from 
jar:file:/tmp/apache-tomee/lib/servlet-api.jar!/jakarta/servlet/http/HttpServletRequest.class
HttpServletRequest, WebBeansType:THIRDPARTY, Name:request, API 
Types:[jakarta.servlet.http.HttpServletRequest,com.sun.faces.cdi.RequestProducer],
 Qualifiers:[jakarta.enterprise.inject.Default,jakarta.enterprise.inject.Any] 
from 
jar:file:/tmp/apache-tomee/lib/servlet-api.jar!/jakarta/servlet/http/HttpServletRequest.class
        at 
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:200)
        at 
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:269)
        ... 47 more

```

 

I'll keep digging, but I'm not entirely sure how to resolve that at the moment 
(ideas appreciated!)

> EL expressions in Jakarta Faces not working with Mojarra
> --------------------------------------------------------
>
>                 Key: TOMEE-4450
>                 URL: https://issues.apache.org/jira/browse/TOMEE-4450
>             Project: TomEE
>          Issue Type: Bug
>          Components: TomEE Core Server
>    Affects Versions: 10.0.0
>            Reporter: Markus Jung
>            Priority: Major
>         Attachments: mojarra-el.zip
>
>
> Reported via user list by Till Gräfenberg: 
> [https://lists.apache.org/thread/zf2oo293818kpcbtmln5g4c7jn1v4b4g] 
>  
> Following XHTML fails to render
> {code:java}
> <html xmlns="http://www.w3.org/1999/xhtml"; xmlns:h="jakarta.faces.html"> 
> <h:body><h:outputText
>         value="#{request.contextPath}"/></h:body></html>
>  {code}
> Exception:
> {code:java}
> 30-Jan-2025 12:57:32.008 SEVERE [http-nio-8080-exec-2] 
> com.sun.faces.application.view.FaceletViewHandlingStrategy.handleRenderException
>  Error Rendering View[/test.xhtml]
>         jakarta.el.PropertyNotFoundException: /test.xhtml @2,41 
> value="#{request.contextPath}": Property [contextPath] not found on type 
> [org.apache.webbeans.custom.Object$$OwbNormalScopeProxy6949990480]
>                 at 
> com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:75)
>                 at 
> jakarta.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:206)
>                 at 
> jakarta.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:175)
>                 at 
> jakarta.faces.component.UIOutput.getValue(UIOutput.java:134)
>                 at 
> com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:163)
>                 at 
> com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:303)
>                 at 
> com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:135)
>                 at 
> jakarta.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:586)
>                 at 
> jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1442)
>                 at 
> jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1438)
>                 at 
> jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1438)
>                 at 
> com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:449)
>                 at 
> com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:160)
>                 at 
> jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:125)
>                 at 
> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:93)
>                 at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:72)
>                 at 
> com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:150)
>                 at 
> jakarta.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:692)
>                 at 
> jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:449)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
>                 at 
> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
>                 at 
> org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:67)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
>                 at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
>                 at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
>                 at 
> org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
>                 at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
>                 at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
>                 at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
>                 at 
> org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)
>                 at 
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
>                 at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
>                 at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
>                 at 
> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
>                 at 
> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
>                 at 
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
>                 at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
>                 at 
> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
>                 at 
> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
>                 at 
> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
>                 at 
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
>                 at java.base/java.lang.Thread.run(Thread.java:840)
>         Caused by: jakarta.el.PropertyNotFoundException: Property 
> [contextPath] not found on type 
> [org.apache.webbeans.custom.Object$$OwbNormalScopeProxy6949990480]
>                 at 
> jakarta.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:261)
>                 at jakarta.el.BeanELResolver.property(BeanELResolver.java:330)
>                 at jakarta.el.BeanELResolver.getValue(BeanELResolver.java:99)
>                 at 
> com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:139)
>                 at 
> com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:164)
>                 at org.apache.el.parser.AstValue.getValue(AstValue.java:161)
>                 at 
> org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:152)
>                 at 
> org.apache.webbeans.el22.WrappedValueExpression.getValue(WrappedValueExpression.java:67)
>                 at 
> com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)
>                 ... 45 more {code}
> Probably similar to what we had with TOMEE-4355 a while ago



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to