You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Jay McHugh <ja...@gmail.com> on 2008/05/14 20:52:23 UTC
Question on letting several EJB3 SLSB timer beans share one interface class
(This will probably end up appearing twice eventually - sorry)
Hello all,
I have about 25 (currently - will probably increase over time) timer beans
that really only need to expose the method to schedule them.
But I haven't been able to figure out how to share one interface class and
still be able to inject the correct, particular timer out of the 25
different timer classes.
Is this possible/has anyone done anything like this?
Thanks,
Jay
Re: Question on letting several EJB3 SLSB timer beans share one interface
class
Posted by "Jay D. McHugh" <ja...@gmail.com>.
Hello again.
Just in case someone else needs to do this. And, I must say that it is
probably almost always a bad thing to do. In most cases, the need to
have the exact same interface exposed on a range of classes that perform
completely different functions should be rare. I just happen to have a
block of
Here is how you would have several session bean classes that utilize the
same interface class:
1) Create the one interface class.
2) Create the multiple bean classes implementing the interface class.
Here is where it gets interesting (not particularly interesting though)
3) Inject an instance of your bean using the following syntax:
@EJB(beanName="SpecificBeanImplementationClass") private
GenericInterface specificBeanInstance;
That should have all been on one line, but it was too long so it
auto-wrapped. And of course the pretend names should be replaced with
your particular class, interface, and instance names.
Maybe this might help someone else,
Jay
Jay McHugh wrote:
> (This will probably end up appearing twice eventually - sorry)
> Hello all,
>
> I have about 25 (currently - will probably increase over time) timer beans
> that really only need to expose the method to schedule them.
>
> But I haven't been able to figure out how to share one interface class and
> still be able to inject the correct, particular timer out of the 25
> different timer classes.
>
> Is this possible/has anyone done anything like this?
>
>
> Thanks,
>
> Jay
>
Re: Question on letting several EJB3 SLSB timer beans share one interface class
Posted by David Blevins <da...@visi.com>.
Good post, Jay!
On May 14, 2008, at 6:51 PM, Jay D. McHugh wrote:
> Hello again.
>
> (This is a resend because I left out part of my first paragraph by
> accident)
>
> Just in case someone else needs to do this. And, I must say that it
> is probably almost always a bad thing to do. In most cases, the
> need to have the exact same interface exposed on a range of classes
> that perform completely different functions should be rare.
Just a note that having several beans share the same business
interface isn't a bad thing to do by any stretch.
Also to note that with 2.1.1 you should be able to do quite a lot more
with subclassing than you could previously. Not sure if that helps
your exact scenario, but thought it might be a good addition to the
thread.
-David
> I just happen to have a block of utility classes that do data
> cleanup for me. They are too processor/disk intensive to be run all
> at the same time so I implemented them as a series of timer beans
> that chain together. Since I may need to add or remove new
> processes at a later date - I wanted to have a generic interface to
> work with so that I could add/delete/swap the processes without
> having to worry about the exact action that the timer would be
> performing.
>
> Here is how you would have several session bean classes that utilize
> the same interface class:
>
> 1) Create the one interface class.
> 2) Create the multiple bean classes implementing the interface class.
>
> Here is where it gets interesting (not particularly interesting
> though)
> 3) Inject an instance of your bean using the following syntax:
>
> @EJB(beanName="SpecificBeanImplementationClass") private
> GenericInterface specificBeanInstance;
>
> That should have all been on one line, but it was too long so it
> auto-wrapped. And of course the pretend names should be replaced
> with your particular class, interface, and instance names.
>
> Maybe this might help someone else,
>
> Jay
>
> Jay McHugh wrote:
>> (This will probably end up appearing twice eventually - sorry)
>> Hello all,
>> I have about 25 (currently - will probably increase over time)
>> timer beans
>> that really only need to expose the method to schedule them.
>> But I haven't been able to figure out how to share one interface
>> class and
>> still be able to inject the correct, particular timer out of the 25
>> different timer classes.
>> Is this possible/has anyone done anything like this?
>> Thanks,
>> Jay
>
Re: Question on letting several EJB3 SLSB timer beans share one interface
class
Posted by "Jay D. McHugh" <ja...@gmail.com>.
Hello again.
(This is a resend because I left out part of my first paragraph by accident)
Just in case someone else needs to do this. And, I must say that it is
probably almost always a bad thing to do. In most cases, the need to
have the exact same interface exposed on a range of classes that perform
completely different functions should be rare. I just happen to have a
block of utility classes that do data cleanup for me. They are too
processor/disk intensive to be run all at the same time so I implemented
them as a series of timer beans that chain together. Since I may need
to add or remove new processes at a later date - I wanted to have a
generic interface to work with so that I could add/delete/swap the
processes without having to worry about the exact action that the timer
would be performing.
Here is how you would have several session bean classes that utilize the
same interface class:
1) Create the one interface class.
2) Create the multiple bean classes implementing the interface class.
Here is where it gets interesting (not particularly interesting though)
3) Inject an instance of your bean using the following syntax:
@EJB(beanName="SpecificBeanImplementationClass") private
GenericInterface specificBeanInstance;
That should have all been on one line, but it was too long so it
auto-wrapped. And of course the pretend names should be replaced with
your particular class, interface, and instance names.
Maybe this might help someone else,
Jay
Jay McHugh wrote:
> (This will probably end up appearing twice eventually - sorry)
> Hello all,
>
> I have about 25 (currently - will probably increase over time) timer beans
> that really only need to expose the method to schedule them.
>
> But I haven't been able to figure out how to share one interface class and
> still be able to inject the correct, particular timer out of the 25
> different timer classes.
>
> Is this possible/has anyone done anything like this?
>
>
> Thanks,
>
> Jay
>