Не удается найти EJB3 из ServletContextListener в JBoss 4.2.3 - PullRequest
0 голосов
/ 28 ноября 2010

Я создал таймер EJB с локальным интерфейсом, и я не могу выполнить поиск JNDI для него из ServletContextListener.

Вот часть кода 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 / TimedFileDeletion - Java: Comp / TimedFileDeletion - Java: TimedFileDeletion - TimedFileDeletion

Во всех случаях я получал исключение javax.naming.NameNotFoundException.

Любой совет будет оценен.

1 Ответ

0 голосов
/ 28 ноября 2010

При запуске 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 и использовал обобщенный метод для поиска, просто давая имя интерфейса.

Вы можете изменить его соответственно.

...