java - 使用 Open EJB 配置 JNDI 名称

标签 java unit-testing junit openejb

我正在尝试(单元)测试我的 EJB 类,而无需启动我的 websphere 环境。现在我正在使用Open EJB ,但是在解析我的 EJB 中使用的其他 EJB 的 JNDI 名称时存在一些问题...并且我现在无法从测试中注入(inject)模拟类。

获取InitialContext

final Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
properties.setProperty("log4j.category.OpenEJB.options ", "debug");
properties.setProperty("log4j.category.OpenEJB.startup ", "debug");
properties.setProperty("log4j.category.OpenEJB.startup.config ", "debug");
properties.setProperty("MyOwnDatasource.JdbcDriver ", "com.ibm.as400.access.AS400JDBCDriver");
properties.setProperty("MyOwnDataSource.JdbcUrl ", "jdbc:as400:MYHOSTNAME;database name=MYDATABASE;libraries=MYDEFAULTTABLE");
ic = new InitialContext(properties);

在我的测试类中,有一个对 java:comp/env/ejb/PrefixEjbNameLocalHome 的查找,但我无法设置 Open EJB 来生成该格式的 JNDI 名称。

JNDI 名称格式的附加属性

我尝试像这样设置格式规则:

properties.setProperty("openejb.jndiname.format ", "comp/env/ejb/{interfaceClass}");

未使用属性?

而且也不使用日志记录配置。尽管我将 log4j.category.OpenEJB.* 等设置为 ,但我只看到来自 Open EJB 的 INFOWARN 消息>调试跟踪

最佳答案

“java:”部分搞乱了你的测试用例。基本上 Context.INITIAL_CONTEXT_FACTORY 和“java:”是互斥的。 InitialContext 类对“java:”或任何“foo:”查找有特殊的理解,如果它们位于名称的开头,它将不会使用您指定的 INITIAL_CONTEXT_FACTORY。 JNDI 的一个有点令人沮丧的部分。

如果您查找的名称与日志中打印的名称完全相同,它将起作用。例如这个日志消息:

INFO - Jndi(name=WidgetBeanRemote) --> Ejb(deployment-id=WidgetBean)

然后在代码中:

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
// set any other properties you want
Context context = new InitialContext(p);

Object o = context.lookup("WidgetBeanRemote");

关于java - 使用 Open EJB 配置 JNDI 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865356/

相关文章:

Java 在 64 位 JVM 上的长性能

unit-testing - 如何在 cakephp 中从浏览器运行测试用例

javascript - ES6 jsdom无法读取null的属性 'innerHTML'

java - 显示存储在内部存储器中的图像

java - Android 电话通话流

java - JScrollPane 中的 JTable 具有可调整大小的 JFrame 固定大小?

java - 在运行测试之前创建测试的 JUnit Test Runner

node.js - mocha 单元测试返回 0 作为未捕获异常的退出代码

java - 使用 Robolectric 测试什么?

java - eclipse junit 差异窗口