camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brad Johnson <brad.john...@mediadriver.com>
Subject Re: Loading all beans before the Camel Context starts
Date Wed, 10 Aug 2016 19:13:56 GMT
If you don't need to initialized them you could override the start like
that but then have a verify method.  That would make sure you aren't
inadvertently changing any behavior.

@Override
public void start() throws Exception{

   super.start();
   verifyBeans();
}

private void verifyBeans()
{
    verify(myBean1);
    verify(myBean2).
}

private void verify(Object o)
{
    if(o==null) throw new RuntimeException("Bean not found at start up.");

}

I'm curious as to how or where you're overriding the CamelContext.  Curious
because I've always used Blueprint with Fuse and not CDI and only now
looking at CDI with the latest version of Fuse which is due soon.


Brad

On Wed, Aug 10, 2016 at 2:00 PM, Rajith Muditha Attapattu <
rajith77@gmail.com> wrote:

> I'm using Camel 2.15 bcos thats the version coming Fuse 6.2.1
> But my understanding is that CDI events are not supported until 2.17
>
> What's the drawback of overriding start() ?
>
> On Wed, Aug 10, 2016 at 2:33 PM, Antonin Stefanutti <antonin@stefanutti.fr
> >
> wrote:
>
> > One alternative is to observe for the CamelContextStartingEvent that’s
> > fired before the corresponding Camel contexts get started, e.g.:
> >
> > void initMyBeansBeforeContextStart(@Observes CamelContextStartingEvent
> > event, MyBean bean) {
> >     bean.init();
> > }
> >
> > Either method argument or class field injection will work. And that
> avoids
> > having to override the start method on the context.
> >
> > You can find more information in: http://camel.apache.org/cdi.html#CDI-
> > CameleventstoCDIevents
> >
> > Antonin
> >
> > > On 10 Aug 2016, at 19:48, Rajith Muditha Attapattu <rajith77@gmail.com
> >
> > wrote:
> > >
> > > I'm using CDI and want to make sure all my beans are loaded before the
> > > context and properly initialized.
> > >
> > > I have them as attributes in my CamelContext class with @Inject.
> > >
> > > However I override the start method in the context to make sure I call
> > the
> > > various initi methods for those beans to make sure they are loaded and
> > > ready when the routes start.
> > >
> > > @Override
> > > public void start() throws Exception{
> > >   myBean1.init();
> > >   myBean2.init().
> > >   super.start();
> > > }
> > >
> > > Is this advisable ? is there a better way to do this ?
> > >
> > > Regards,
> > >
> > > Rajith Muditha Attapattu <http://rajith.2rlabs.com/>
> >
> >
>
>
> --
> Regards,
>
> Rajith Muditha Attapattu <http://rajith.2rlabs.com/>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message