tandraschko / quarkus-myfaces

26 stars 6 forks source link

Error when using String producer on a page #7

Closed rmpestano closed 5 years ago

rmpestano commented 5 years ago

I've created the following producer method in LazyView bean:

    @Named("myString")
    @Produces
    @ApplicationScoped
    public String produceString() {
        return System.currentTimeMillis() + "";
    }

And on the page I tried to output the value:

<h:outputText value="#{myString}"/>

And get the following exception when accessing the page:

java.lang.VerifyError: Cannot inherit from final class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
        at io.quarkus.runner.RuntimeClassLoader.findClass(RuntimeClassLoader.java:192)
        at io.quarkus.runner.RuntimeClassLoader.loadClass(RuntimeClassLoader.java:175)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at io.quarkus.myfaces.showcase.view.LazyView_ProducerMethod_produceString_6d3fecfb4dbf52d039c5123eb59966d7af1fbc13_Bean$$function$$18.get(Unknown Source)
        at io.quarkus.arc.LazyValue.get(LazyValue.java:42)
        at io.quarkus.myfaces.showcase.view.LazyView_ProducerMethod_produceString_6d3fecfb4dbf52d039c5123eb59966d7af1fbc13_Bean.get(Unknown Source)
        at io.quarkus.myfaces.showcase.view.LazyView_ProducerMethod_produceString_6d3fecfb4dbf52d039c5123eb59966d7af1fbc13_Bean.get(Unknown Source)
        at io.quarkus.arc.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:324)
        at io.quarkus.arc.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:336)
        at io.quarkus.arc.BeanManagerImpl.getReference(BeanManagerImpl.java:74)
        at io.quarkus.myfaces.runtime.spi.QuarkusCdiELResolver.getValue(QuarkusCdiELResolver.java:88)
        at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:62)
        at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:94)
        at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:93)
        at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:336)
        at javax.faces.component.UIOutput.getValue(UIOutput.java:69)
        at org.apache.myfaces.renderkit.RendererUtils.getValue(RendererUtils.java:327)
        at org.apache.myfaces.renderkit.RendererUtils.getStringValue(RendererUtils.java:178)
        at org.apache.myfaces.renderkit.html.base.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:86)
        at org.apache.myfaces.renderkit.html.base.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:75)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:657)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:538)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:534)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:534)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:534)
        at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1779)
        at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:313)
        at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
        at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:233)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.quarkus.undertow.runtime.UndertowDeploymentTemplate$7$1$1.call(UndertowDeploymentTemplate.java:469)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleRequest(ServletInitialHandler.java:197)
        at io.undertow.server.handlers.HttpContinueReadHandler.handleRequest(HttpContinueReadHandler.java:65)
        at io.quarkus.undertow.runtime.UndertowDeploymentTemplate$1.handleRequest(UndertowDeploymentTemplate.java:104)
        at io.undertow.server.handlers.CanonicalPathHandler.handleRequest(CanonicalPathHandler.java:49)
        at io.quarkus.undertow.deployment.devmode.UndertowHotReplacementSetup.handleHotDeploymentRequest(UndertowHotReplacementSetup.java:77)
        at io.quarkus.undertow.deployment.devmode.UndertowHotReplacementSetup$1$1.handleRequest(UndertowHotReplacementSetup.java:56)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:364)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
        at io.quarkus.runtime.CleanableExecutor$CleaningRunnable.run(CleanableExecutor.java:243)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2011)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1538)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1395)
        at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
        at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:32)
        at java.lang.Thread.run(Thread.java:748)
        at org.jboss.threads.JBossThread.run(JBossThread.java:479)
java.lang.VerifyError: io/quarkus/myfaces/showcase/view/LazyView_ProducerMethod_produceString_6d3fecfb4dbf52d039c5123eb59966d7af1fbc13_ClientProxy
        at io.quarkus.myfaces.showcase.view.LazyView_ProducerMethod_produceString_6d3fecfb4dbf52d039c5123eb59966d7af1fbc13_Bean$$function$$18.get(Unknown Source)
        at io.quarkus.arc.LazyValue.get(LazyValue.java:42)
        at io.quarkus.myfaces.showcase.view.LazyView_ProducerMethod_produceString_6d3fecfb4dbf52d039c5123eb59966d7af1fbc13_Bean.get(Unknown Source)
        at io.quarkus.myfaces.showcase.view.LazyView_ProducerMethod_produceString_6d3fecfb4dbf52d039c5123eb59966d7af1fbc13_Bean.get(Unknown Source)
        at io.quarkus.arc.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:324)
        at io.quarkus.arc.ArcContainerImpl.beanInstanceHandle(ArcContainerImpl.java:336)
        at io.quarkus.arc.BeanManagerImpl.getReference(BeanManagerImpl.java:74)
        at io.quarkus.myfaces.runtime.spi.QuarkusCdiELResolver.getValue(QuarkusCdiELResolver.java:88)
        at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:62)
        at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:94)
        at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:93)
        at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:336)
        at javax.faces.component.UIOutput.getValue(UIOutput.java:69)
        at org.apache.myfaces.renderkit.RendererUtils.getValue(RendererUtils.java:327)
        at org.apache.myfaces.renderkit.RendererUtils.getStringValue(RendererUtils.java:178)
        at org.apache.myfaces.renderkit.html.base.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:86)
        at org.apache.myfaces.renderkit.html.base.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:75)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:657)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:538)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:534)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:534)
        at javax.faces.component.UIComponentBase.encodeAll(UIComponentBase.java:534)
        at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1779)
        at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:313)
        at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:116)
        at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:233)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)

I don't know if it is a Quarkus or MyFaces issue because it works on Wildfly and Payara, need to test on Tomee to see if it a MyFaces issue.

tandraschko commented 5 years ago

Looks like a quarkus issue but yes, please try TomEE before

rmpestano commented 5 years ago

On Tomee I get a similar issue on startup:

09-Jun-2019 07:54:48.408 SEVERE [http-nio-8080-exec-4] org.apache.openejb.cdi.OpenEJBLifecycle.startApplication CDI Beans module deployment failed
    org.apache.webbeans.exception.WebBeansDeploymentException: javax.enterprise.inject.UnproxyableResolutionException: WebBeans with api type with normal scope must be proxyable.
java.lang.String is a final class! CDI doesn't allow to proxy that.
        at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:365)
        at org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
        at org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:252)
        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:43)
        at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:965)
....
java.lang.String is a final class! CDI doesn't allow to proxy that.
        at org.apache.webbeans.util.InjectionExceptionUtil.createUnproxyableResolutionException(InjectionExceptionUtil.java:44)
        at org.apache.webbeans.config.DeploymentValidationService.validateProxyable(DeploymentValidationService.java:143)
        at org.apache.webbeans.component.creation.ProducerMethodBeansBuilder.defineProducerMethods(ProducerMethodBeansBuilder.java:103)
        at org.apache.webbeans.config.BeansDeployer.defineManagedBean(BeansDeployer.java:1990)

will close the issue here because it is a CDI/OWB thing.