Quartz ジョブから ejb メソッドを呼び出す必要がありますが、ejb ジョブを見つけるのに問題があります。Local インターフェイスとステートレス実装を定義しました。Websphere 7 にデプロイすると、EjbInvokerJob が jndi ツリーでコンポーネントを見つけることができません。これは私の Quartz ジョブ定義です (これは Quartz init サーブレットを介してロードされます)
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 をバインドするにはどうすればよいですか? または、この構成を介してこれを行うことができるはずです。問題は、jndi ツリーの知識が不足していることにあると思います。ジョブを開始するサーブレットは同じ jvm で実行されるため、ローカル インターフェイスで十分なはずです。