2010-11-28 32 views
0

我已經創建了一個具有本地接口的EJB定時器,並且我無法從ServletContextListener中爲它執行JNDI查找。無法從JBoss 4.2.3中的ServletContextListener查找EJB3

這裏是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) { 
    .... 
    } 
} 

這裏是本地接口:

public interface TimedFileDeletionBeanLocal { 

public void startTimer(); 

public boolean isItRunning(); 
} 

而這裏的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) { 

    } 
} 

對於查找我也使用以下字符串,但沒有一個工作: - java:comp/env/TimedF ileDeletion - java的:COMP/TimedFileDeletion - java的:TimedFileDeletion - TimedFileDeletion

在所有情況下,我得到一個javax.naming.NameNotFoundException。

任何意見,將不勝感激。

回答

0

啓動JBoss時,它會記錄所有本地/遠程接口&其jndi配置。

JBoss的啓動日誌:

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 

查找:

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

我使用JBoss的5 &已經概括爲查找方法,只是給接口名稱。

您可以相應地修改它。

+0

非常感謝。我在日誌中查找名稱,使用它的名稱。 – Alex 2010-11-29 18:32:11

相關問題