当前位置: 首页 > 知识库问答 >
问题:

在有状态EJB3.1 bean中举行会话?

轩辕成天
2023-03-14

我正在开发一个Java webapp,试图结合以下技术:

  • Java EE 6
  • CDI
  • JSF 2
  • EJB 3.1
  • Spring Security性

我使用@Stateless EJB bean来完成要完成的实际工作。

我只需要像jSessionCookie(由容器管理)、内部用户名和一些其他内部ID这样的少量会话信息。现在,我想知道把这个会话信息放在哪里,这样我就可以在JSF的支持bean中访问它,但也可以将它提供给无状态EJB?我应该使用@stateful EJB会话bean还是应该使用@sessionscoped和@named创建基于CDI的POJO?

有什么最佳做法吗?

共有1个答案

杨君之
2023-03-14

对于您的特定用例,有状态会话bean不是一个好的选择。

请注意,与人们可能声称的相反,有状态会话bean肯定不是您通常应该避免的东西。但是,它们是针对高级用例的,例如在处理JPA的扩展持久性上下文时。

有状态会话bean在这里不能工作的原因是它们没有自动地与HTTP会话相关联,这似乎是您最关心的问题。您可以向它们添加@SessionScoped注释,但也可以使用常规托管bean。您不会使用SFSB的任何特定功能。

    null

您可以用会话范围的CDI bean注入无状态EJB,但您必须意识到,在同一应用程序中,EJB bean将依赖于HTTP会话(这是您有时想要避免的,例如,如果您的bean也必须从其他上下文调用)。

 类似资料:
  • 我对口水还不熟悉。我试图理解Drools提供的无状态会话和有状态会话之间的区别。 根据我的初步理解, 在无状态会话的情况下,如果在任何规则的操作执行过程中修改了事实,则不会将其重新提交给推理引擎以找出与修改后的事实匹配的新规则。 在状态会话的情况下,如果在任何规则的操作执行过程中修改了事实,则它将被重新提交给推理引擎以找出与修改后的事实相匹配的新规则,然后执行相应的操作。 因此,当我试图通过编写一

  • 需要一些帮助!!我对Drools中的有状态和无状态会话没有清晰的理解。我正在努力理解这一点,所以尝试了一个例子。 我在drools6.5版本上使用有状态和无状态会话测试了下面的drl,在这两种情况下都得到了相同的输出。根据我对无状态会话的理解,它应该只执行第一条规则,当应用程序对象在第一条规则中被修改时,第二条规则不应该被激活(“有效期”)。附加源代码。感谢您在这方面的帮助。

  • 我正在使用Glassfish服务器(一个简单的购物车)尝试我的第一个EJB。我打算为每个Http会话使用CartBean。如果我的车豆跟着-

  • Drools中无状态会话和有状态会话的区别是什么。我浏览了不同的文件,发现下面 无状态会话执行规则时事实的任何更改都不会被规则引擎察觉,因此如果任何规则被修改,则不会发生其他规则的重新激活。 我试图执行下面的规则,发现了相同的结果

  • 问题内容: 有状态会话Bean定义如下: 有状态会话Bean对象的状态由其实例变量的值组成。在有状态会话Bean中,实例变量代表唯一的客户端Bean会话的状态。因为客户端与其bean进行交互(“交谈”),所以这种状态通常称为对话状态。 无状态会话Bean定义如下: 无状态会话Bean无状态会话Bean不会与客户端保持对话状态。当客户端调用无状态Bean的方法时,该Bean的实例变量可能包含特定于该

  • 问题内容: 有状态会话bean和HTTP会话之间有什么关系吗?我们将需要有状态会话Bean的用例是什么,而HTTP会话需要哪些用例。我可以将有状态会话Bean公开为静态Web服务吗? 问题答案: HTTP是一种无状态协议, 这意味着 它是服务器和客户端之间的实际传输协议- 是“无状态的, 因为它在调用之间不记得任何东西。 现在,首先阅读一下什么是HTTPSession和什么是Session Bea