Websphere 配置Quartz作业以使用EJBInvokerJob调用EJb

Websphere 配置Quartz作业以使用EJBInvokerJob调用EJb,websphere,ejb-3.0,quartz-scheduler,jndi,Websphere,Ejb 3.0,Quartz Scheduler,Jndi,我需要从quartz作业调用ejb方法,因为我在定位ejb作业时遇到了问题。我已经定义了一个本地接口和一个无状态实现。在websphere7上部署时,EjbInvokerJob无法在我的jndi树中找到我的组件。 这是我的quartz作业定义(通过quartz init servlet加载) 我的bean上面有这个注释 @Stateless(name = "myBean") 我应该如何绑定我的EJB\u JNDI\u NAME\u密钥?在websphere中,或者我应该能够通过此配置执行此操作

我需要从quartz作业调用ejb方法,因为我在定位ejb作业时遇到了问题。我已经定义了一个本地接口和一个无状态实现。在websphere7上部署时,EjbInvokerJob无法在我的jndi树中找到我的组件。 这是我的quartz作业定义(通过quartz init servlet加载)

我的bean上面有这个注释

@Stateless(name = "myBean")

我应该如何绑定我的EJB\u JNDI\u NAME\u密钥?在websphere中,或者我应该能够通过此配置执行此操作。我认为问题在于我缺乏jndi树知识。由于启动作业的servlet在同一jvm中运行,因此本地接口应该足够了,因为可移植全局JNDI名称(
java:global
namespace)直到JavaEE6才可用,所以您应该将EJB绑定到组件的名称空间(在本例中为servlet)。然后可以使用
java:comp/env/ejb/myBean
name执行查找

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>

ejb/myBean
一场
本地EJB接口

LOCAL_EJB_接口,是我的EJB接口的FQN还是我可以给@LOCAL注释的值?这仍然会生成错误。名称[ejb/myBean]未在此上下文中绑定。找不到[ejb]@jelle它应该是本地ejb接口的FQN。在WAS控制台中,这个EJB是否显示为绑定到web应用程序(企业应用程序/您的应用程序/引用/EJB引用)中?当我看到它与另一个bean一起定义时,我被注入到一个servlet中。我应该定义一个jndi名称并引用它吗?@jelle从servlet中查找的bean必须绑定到web模块中。我不熟悉EJBInvokerJob,也不知道它是否在bean引用前面加上了“java:comp/env”。您可以同时尝试“java:comp/env/ejb/myBean”和“ejb/myBean”。
<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>