Github user rmannibucau commented on a diff in the pull request:

    https://github.com/apache/cxf/pull/181#discussion_r84271592
  
    --- Diff: 
integration/cdi/src/main/java/org/apache/cxf/cdi/JAXRSCdiResourceExtension.java 
---
    @@ -74,16 +74,16 @@
                 featureBeans.add((Bean< ? extends Feature >)event.getBean());
             } else if (CdiBusBean.CXF.equals(event.getBean().getName())
                     && 
Bus.class.isAssignableFrom(event.getBean().getBeanClass())) {
    -            busBean = event.getBean();
    +            hasBus = true;
             }
         }
     
         public void load(@Observes final AfterDeploymentValidation event, 
final BeanManager beanManager) {
    +        // no need of creational context, it only works for app scoped 
instances anyway
    +        final Bean<?> busBean = 
beanManager.resolve(beanManager.getBeans(CdiBusBean.CXF));
             bus = (Bus)beanManager.getReference(
    --- End diff --
    
    There is nothing in the spec about Bean<?> stability (equals/hashCode). 
OpenWebBeans wraps all user beans (added through addBean(userBean)). For that 
reason capturing the bean (collect) can give you the wrong reference. Then if 
you use this one and not the CDI context one (from resolve) then you get 2 
different Bean and therefore 2 different instances.
    
    So concretely you should not use a bean not coming from the bean manager to 
be safe.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to