[weld-dev] How to avoid classes being picked as managed beans?

Dan Allen dan.j.allen at gmail.com
Wed Mar 9 15:30:05 EST 2011


On Wed, Mar 9, 2011 at 11:30, Jason Porter <lightguard.jp at gmail.com> wrote:

> On Wed, Mar 9, 2011 at 09:03, aalmiray <aalmiray at yahoo.com> wrote:
> > Hello guys. I'm new to Weld and CDI, perhaps the subject of this message
> is a
> > bit obvious to some of you but for the life of me couldn't find a
> portable
> > solution to the following problem: Weld will pick up all classes of an
> > application (found in a single jar that contains an empty beans.xml
> file),
> > however I would like the container to cherry pick a set of classes based
> on
> > some criteria (package name, class name convention, annotation, etc).
> >
> > I've seen that Weld has an extension (non-standard) that allows classes
> to
> > be annotated with @Veto. It works fine but it poses to additional
> problems:
> > - @Veto is Weld specific
>
> The annotation is specific to Weld (hopefully will make it into the
> CDI 1.1 spec), but the way it works is not.
>

Two corrections :) @Veto is part of Seam (Seam Solder), not Weld. Also, it
is portable, as it's based on the portable extension facility in CDI.

Since you can write your own extensions, the solutions to your question are
boundless. i can give you some other starting points to consider.

Instead of including beans.xml, which will automatically cause all candidate
types to be picked up as beans, you can go the other route and leave out
beans.xml, and register beans explicitly. Here's an example:

public class ManualBeanRegistrationExtension implements Extension {
    public void registerBeans(@Observes BeforeBeanDiscovery event,
BeanManager bm) {

 event.addAnnotatedType(bm.createAnnotatedType(BeanClassToRegister.class));
    }
}

Another approach is to use Weld's scanning configuration. That is a
non-portable solution, though, so you'd have weigh that. If I'm not
mistaken, that feature is being discussed for CDI 1.1.

http://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html/configure.html#d0e5767

-Dan

-- 
Dan Allen
Principal Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597

http://www.google.com/profiles/dan.j.allen#about
http://mojavelinux.com
http://mojavelinux.com/seaminaction
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20110309/db2d487c/attachment-0001.html 


More information about the weld-dev mailing list