问题标签 [ejb-3.2]

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 投票
3 回答
779 浏览

singleton - WebSphere Liberty 启动多个单例 EJB 实例

我正在开发一个打包在耳朵中的企业应用程序。耳朵由一个 Enterprise Bean 应用程序(在一个 jar 中)、一个 JAX-RS 应用程序(在一个战争中)和一个 Web 应用程序(也在一个战争中)组成。

耳朵描述符 (application.xml) 如下所示:

EJB 应用程序包含一个单例 EJB,用 @Singleton、@LocalBean 和 @Startup 注释,其中包含一个 @Schedule 方法。

我在日志中注意到服务器同时启动了计划方法的三个实例,对日志的进一步调查显示 bean 被绑定了 3 次——每个应用程序都绑定了 1 次。

这与文档http://docs.oracle.com/javaee/6/tutorial/doc/gipjg.html一致

但是:我在完整配置文件 WebSphere 服务器上运行了一个类似的应用程序,但没有显示此行为。相反,整个企业应用程序只存在一个实例。

WLP 服务器正在运行 17.0.0.1,Java 版本为 1.8.0_101

问题是,如果这是一个错误 - 还是我错过了 WLP 中的一些重要设置?

0 投票
1 回答
85 浏览

ejb-3.1 - 客户不得对内部实施做出任何假设

完整的句子取自 EJB3.2 规范:

在与无接口视图的引用交互时,客户端不得对引用的内部实现做出任何假设,例如引用中可能存在的任何特定于实例的状态

我实际上是在试图理解这实际上意味着什么,我想知道是否有人可以提供一些例子。

编辑
上面的句子取自第 3.4.4 节 Session Bean 的无接口视图,也许这个信息有帮助

0 投票
0 回答
695 浏览

ejb-3.1 - 使用 @EJB 和 @Inject 的无状态会话 Bean 标识

我最近一直在研究 EJB3.2 规范的第 3.4.7.2 节并做了一些测试。

规格:

@EJB 购物车购物车1
@EJB 购物车购物车2
... if (cart1.equals(cart1)) { // 这个测试必须返回 true ...}
... if (cart 1 .equals(cart 2 )) { // 这个测试也必须返回true ...}

当用于比较对相同无状态会话 bean 的相同业务接口类型的引用时,equals 方法总是返回 true。

规范明确引用了@EJB注释,所以我做了一些测试,我可以确认 -if (cart1.equals(cart2)) 总是返回true- 身份假设。

因为我经常看到@Inject与 的工作方式相同@EJB,所以我尝试了上面相同的示例,但使用@Inject. 在那种情况下if (cart1.equals(cart2)) 总是返回false

我想知道是否对此有一些评论。

用于测试目的的代码:

}

0 投票
2 回答
462 浏览

wildfly - Arquillian 与 WildFly 10 的集成

谁能指导我如何将 Arquillian 与 WildFly 10 一起使用。我最近将我的应用程序从 JBoss 7 迁移到 WildFly 10。Arquillian 曾经与 JBoss 7 一起使用,但相同的配置不适用于 WildFly 10。

我现在可以集成,但是我的 JNDI 名称为“java:global/xyz/xyzEMFactor”的 EJB 失败并出现以下错误:

引起:java.lang.Exception:{“WFLYCTL0180:缺少/不可用依赖项的服务”=> [“jboss.naming.context.java.module.test.test.env.\”com.xyz.abc.poc. Knowledge_ba‌​se.ontology.DBContex‌​tBean\".emFactory is missing [jboss.naming.context.java.global.xyz_dal.xyzpEMFactory‌​]"]} at org.jboss.as.controller.client.helpers.standalone.impl .Serve‌​rDeploymentPlanResul‌​tFuture.getActionRes‌​ult(ServerDeployment‌​PlanResultFuture.jav‌​a:134)

以下是我的课:

0 投票
0 回答
963 浏览

java - Wildfly 中的“意外调用状态 0”错误

我创建了一个演示错误的小示例。

有状态 bean 持有一个列表作为其状态并注入一个无状态 bean:

无状态 bean 通过注入来操作有状态 bean 的状态:

调用System.out.println(sfsb.sfAdd());是在 JAXRS GET 方法中进行的。我期望的调用步骤是:

  1. sfAdd叫做
  2. slAdd被调用并添加"S",返回。
  3. 打印[S]
  4. 添加"Z",返回。
  5. 打印[S, Z]

通常会发生什么,但输出也会给出错误消息:

我不明白什么是WFLYEJB0487: Unexpected invocation state 0,为什么会发生以及我应该怎么做。该消息在第 3 步和第 5 步之间打印。Google 仅找到https://developer.jboss.org/thread/272767但这没有帮助。

我还发现删除@StatefulfromStatefulBean会导致错误消失。Wildfly 10.1,JavaEE 7。

0 投票
1 回答
722 浏览

jakarta-ee - 我可以 CDI-1.0 或 -2.0-inject 由一个无状态 EJB 实现的多个接口吗?

就像下面的例子:

我对您是否应该赞成注入普通的无状态 EJB(无接口)而不是可通过其实现接口注入的无状态 EJB 不感兴趣。

我尝试使用 JEE7 (CDI1) 没有成功。我的印象是 EJB+CDI 不支持。

我想知道JEE8是否可能?

我在 CDI 2.0 规范中找不到任何部分,这似乎暗示了方向。如果有人能指出正确的地方,我将不胜感激。

这个问题也没有回答注入部分,可能已经过时并且有趣的链接已经死了: EJB bean 可以实现多个接口吗?

有任何想法吗?

0 投票
0 回答
36 浏览

wildfly - 无法通过 server1 调用 server2 EJB

我想通过 server1 调用 server2 的 EJB,但仍然被服务器 1 接收。

看看我的客户代码和截图

test1 & test2 没问题

test3 失败

有谁知道该怎么做?谢谢

服务器:wildfly-10.1.0.Final

EJB:3.2

截屏

测试代码

会话 Bean

客户

0 投票
2 回答
2512 浏览

java - 避免在 Wildfly 内部运行的 EJB 调度中的计时器重叠

我在 Wildfly 10.10 中运行的单例 EJB 中有一个 EJB 计时器计划:

update() 模型中的任务运行平稳,大部分时间不到 1 秒。但是每2分钟,由于业务需要,方法超时时间超过1秒。

问题:

Wildfly 每 2 分钟输出一条日志消息,例如:

(EJB 默认值 - 1) WFLYEJB0043:计时器 [] 的先前执行仍在进行中,跳过此重叠的计划执行在:。

我很清楚该消息的含义:上一个计时器在下一次执行开始之前没有完成并且发生重叠。

此外,重叠在更新的底层数据结构中引发了并发问题。

我的问题:

1 - 在计时器很慢的情况下如何丢弃下一个计划以避免重叠/并发更新?

2 - 如果不可能丢弃重叠的时间表,如何避免日志消息?

顺便说一句,我考虑将更新方法分成两个不同的时间表(1 秒和 120 秒)。但是打破更新方法意味着过度打破更新下的整个数据结构,至少在目前看来有点复杂和不可行。

任何帮助表示赞赏!

0 投票
0 回答
383 浏览

ejb - EJB3.1 远程客户端代码不适用于 Jboss-eap-6.1.0

我正在使用以下软件列表:

  • JDK1.7
  • Jboss-eap-6.1.0
  • EJB3.1

我正在尝试调用 EJB3 会话 bean 方法但遇到异常:

20:36:38,249 错误 [org.jboss.remoting.remote.connection](远程处理“d-441003044”读取 1)JBREM000200:远程连接失败:java.io.IOException:现有连接被远程主机强行关闭

服务器控制台和类如下

部署单元部署“EJBTest2.jar”中名为 Test2 的会话 bean 的 JNDI 绑定:

Test2.java

Test2Remote.java

Test2Client.java

如何编写远程客户端代码?

0 投票
2 回答
434 浏览

jakarta-ee - 为什么 Java EE 计时器没有集群?

我正在使用 Java EE EJB 计时器和带有 oracle 数据库的 Wildfly 8.2.1 服务器。当在集群环境中的应用程序中运行调度程序时无法正常工作,即使在 Wildfly 中选择了事务隔离:TRANSACTION_SERIALIZABLE。我正在部署它访问的两个节点从两个节点,但我只需要一个节点。

在 EJB 中:

在 DaoImpl 中:

在 Wildfly 服务器中:选择为