| Author |
@Resource For A Non-EJB
|
Mark Garland
Ranch Hand
Joined: Nov 11, 2006
Posts: 226
|
|
Hi all,
I have written a standard Java class (not an EJB) which I have packaged as a JAR within an EAR. This Java Class will put things on a queue when requested.
Rather than perform a manual JNDI lookup for the Queue and Connection Factory, I used the @Resource annotation, and assumed that because it was within a Container (GlassFish) that this would work.
I am pretty confident that the annotation/queue/connectionfactory is set up correctly because the deployment through NetBeans fails otherwise.
However, I keep getting a NullPointerException when the code is executed, so the @Resource annotation isn't working.
Does the @Resource annotation only work in EJBs? Or is this a GlassFish quirk?
Thanks,
MG
|
28/06/06 - SCJP - 69%, 05/06/07 - SCWCD - 92%, 28/02/08 - IBM DB2 v9 Fundamentals (Exam 730) - 87%, 18/11/08 - IBM DB2 v9 DBA (Exam 731) - 89%, 26/02/11 - SCBCD - 88%
|
 |
Jaikiran Pai
Marshal
Joined: Jul 20, 2005
Posts: 8142
|
|
Mark Garland wrote:
Does the @Resource annotation only work in EJBs? Or is this a GlassFish quirk?
@Resource and other similar EE injection constructs work only with managed classes like servlets, EJBs, managed beans etc. They won't work with plain Java classes.
|
[My Blog] [JavaRanch Journal]
|
 |
Mark Garland
Ranch Hand
Joined: Nov 11, 2006
Posts: 226
|
|
Hi Jaikiran,
Thanks for your quick and accurate reply.
I've removed the @Resource annotations and put in a manual JNDI lookup, and all is working great - thanks!
The @Resource annotation not working in a POJO which is sat in a container feels a bit of a shame if honest. A lot of the annotations are great for reducing repeating boilerplate code, yet I'd be forced to convert my POJOs to EJBs if I wanted to use them even though the container is capable. Just feels like a missed opportunity to me.
Thanks once again for your help - much appreciated.
MG
|
 |
Jaikiran Pai
Marshal
Joined: Jul 20, 2005
Posts: 8142
|
|
Mark Garland wrote: A lot of the annotations are great for reducing repeating boilerplate code, yet I'd be forced to convert my POJOs to EJBs if I wanted to use them even though the container is capable. Just feels like a missed opportunity to me.
Java EE6 introduces Managed Beans which plugs this gap. A Managed Bean is a POJO which can have injection, lifecycle callbacks and interceptors. It however doesn't have any transactional, security related semantics unlike EJBs - which is understandable.
|
 |
Jayavardhan geepi
Ranch Hand
Joined: Jul 21, 2010
Posts: 66
|
|
Hi,
I tried to use resource injection in a servlet with name parameter set to jndi name (which works in manual look up) in JBoss 4.2.x.x.
It is not working. Properties are null at run time.
|
 |
 |
|
|
subject: @Resource For A Non-EJB
|
|
|