[
https://issues.apache.org/jira/browse/OWB-895?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13748870#comment-13748870
]
Leonardo Uribe commented on OWB-895:
------------------------------------
Hi
I tried the latest snapshot
(apache-tomee-1.6.0-20130823.041201-155-webprofile.zip) and the problem was
fixed at some point between OWB 1.2.0 and 1.2.1-SNAPSHOT. But I notice another
different problem related to the producers. Suppose this producer method:
public class SimpleFlow implements Serializable
{
@Produces @FlowDefinition
public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
Note the base class is not defined as bean. If the code is deployed, it works
well with OWB and Weld but with Tomee configuration it throws this exception:
SEVERE: CDI Beans module deployment failed
java.lang.NullPointerException
at
sun.reflect.annotation.AnnotationInvocationHandler.memberValueEquals(AnnotationInvocationHandler.java:233)
at
sun.reflect.annotation.AnnotationInvocationHandler.equalsImpl(AnnotationInvocationHandler.java:204)
at
sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:59)
at com.sun.proxy.$Proxy37.equals(Unknown Source)
at
org.apache.webbeans.util.AnnotationUtil.isDeclaringClass(AnnotationUtil.java:68)
at
org.apache.webbeans.util.AnnotationUtil.getDeclaringClass(AnnotationUtil.java:85)
at
org.apache.webbeans.component.creation.BeanAttributesBuilder.defineScope(BeanAttributesBuilder.java:255)
at
org.apache.webbeans.component.creation.BeanAttributesBuilder$AnnotatedTypeBeanAttributesBuilder.defineScope(BeanAttributesBuilder.java:505)
at
org.apache.webbeans.component.creation.BeanAttributesBuilder.build(BeanAttributesBuilder.java:106)
at
org.apache.webbeans.config.BeansDeployer.defineManagedBean(BeansDeployer.java:923)
at
org.apache.webbeans.config.BeansDeployer.deploySingleAnnotatedType(BeansDeployer.java:637)
at
org.apache.webbeans.config.BeansDeployer.deployFromClassPath(BeansDeployer.java:567)
at
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:189)
at
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:187)
at
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:162)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:43)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:799)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:613)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1122)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:985)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:127)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
at
org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
org.apache.openejb.OpenEJBException: Creating application failed:
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:897)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:613)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1122)
at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:985)
at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:127)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1113)
at
org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1671)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: org.apache.openejb.OpenEJBRuntimeException: couldn't start owb
context
at
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:164)
at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:43)
at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:799)
... 19 more
Caused by: org.apache.openejb.OpenEJBRuntimeException:
java.lang.NullPointerException
at
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:190)
at
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:162)
... 21 more
Caused by: java.lang.NullPointerException
at
sun.reflect.annotation.AnnotationInvocationHandler.memberValueEquals(AnnotationInvocationHandler.java:233)
at
sun.reflect.annotation.AnnotationInvocationHandler.equalsImpl(AnnotationInvocationHandler.java:204)
at
sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:59)
at com.sun.proxy.$Proxy37.equals(Unknown Source)
at
org.apache.webbeans.util.AnnotationUtil.isDeclaringClass(AnnotationUtil.java:68)
at
org.apache.webbeans.util.AnnotationUtil.getDeclaringClass(AnnotationUtil.java:85)
at
org.apache.webbeans.component.creation.BeanAttributesBuilder.defineScope(BeanAttributesBuilder.java:255)
at
org.apache.webbeans.component.creation.BeanAttributesBuilder$AnnotatedTypeBeanAttributesBuilder.defineScope(BeanAttributesBuilder.java:505)
at
org.apache.webbeans.component.creation.BeanAttributesBuilder.build(BeanAttributesBuilder.java:106)
at
org.apache.webbeans.config.BeansDeployer.defineManagedBean(BeansDeployer.java:923)
at
org.apache.webbeans.config.BeansDeployer.deploySingleAnnotatedType(BeansDeployer.java:637)
at
org.apache.webbeans.config.BeansDeployer.deployFromClassPath(BeansDeployer.java:567)
at
org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:189)
at
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:187)
... 22 more
The curious part is that if I set it as an application scope bean:
@Named
@ApplicationScoped
public class SimpleFlow implements Serializable
{
@Produces @FlowDefinition
public Flow defineFlow(@FlowBuilderParameter FlowBuilder flowBuilder) {
The behavior is the same, if OWB is inside WEB-INF/lib it works, if is outside
it doesn't work.
I'll appreciate your help with this issue.
> BeforeBeanDiscovery.addAnnotatedType() calls does not work as expected when
> owb jars are deployed outside WEB-INF/lib folder
> ----------------------------------------------------------------------------------------------------------------------------
>
> Key: OWB-895
> URL: https://issues.apache.org/jira/browse/OWB-895
> Project: OpenWebBeans
> Issue Type: Bug
> Components: Context and Scopes, Injection and Lookup, Java EE
> Integration
> Affects Versions: 1.1.8
> Environment: Apache Tomee 1.5.2, OpenWebBeans 1.1.8
> Reporter: Leonardo Uribe
>
> I have been working on the CDI extension points of MyFaces Core 2.2.x,
> specially the part related to @ViewScoped and @FlowScoped annotations.
> The solution proposed and committed on the latest snapshot works with weld
> and openwebbeans. But on the way, I have found a problem when I tried to
> deploy a demo application in Tomee 1.5.2
> MyFaces jars has internally some beans that needs to be registered in CDI:
> - org.apache.myfaces.flow.cdi.FlowBuilderFactoryBean (deals with
> @FlowBuilderParameter and @FlowDefinition)
> - org.apache.myfaces.flow.cdi.FlowScopeBeanHolder (session scope bean that
> store flow scope)
> - org.apache.myfaces.cdi.view.ViewScopeBeanHolder (session scope bean that
> store view scope)
> And in the classes implementing Extension you can find some code like this to
> register the beans:
> void beforeBeanDiscovery(
> @Observes final BeforeBeanDiscovery event, BeanManager beanManager)
> {
> // Register FlowBuilderFactoryBean as a bean with CDI annotations, so
> the system
> // can take it into account, and use it later when necessary.
> AnnotatedType flowDiscoveryHelper =
> beanManager.createAnnotatedType(FlowBuilderFactoryBean.class);
> event.addAnnotatedType(flowDiscoveryHelper);
> }
> It works well as long as owb jars are located in WEB-INF/lib folder, but in
> Tomee, MyFaces and OWB jars are located in <tomee folder>/lib . In theory the
> code should work but it doesn't.
> The effect is the application fails because these beans are not registered on
> CDI environment.
> Suggestions are welcome.
--
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