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
>