Uploaded image for project: 'OpenWebBeans'
  1. OpenWebBeans
  2. OWB-616

javax.el.ExpressionFactory has final methods! CDI doesn't allow that. - Test on final **PRIVATE** methods too?

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 1.0.0
    • 1.1.2
    • Java EE Integration
    • 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.

      Attachments

        Activity

          People

            struberg Mark Struberg
            bardioc Heiko Kopp
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: