2010-11-28 13 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:コンプ/ TimedFileDeletion - ジャワ: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"); 

Iは、JBoss-5 &を使用していますが、単にインタフェース名を与えて、検索する方法を一般化しています。

それに応じて修正することができます。

+0

ありがとうございました。ログの名前を調べ、その名前を使って動作させた。 – Alex

関連する問題