gpt4 book ai didi

websphere - 配置 Quartz 作业以使用 EJBInvokerJob 调用 EJb

转载 作者:行者123 更新时间:2023-12-03 08:24:28 26 4
gpt4 key购买 nike

我需要从 quartz 作业中调用 ejb 方法,但我无法找到 ejb 作业。我已经定义了一个本地接口(interface)和一个无状态实现。在 websphere 7 上部署时,EjbInvokerJob 无法在我的 jndi 树中找到我的组件。
这是我的 quartz 作业定义(这是通过 quartz 初始化 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")

我应该如何绑定(bind)我的 EJB_JNDI_NAME_KEY?在 websphere 中,或者我应该能够通过这个配置来做到这一点。我认为问题在于我缺乏 jndi 树知识。由于启 Action 业的 servlet 在同一个 jvm 中运行,因此本地接口(interface)应该足够了

最佳答案

由于可移植的全局 JNDI 名称(java:global namespace )直到 Java EE 6 才可用,您应该将 EJB 绑定(bind)到组件的 namespace (在本例中为 servlet)。然后可以使用 java:comp/env/ejb/myBean 执行查找姓名。

web.xml 中需要以下条目:

<ejb-local-ref>
<ejb-ref-name>ejb/myBean</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>LOCAL_EJB_INTERFACE</local>
</ejb-local-ref>

关于websphere - 配置 Quartz 作业以使用 EJBInvokerJob 调用 EJb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17321343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com