java - 资源 JNDI 查找失败

标签 java websphere jndi ejb-3.1 ibm-rad

我正在使用 RAD+Webshere-8.5.1 运行 EJB 应用程序。我必须在 EJB 中添加发送电子邮件功能,为此我在 IBM 控制台应用程序中配置了虚拟邮件 session ,如下所示 enter image description here

我正在尝试在我的无状态 Ejb 中访问

@Resource(name="mail/sandMailSession")
私有(private) session sandMailSession;

但它失败了,如 NameNotFoundException。

我们是否需要其他设置来绑定(bind)?

最佳答案

'mail/sandMailSession' 是在全局命名空间中定义的名称。您应该使用 META-INF 目录中的 ibm-ejb-jar-bnd.xml 文件将邮件 session 绑定(bind)到本地组件命名空间:

<ejb-jar-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd" version="1.0">
  <session name="NAME_OF_EJB">
    <resource-ref name="mail/sandMailSession" binding-name="mail/sandMailSession"/>
  </session>
</ejb-jar-bnd>

请注意,namebinding-name 是单独的属性,可以具有不同的值,尽管在您的情况下它们是相同的。 binding-name 是全局命名空间中资源的名称。

关于java - 资源 JNDI 查找失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18362208/

相关文章:

java - 如何在不可变类中使用带有参数的构造函数 NO_CONSTRUCTOR 来修复 "Failed to instantiate ' className'

java - 如何在 hibernate 中映射两个不相关的类

java - 如何在 mongodb spring-data 中使用 DBRef 保存文档

Java Web应用程序需要刷新到 "see"资源文件

debugging - 如何从 RAD 中本地运行 Websphere Portal/portlet 进行调试

java - 如何将我的数据库连接放在 .war 文件之外?

java - 带有 InitialDirContext 的 Tomcat 7 中的 ActiveMQ 5.10 客户端

ejb - 作业调度 : EJB 3. 1 计时器还是 quartz ?

java - web.xml - Java Servlet 过滤器和 WebSphere - URL 模式问题

java - 从独立 JVM 访问 Tomcat 8 JNDI