Ошибка обслуживания таймера EJB - PullRequest
0 голосов
/ 11 апреля 2011

Я пытаюсь использовать службу таймера EJB, у меня есть класс с именем TimerBean, который содержит методы для планирования таймера и обработки тайм-аута, это реализует TimerBeanRemote класс интерфейса.

В другом сессионном компонентеУ меня есть следующее:

TimerBeanRemote service = (TimerBeanRemote) new InitialContext().lookup("TimerBean/remote");

Когда я пытаюсь запустить его на сервере, я получаю сообщение об ошибке:

javax.naming.NamingException: не удалось выполнить поиск для TimerBean / remote в SerialContext[Исключением корня является javax.naming.NameNotFoundException: TimerBean]

Есть идеи, почему он не может его найти?Спасибо!

1 Ответ

0 голосов
/ 12 апреля 2011

Исходя из ваших комментариев - если вы пытаетесь получить доступ к TimerBeanRemote в том же контейнере, то можете вставить ejb @Remote в свой сервлет или вспомогательный компонент JSF, иначе вы можете найти свой EJB через поиск JNDI.

Предположим, ваш TimerBean равен: com.mypackage.timer.TimerBeanRemote, тогда, согласно приведенному выше объяснению, вы можете либо ввести, либо выполнить поиск:

  1. Ввод
    public class MyServlet ...{<br><br> @EJB<br> com.mypackage.timer.TimerBeanRemote timerBean;<br> }

  2. JNDI-поиск:

Properties props = new Properties();<br> props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");<br> String[] serverDetails = server.split(":");<br> props.setProperty("org.omg.CORBA.ORBInitialHost", MyHost);<br> props.setProperty("org.omg.CORBA.ORBInitialPort", MyPort);<br></p> <pre><code>InitialContext ic = new InitialContext(props);<br> TimerBeanRemote timerBean = (TimerBeanRemote)ic.lookup("com.mypackage.timer.TimerBeanRemote");

Для получения более подробной информации вы можете прочитать следующие статьи: http://download.oracle.com/javaee/1.4/tutorial/doc/Session5.html

http://www.javabeat.net/articles/3-ejb-30-timer-services-an-overview-1.html

...