Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
1.0.0
-
IBM WebSphere Application Server 8.0.0
Description
When implementing seam-solder on WAS 8.0 one gets the following exception:
javax.el.ExpressionFactory has final methods! CDI doesn't allow that.
at org.apache.webbeans.util.InjectionExceptionUtils.throwUnproxyableResolutionException(InjectionExceptionUtils.java:39)
at org.apache.webbeans.util.WebBeansUtil.checkUnproxiableApiType(WebBeansUtil.java:2084)
at org.apache.webbeans.config.DefinitionUtil.createProducerComponent(DefinitionUtil.java:688)
at org.apache.webbeans.config.DefinitionUtil.createProducerComponents(DefinitionUtil.java:652)
at org.apache.webbeans.config.DefinitionUtil.defineProducerMethods(DefinitionUtil.java:625)
at org.apache.webbeans.component.creation.AbstractInjectedTargetBeanCreator.defineProducerMethods(AbstractInjectedTargetBeanCreator.java:142)
at org.apache.webbeans.util.WebBeansUtil.defineManagedBean(WebBeansUtil.java:3050)
at org.apache.webbeans.config.BeansDeployer.defineManagedBean(BeansDeployer.java:881)
at org.apache.webbeans.config.BeansDeployer.deploySingleAnnotatedType(BeansDeployer.java:536)
at org.apache.webbeans.config.BeansDeployer.deployFromClassPath(BeansDeployer.java:482)
at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:171)
at org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:124)
at org.apache.webbeans.web.lifecycle.WebContainerLifecycle.startApplication(WebContainerLifecycle.java:78)
at com.ibm.ws.webbeans.common.CommonLifeCycle.startApplication(CommonLifeCycle.java:106)
at com.ibm.ws.webbeans.services.JCDIServletContainerInitializer.onStartup(JCDIServletContainerInitializer.java:85)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initializeServletContainerInitializers(WebAppImpl.java:609)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:405)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
It turns out, that the class javax.el.ExpressionFactory shipped with the IBM Application Server contains a private final method called 'getClassNameSysProp'. This is the method org.apache.webbeans.util.WebBeansUtil.checkUnproxiableApiType() respectively ClassUtil.isFinal() complains about.
Question here is: Is CD really preventing you to define private final methods or should this be reduced to public methods only?
Thanks for clarification.