Hi Joe/Rohit,

Thanks for your feedback. 

After looking into this issue further I believe my problem is due to an 
openwebbeans spec compliance issue. In section 11.5.1. of JSR 299 it states:

addAnnotatedType() adds a given AnnotatedType to the set of types which will be 
scanned during bean discovery.

However the addAdditionalAnnotatedType method of the BeanManagerImpl 
(https://svn.apache.org/repos/asf/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java)
 simply adds the types to a private list and the values are never acted upon. I 
tested out my same extension code in weld and it worked as expected.

I have created issue OWB-489 in response to my findings.

Thanks!

Aaron
 

--- On Tue, 11/9/10, Joseph Bergmark <[email protected]> wrote:

From: Joseph Bergmark <[email protected]>
Subject: Re: Standalone extension and manual bean discovery
To: [email protected]
Date: Tuesday, November 9, 2010, 4:07 PM

Another option to feed classes into OWB would be to implement your own 
ScannerService (from the openwebbeans-spi project) and pass those classes in 
from getBeanClasses.  If you want to prevent a scan, you may wish to do this 
anyway and return an empty list.

You will need to provide your own openwebbeans.properties file to overwrite the 
default ScannerService.
Sincerely,
Joe

On Tue, Nov 9, 2010 at 4:38 PM, Rohit Kelapure <[email protected]> wrote:

Aaron,
Does 
import org.apache.webbeans.container.BeanManagerImpl;
((BeanManagerImpl) lifecycle.getBeanManager()).getComponents();

return a different set of beans ?
--Thanks,Rohit
On Tue, Nov 9, 2010 at 10:38 AM, Aaron Anderson <[email protected]> wrote:


Hi,

I am writing a standalone application outside of JavaEE and I would like to use 
OpenWebBeans for dependency injection. I have discovered the standalone sample 
and I am able to boot up my own standalone environment.



I do not wish to use the automatic bean discovery method but instead wish to 
manually control which beans are exposed to the container. In JavaEE I would 
set the metadata-complete flag to false but I am not sure if there is a SE 
equivalent. In my application I have not included a beans.xml file but instead 
I have written a simple extension that observes the BeforeBeanDiscovery event 
and then manually adds all the beans I desire to be managed:



public void beforeBeanDiscovery (@Observes BeforeBeanDiscovery bbd, BeanManager 
bm){
  bbd.addAnnotatedType(bm.createAnnotatedType(MyBean.class));
} 

I thought this
 would be sufficient to add my class for discovery but after the lifecycle is 
started and I dump all the beans using

lifecycle.getBeanManager().getBeans(Object.class, AnnotationLiteral<Any>(){});

only the standard CDI classes are present. Any idea of what I am doing wrong or 
if there a superior way to accomplish my goal of manually "wiring" beans 
together in a CDI extension?



 Thanks,

Aaron





Reply via email to