[ 
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

Reply via email to