hi david, imo it isn't really a big deal to scan all >bean archives<. if you really have a lot of classes which shouldn't be used as beans, just create a jar for them. (esp. i don't see #3 - you just need a single portable extension which calls AnnotatedType#getJavaClass during bootstrapping. e.g. codi uses it for @ProjectStageActivated and i guess one of the jboss extensions is/will be doing the same.)
however, we should fix at least OWB-475. regards, gerhard http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2011/1/10 David Jencks <[email protected]> > David Blevins and I have been hoping that it would be possible to avoid > loading all the classes in an application when "deploying" it into OWB. > Mark has been telling me that this won't work. > > It's pretty easy to scan the application and find all the classes with > relevant annotations and all the classes that are injected into something > using ASM so all the other classes aren't loaded. However I now see that > there's a BeanManager method > > public Set<Bean<?>> getBeans(Type beanType, Annotation... bindings) > > where you can pass in an arbitrary class and get the possible beans back. > This certainly means that just finding all the beans referenced in ways such > as the injection targets or having a name is not sufficient. I can think of > a couple ways to proceed that might help: > > 1. eagerly create and register Bean<X> for classes that are easy to > identify as above and lazily create Bean<X> for otherwise unidentifiable > beans on demand. I haven't found anything in the spec that says tis can't > be done but haven't looked very hard. > > 2. We can identify some classes during scanning that can't be beans, (e.g. > having only non-default constructors not annotated with @Inject) and exclude > only these from consideration. This would be pretty easy but is apt to load > many more classes than we'd like. > > 3. Modify the AbstractOWBBean and AnnotatedTypeImpl so they lazily load the > bean class. I haven't investigated, so maybe the bean class is needed > immediately. I wonder if it might not be needed immediately for beans with > no annotations. > > Thoughts or advice? > > thanks > david jencks > > > > > >
