我需要从石英作业中调用 ejb 方法,但我无法找到 ejb 作业。我已经定义了一个本地接口和一个无状态实现。在 websphere 7 上部署时,EjbInvokerJob 无法在我的 jndi 树中找到我的组件。这是我的石英作业定义(这是通过石英初始化 servlet 加载的)
JobDetail jd = JobBuilder//
.newJob(EJBInvokerJob.class)//
.withIdentity("job", "group")//
.usingJobData(EJBInvokerJob.EJB_JNDI_NAME_KEY, "ejb/myBean")//
.usingJobData(EJBInvokerJob.EJB_METHOD_KEY, "update")//
.build();
String cronExpr = getInitParameter("cronExpr");
Trigger cronTrigger = TriggerBuilder//
.newTrigger() //
.forJob(jd) //
.startNow() //
.withSchedule(CronScheduleBuilder.cronSchedule(cronExpr))//
.build();
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
sched.scheduleJob(jd, cronTrigger);
sched.start();
我的bean上面有这个注释
@Stateless(name = "myBean")
我应该如何绑定我的 EJB_JNDI_NAME_KEY?在 websphere 中,或者我应该能够通过这个配置来做到这一点。我认为问题在于我缺乏 jndi 树知识。由于启动作业的 servlet 在同一个 jvm 中运行,因此本地接口应该足够了