[jbossseam-issues] [JBoss JIRA] Updated: (JBSEAM-2430) JNDI lookup error when injecting a stateful bean into a stateful bean in glassfish

Pete Muir (JIRA) jira-events at lists.jboss.org
Wed Jan 30 05:47:59 EST 2008

     [ http://jira.jboss.com/jira/browse/JBSEAM-2430?page=all ]

Pete Muir updated JBSEAM-2430:

    Component/s: EJB3
                 Platform interoperability

> JNDI lookup error when injecting a stateful bean into a stateful bean in glassfish
> ----------------------------------------------------------------------------------
>                 Key: JBSEAM-2430
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-2430
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: EJB3, Platform interoperability
>            Reporter: Richard Hoffman
> Per Pete's request (http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4115521#4115521) I'm making a ticket about the problem I'm facing:
> Using glassfish, I'm trying to inject a stateful bean into a stateful bean...instead of describing my specific app and trying to explain exactly what I'm doing and why, I figured I'd demonstrate how to duplicate my problem using the jee5/booking example provided with Seam 2:
> 1.) Add the following to the top of HotelSearchingAction:
>    import org.jboss.seam.annotations.In;
>    .
>    .
>    @In(create=true)
>    private HotelBooking hotelBooking;
> 2.) Redeploy and run the booking app.
> 3.) Navigate to the Search page.  You should receive a "Could not instantiate Seam component: hotelBooking" error, which is caused by: "javax.naming.NameNotFoundException: No object bound to name java:comp/env/jboss-seam-jee5/HotelBookingAction/local"
> Now, granted, in this particular case, there really isn't any functional reason to do this injection, but it demonstrates the same problem I'm having on my particular application (where this kind of injection makes sense).  It is also worth noting that if you do the opposite injection (HotelSearching into HotelBookingAction), you have no problems.
> One way I found to get around this problem is to put a @Startup at the top of the HotelBookingAction bean, but I'm not sure why this is necessary.
> ---
> My theory as to what's going on is as follows...my apologies if I'm way off, heh:
> The page flow of the booking app is Login -> Search (which uses HotelSearchingAction) -> Book Hotel (which uses HotelBookingAction).  So, HotelSearchingAction gets (instantiated?) put in the JNDI tree first, as the user progresses through the app.  The problem is, when you inject HotelBookingAction into HotelSearchingAction, HotelBookingAction needs to be created when HotelSearchingAction is first used, but it hasn't been put in the JNDI tree yet, so we get a lookup error.  And of course, if you put @Startup on HotelBookingAction, HotelBookingAction is now in the JNDI tree way before HotelSearchingAction needs it, so the error is gone.  But again, I'm not sure why @Startup should be necessary to inject a not-yet-used stateful bean into a stateful bean.
> Thanks in advance to anyone who works on this ticket.  :-)

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the seam-issues mailing list