问题标签 [openejb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
182 浏览

tomcat - 在集群环境中调用所有 EJB

如果我的应用程序在集群环境中,是否可以在所有服务器中调用特定的 EJB?例如,我想通知所有服务器进行特定更新。目前我正在使用 JMS 主题来发送通知。EJB 使用 OpenEJB 部署在 Tomcat 中

谢谢!

0 投票
5 回答
5227 浏览

java - 如何在 JUnit 中构建自动回复 JMS 侦听器(在 OpenEJB 中)

我有一个 EJB 向 JMS 队列发送消息并等待它的回复。我想测试EJB,很容易使用OpenEJB来做EJB的JUnit测试。但问题是这个 EJB 将等待 JMS 响应继续处理。

虽然我可以在我的 junit 代码中发送消息,但因为 EJB 仍在进行中,所以在 EJB 完成之前我无法运行它。

第二种解决方案是我可以初始化一个 MDB 来监听和回复来自 EJB 的 JMS 消息,但问题是 MDB 必须在 src\main\java 中,而不能在 src\test\java 中。问题是这只是一个测试代码,我不应该将它打包到生产环境中。(我使用Maven)

或者我应该使用模拟对象?

0 投票
3 回答
2281 浏览

java - EJB 在 WebLogic 和 OpenEJB 中调用 EJB

我想编写一个有 2 个 EJB 的应用程序。此应用程序可以在 OpenEJB 和 WebLogic 10.3 中运行。两个 EJB 都是 EJB 3.0。

我知道如何在 OpenEJB 和 WebLogic 中实现,但问题是我想使用相同的代码部署到这两个环境。我认为问题在于如何进行 JNDI 查找,因为 WebLogic 的 Context.INITIAL_CONTEXT_FACTORY 是 weblogic.jndi.WLInitialContextFactory 而 OpenEJB 不是。

当前的想法是第一个 EJB 使用服务定位器来查找第二个 EJB,并且服务定位器将在 2 个环境中读取不同的 INI。还有其他建议吗?有没有一个解决方案我可以只使用注释,不需要使用外部 INI 文件。

这 2 个 EJB 存在于一个容器中,但将来有可能将一个移到另一个容器中。

2011/10/06 更新

根据大卫的建议,我放了一些零钱。该代码是 POJO,而不是 JUnit 代码。它不使用 @LocalClient 和 initialContext.bind("inject", this); (我把 2 代码放在我的 JUnit 代码中)

  1. 把resources\META-INF\application-client.xml(只包含)

  2. 把资源\jndi.properties

    /li>
  3. 查找代码

    /li>

以下是日志,OpenEJB 为数据库创建 JNDI。我也是用Eclipse调试模式查看“ctx”的内容,在MyProps中找到“jdbc/OrderDB”

但最后我仍然无法查找它。我也尝试使用 ctx.lookup(name), ctx.lookup("java:comp/env/jdbc/" + name) 结果是一样的。

2011/10/12 更新

根据 David 的评论,在 Java EE6 之前,我认为唯一的解决方案是使用服务定位器和一些配置在 WebLogic 和 OpenEJB 之间使用不同的 JNDI。以下是测试结果。

DB: WebLogic:OrderDB,OpenEJB:openejb:Resource/jdbc/OrderDB

事务管理器: WebLogic:javax.transaction.TransactionManager,OpenEJB:java:comp/TransactionManager

EJB:他们都只是查找没有任何前缀的 EJB 名称

0 投票
1 回答
550 浏览

java - 使用 jUnit 测试套件时,OpenEJB 备用描述符无法工作

当每个测试都单独执行时,我已经设法让备用描述符与我在 OpenEJB 上运行的单元测试一起使用依赖 EJB 组件的存根。但是一旦我介绍了一个测试套件,部署描述符似乎是从添加到套件中的第一个测试中获取的。

一些代码可以更好地解释它。正在测试的 Bean 类似于

和 B 的测试用例(A 的测试用例类似,只是它没有设置使用备用描述符的属性)

如前所述,当单独执行时,这一切都很好。备用描述符注入 A 接口的存根实现。

使用以下测试套件时,事情开始分崩离析。

运行此套件时,不会使用测试 B 的备用描述符。虽然,输出显示至少在每次测试之前设置了属性

如果我将加载测试的顺序颠倒到套件中,即在 ABeanTest.class 之前添加 BBeanTest.class,它将使用备用描述符。由于 ABean 没有依赖项,因此在这种情况下可以正常工作,但可能会导致具有多个备用描述符的较大设置出现问题。

任何指针?

提前致谢。

编辑根据日志输出,容器实际上只在第一次测试中启动一次,因为它大约需要。执行时间为 2.5 秒,而其他执行时间约为 0,001 秒。

EDIT2 OpenEJB 版本是Apache OpenEJB 3.1.4 build: 20101112-03:32

0 投票
1 回答
1419 浏览

jpa - OpenEJB 不能使用 javax.persistence.jtaDataSource

以下配置对于 WebLogic 来说是可以的,但在 OpenEJB 中会引发错误“javax.naming.NameNotFoundException:未找到名称“AppDB”。”

如果我删除了属性 javax.persistence.jtaDataSource,它就可以工作。为什么要设置 2 个重复的数据源?因为它是 Eclipselinks 的一个错误(参见http://bugs.eclipse.org/246126

以下是jndi.properties

因为这是其他团队打包的jar,我无法更改内容,但我仍然想在我的OpenEJB中使用它,有什么建议吗?谢谢。

0 投票
2 回答
1243 浏览

java - 如何以编程方式在 OpenEJB 中指定我的用户/角色?

在我正在进行的项目中,我们使用 OpenEJB 作为框架来测试我们的 EJB。我们以InitialContext编程方式构造一个,并用它来获取事务管理器和各种 EJB。

但是,我现在必须测试的 EJB 具有@RolesAllowed注释,因此 OpenEJB 拒绝获取该 EJB,认为我没有所需的权限。

我如何向 OpenEJB 指定此测试应该模拟的用户以及与他关联的角色?

0 投票
2 回答
2389 浏览

tdd - 在 TDD 中,为什么选择 OpenEJB 以及为什么选择 Arquillian?

我是一名 Web 开发人员,最终从事了一些 Java EE 开发(Richfaces、Seam 2、EJB 3.1、JPA)。为了测试 JPA,我使用了 hypersonic 和 Mockito。但我缺乏更深入的 EJB 知识。

有些人可能会争辩说我们应该使用 OpenEJB 和 Arquillian,但是为了什么?我什么时候需要进行容器相关测试?我需要 OpenEJB 和 Arquillian 的可能测试场景有哪些?

请赐教:)

0 投票
1 回答
389 浏览

java - OpenEJB 中的 CMP 实体 bean (OpenJPA?)

我尝试在 OpenEJB 上运行旧的 EJB2 系统,它使用实体 Bean 来访问数据库。当前状态是我可以运行它并且可以将 SQL 发送到 Oracle DB(我可以在 Oracle 中看到会话和 SQL),但是表和列名没有映射。

我认为原因是OpenEJB找不到表和列映射,我按照这篇文章来配置

http://www.jarvana.com/jarvana/view/openejb/openejb/0.9.2/openejb-0.9.2.zip!/%5Bdot%5D/openejb-0.9.2/docs/cmp_entity_postgresql.html

c:\openejb.xml:

cmp_global_database.xml:

cmp_local_database.xml:

oracle.cmp_or_mapping.xml:

这是日志

0 投票
3 回答
9825 浏览

unit-testing - 单元测试 EJB 3.1

我正在对 EJB 3.1 的单元测试进行一项小型研究。最后,我的目标是为单元测试 EJB 3.1 生成一个易于使用的解决方案。

  1. 我对大型 EJB 实现知之甚少,因此我想先请一些有经验的人(你)来总结你对单元测试 EJB 中难点的想法。
  2. 通过我已经完成的初步研究,我可以理解使用模拟框架进行单元测试而不是使用嵌入式容器的优势。尽管两者都很好,但在单元测试方面,模拟框架略胜一筹。嵌入式容器当然很好,各有优势,但可能是单元测试的不同阶段。我仍然认为,至少在某些情况下,使用此类框架应该存在一些可以改进的不足。

我希望我可以为单元测试 EJB 制作一个完整的解决方案,一旦完成,我可以在这个论坛上分享。

谢谢你的支持。

0 投票
1 回答
1096 浏览

java - 在 TomEE 上访问 OpenEJB 示例 Web 服务时出现查找错误

我正在尝试使用 OpenEJB 编写一个简单的 web 服务。我从 TomEE 项目的示例代码(webapps/ejb-webservice)开始:

http://www.apache.org/dyn/closer.cgi/openejb/4.0.0-beta-1/examples-4.0.0-beta-1-src.tar.gz

服务类使用注解:

一切都很好。将战争部署到服务器也没有问题(我使用的是 TomEE 1.0.0-beta-1-webprofile),但尝试访问此 Web 服务会从内部 OpenEJB 方法触发一系列 NameNotFoundException:

我发现了一个类似查找错误的帖子:

http://openejb.979440.n4.nabble.com/EJB-2-1-OpenEJB-Tomcat-Datasource-Name-openejb-is-not-bound-in-this-Context-td3331555.html

但问题在于名称查找方法的使用。在示例代码中没有明确的查找。

谁能告诉这个问题的根源是什么?