2010-11-28 3 views
0

J'ai créé un temporisateur EJB avec une interface locale et je ne peux pas effectuer de recherche JNDI à partir d'un ServletContextListener.Impossible de rechercher EJB3 à partir de ServletContextListener dans JBoss 4.2.3

Voici une partie du code EJB:

@Stateless 
@LocalBinding(jndiBinding = "TimedFileDeletion") 
public class TimedFileDeletionBean implements TimedFileDeletionBeanLocal { 

@Resource 
    TimerService timerService; 
private String timerInfo = "FileDeletionTimer"; 

    public void startTimer() { 
    .... 
    } 

    public boolean isItRunning() { 
    .... 
    } 

    @Timeout 
    public void timeout(Timer timer) { 
    .... 
    } 
} 

Voici l'interface locale:

public interface TimedFileDeletionBeanLocal { 

public void startTimer(); 

public boolean isItRunning(); 
} 

Et voici le ServletContextListener:

public class StartupEventHandler implements ServletContextListener { 

TimedFileDeletionBeanLocal timedFileDeletionBeanLocal; 

    public StartupEventHandler() { 
    try { 
    InitialContext ic = new InitialContext(); 
    timedFileDeletionBeanLocal = (TimedFileDeletionBeanLocal) ic.lookup("java:comp/env/ejb/TimedFileDeletion"); 

    } catch (NamingException e) { 
    e.printStackTrace(); 
    } 
    } 

    public void contextInitialized(ServletContextEvent arg0) { 
     if(!timedFileDeletionBeanLocal.isItRunning()) { 
     timedFileDeletionBeanLocal.startTimer(); 
     } 
    } 

    public void contextDestroyed(ServletContextEvent arg0) { 

    } 
} 

Pour la recherche I aussi utilisé les chaînes suivantes, mais aucune des travaillés: - java: comp/env/TimedF ileDeletion - java: comp/TimedFileDeletion - java: TimedFileDeletion - TimedFileDeletion

Dans tous les cas, je recevais un javax.naming.NameNotFoundException.

Tout conseil serait apprécié.

Répondre

0

Lors du démarrage de JBoss, il enregistre toutes les interfaces locales/distantes & leur configuration jndi.

démarrage JBoss journal:

15:26:47,394 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI: 

hrms/AccountSummarySessionBean/local - EJB3.x Default Local Business Interface 
hrms/AccountSummarySessionBean/local-com.cc.hrms.bl.accounts.generalaccount.session.AccountSummarySessionBeanLocal - EJB3.x Local Business Interface 

Recherche:

initialCtx.lookup("hrms/AccountSummarySessionBean/local-com.cc.hrms.bl.accounts.generalaccount.session.AccountSummarySessionBeanLocal"); 

J'utilise JBoss 5-& ont méthode généralisée pour la recherche, tout en donnant le nom de l'interface.

Vous pouvez le modifier en conséquence.

+0

Merci beaucoup. J'ai regardé le nom dans les journaux, j'ai utilisé ce nom. – Alex

Questions connexes