Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[EJB3] jndi lookups

Pagina: 1
Acties:

  • jhollez
  • Registratie: Oktober 2004
  • Laatst online: 29-09 13:15
Bij het migreren van JBoss naar Glassfish ondervind ik problemen bij de JNDI lookups.
De dependancy injection werkt zonder probleem (mbv @EJB), maar een echte lookup gaat niet, en dat is nodig voor helper klassen.

Ik heb de migratie faq gevolgd en ben gekomen tot hetvolgende

code:
1
2
3
4
5
6
7
8
9
10
11
12
@Stateless(name="ContentFetcherBean")
public class ContentFetcherBean implements ContentFetcherLocal {
...

--
en voor de lookup:

Context c = new InitialContext();
ContentFetcherLocal cf = (ContentFetcherLocal) c.lookup("java:comp/env/ContentFetcherBean");

Maar dan krijg ik volgende exceptie:
javax.naming.NameNotFoundException: No object bound to name java:comp/env/ContentFetcherBean


Aangezien de DI werkt vanuit servlets of andere beans weet ik zeker dat deze goed gedeployed zijn. Het is dus enkel voor die helper klassen dat ik het niet aan de praat krijg.

  • flowerp
  • Registratie: September 2003
  • Laatst online: 11-09 18:20
De JNDI namen zijn natuurlijk dikwijls AS specificiek (helaas). Je kunt echter van elke node in de JNDI tree gewoon een listing opvragen via de Java APIs. Heb je dat al geprobeerd?

It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.


  • Sihaya
  • Registratie: Juni 2001
  • Niet online

Sihaya

Pasfoto:

Probeer eens de @EJB annotatie toe te voegen op de class definitie van de session bean die uiteindelijk je helper class aanroept. Bijvoorbeeld:

Java:
1
2
3
@Stateless(name="ContentFetcherBean")
@EJB(name="ContentFetcherBean", beanInterface=ContentFetchLocal.class)
public class ContentFetcherBean implements ContentFetcherLocal {


Vervolgens kun je in de helper class de bean vinden via een lookup naar "java:comp/env/ContentFetcherBean". Een alternatief zou volgens mij zijn het gebruik van een bean met een @Remote interface, maar dit is denk ik niet wat je wilt.

signature has expired


  • jhollez
  • Registratie: Oktober 2004
  • Laatst online: 29-09 13:15
Sorry voor het late antwoord, maar was ondertussen op vakantie ;)

@EJB toevoegen aan die sessie bean en dan lokaal opvragen werkt :) Bedankt.