EJB计时器服务错误

时间:2011-04-11 16:14:56

标签: java web-services netbeans timer ejb

我正在尝试使用EJB计时器服务,我有一个名为TimerBean的类,它带有调度计时器和处理超时的方法,这实现了TimerBeanRemote的接口类。

在另一个会话bean中,我有以下内容:

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

当我尝试在服务器上运行它时,我收到错误:

javax.naming.NamingException:SerialContext中的'TimerBean / remote'查找失败[根异常是javax.naming.NameNotFoundException:TimerBean]

为什么它找不到它的任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

从您的评论开始 - 如果您尝试在同一容器中访问TimerBeanRemote,那么您可以在您的servlet或JSF Backing Bean中注入@Remote ejb,否则您可以通过JNDI找到您的EJB查找。

假设您的TimerBean是:com.mypackage.timer.TimerBeanRemote 那么根据上面的解释,你可以注入或查找:

  1. 注塑
    public class MyServlet ...{

    @EJB
    com.mypackage.timer.TimerBeanRemote timerBean;
    }

  2. JNDI查找:

  3. Properties props = new Properties();
    props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
    String[] serverDetails = server.split(":");
    props.setProperty("org.omg.CORBA.ORBInitialHost", MyHost);
    props.setProperty("org.omg.CORBA.ORBInitialPort", MyPort);

    InitialContext ic = new InitialContext(props);<br>
    TimerBeanRemote timerBean = (TimerBeanRemote)ic.lookup("com.mypackage.timer.TimerBeanRemote");
    

    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