0

我创建了一个简单的 EJB

@Stateless
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public class MyTestBean implements MyTest{


    @Resource
    private SessionContext ctx;

    @EJB
    private RuntimeConfig runtimeConfig; // another bean that works OK

    @Resource
    private DataSource myDB;

无法初始化 bean,因为找不到 myDB

com.ibm.wsspi.injectionengine.InjectionException: CWNEN0044E: 找不到以下资源引用的资源引用绑定 [MyTestBean/myDB]

在 Websphere 7 中,我确实创建了 myDB 数据源并使用“资源引用”将其映射到 bean。我错过了什么?其他仅从 ejb-jar.xml 加载配置的 bean 工作正常请帮助。谢谢

4

2 回答 2

1

正如 bkail 所说,您可以在部署时将此数据源映射到物理 JNDI

我还建议:

  1. 在代码中为引用添加名称,即@Resource(JDBC/myDataSource)

  2. 选择“详细部署”而不是快速部署(这样你就可以在那时和那里映射所有引用,尽管你也可以在部署之后修改这些)

  3. 仔细检查您是否正确配置了应用程序服务器上的数据源,以及它的范围是否正确。

当您使用注释时,您可以放弃 ejb-jar.xml 和 ibm-ejb-jar-bnd.xml。

如果您不想使用注释 - 您可以在 ejb-jar.xml 中提供这个“逻辑”JNDI,在 ibm-ejb-jar-bnd.xml 中提供“物理”JNDI(都在这个无状态会话 bean 下,谷歌语法上的任何混淆,或者如果您使用的是 IDE,请通过“设计”模式而不是直接编辑 xml)

干杯!!

于 2013-07-21T15:30:25.103 回答
0

您应该仍然能够在部署时映射/绑定资源引用。如果系统没有提示您输入该数据源,那么我建议您向 IBM 开一个 PMR。

根据错误消息,您似乎正在使用 WebSphere Application Server。作为一种解决方法,您可以尝试通过ibm-ejb-jar-bnd.xml手动添加绑定。不清楚你运行的是哪个版本(过去你指的是7.0,虽然8.0支持EJB 3.1),但是如果你运行的是8.0,你也可以@Resource(lookup="...")在开发时使用来配置绑定。

于 2013-06-07T14:45:33.597 回答