gpt4 book ai didi

database - EJB3Unit 测试 no-tx-datasource

转载 作者:搜寻专家 更新时间:2023-10-30 20:32:35 24 4
gpt4 key购买 nike

我正在使用 ejb3unit 对 ejb3 项目进行测试 http://ejb3unit.sourceforge.net/Session-Bean.html用于检测。我所有的服务都需要 @PersistenceContext (UnitName=bla)。我这样设置 ejb3unit.properties:

ejb3unit_jndi.1.isSessionBean=true
ejb3unit_jndi.1.jndiName=ejb/MyServiceBean
ejb3unit_jndi.1.className=com.company.project.MyServiceBean

一切都与内存数据库一起工作。

所以现在我想使用 @PersistenceContext (UnitName=noTxDatasource) 额外测试另一个 servicebean,它适用于在我的 datasources.xml 中定义的 :

<datasources>
<local-tx-datasource>
...
</local-tx-datasource>
<no-tx-datasource>
<jndi-name>noTxDatasource</jndi-name>
<connection-url>...</connection-url>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<user-name>bla</user-name>
<password>bla</password>
</no-tx-datasource>
</datasources>

我如何告诉 ejb3unit 使其工作:

Object object = InitialContext.doLookup("java:/noTxDatasource");
if (object instanceof DataSource) {
return ((DataSource) object).getConnection();
} else {
return null;
}

当前它失败说:javax.NamingException:无法在 JNDI 树中找到名称 (noTxDataSource) 当前绑定(bind):(ejb/MyServiceBean=com.company.project.MyServiceBean)

如何将这个 no-tx-datasource 添加到 jndi 绑定(bind)?

最佳答案

我讨厌回答自己的问题,但我有一些简单的想法:

public void setUp() throws Exception {
OracleDataSource ds = new OracleDataSource();
ds.setServerName("localhost");
ds.setPortName(1521);
ds.setDatabaseName("database"); // SID
ds.setUser("user");
ds.setPassword("pass");

InitialContext ic = new InitialContext();
ic.add("noTxDatasource", ds);
}

这还将允许您进行以下查找:

Object object = InitialContext.doLookup("java:/noTxDatasource");

提供数据源(在本例中为 oracle)。

关于database - EJB3Unit 测试 no-tx-datasource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2266171/

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