问题标签 [stateless-session-bean]

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 投票
6 回答
7052 浏览

jakarta-ee - 为什么是无状态会话 bean?

我正在阅读有关无状态会话 bean 的信息,但无法理解它的用途。

摘自下面的太阳教程

“..因为无状态会话 bean 可以支持多个客户端,它们可以为需要大量客户端的应用程序提供更好的可扩展性”

在哪里使用无状态会话 bean?什么样的应用程序使用它?

在“无状态会话 bean”出现之前,使用什么机制来支持类似上下文中的多个客户端?

谁能提供一些细节?

谢谢你!

0 投票
1 回答
12461 浏览

ejb - EJB 无状态会话 Bean - 无法创建错误

首先让我指出,虽然我已经使用 Java SE 有一段时间了,但这是我第一次涉足 Java EE 领域。我正在使用 Netbeans 6.9 和 Netbeans 代码生成器来完成大部分繁重的工作(更多关于这方面的内容)。GlassFish 的版本是 3 - 下载 Netbeans 时附带的标准版本。

我创建了一个无状态会话 Bean 来返回一个简单的字符串,如下所示:

接口定义为:

类和接口都是使用 Netbeans 提供的“插入代码”功能创建的。我认为这样可以避免犯任何愚蠢的新手错误(哦,具有讽刺意味)。

我的问题是,当我尝试从 servlet 调用 Enterprise bean 时(调用是使用 Netbeans 代码生成器中的“Call Enterprise Bean”选项添加的),我收到以下错误:

异常是由以下原因引起的: NoClassDefFoundError

这是 servlet 进行调用的方式:

恐怕在广泛的谷歌搜索之后我无法找到这个问题的解决方案(主要是因为似乎接近这个问题的少数论坛帖子包含太多行话,我无法遵循解决方案)。

非常感谢任何建议/帮助指出我正确的方向。

0 投票
2 回答
9584 浏览

java - Transaction TimeOut EJB 对线程的影响

关于 EJB 的一个问题:

假设我有一个具有无限循环的会话 bean。它在 EJB 事务下运行。现在当 EJB 的事务超时时,是否会导致无限循环线程中断或容器将停止运行无限循环的线程。

0 投票
2 回答
673 浏览

java - 使用无状态 Bean 和 DI 代替 POJO 和静态方法有什么优势

为什么使用无状态 bean 和依赖注入而不是使用静态方法的简单 pojo 会有好处?换句话说,EJB 的优势仅仅是因为底层容器的好处,如线程、事务等吗?

0 投票
1 回答
853 浏览

java - 具有更多注入 EJB 实例的无状态 EJB

我知道无状态 EJB 存储在池中并根据需要进行实例化,我的问题是,当有更多 EJB 依赖项时会发生什么,例如:

EJB_A 和 EJB_B 也是无状态的 EJB。

在最坏的情况下,如果同时有两个请求,服务器将从池中检索两个 Master_EJB 实例(或在需要时创建)。

但是,如果从这两个调用中,一个只需要 EJB_A 而另一个只需要 EJB_B,那么需要多少个实例:4(2 Master_EJB + 1 EJB_A + 1 EJB_B)或 6(2 Master_EJB + 2 EJB_A + 2 EJB_B)?

0 投票
0 回答
572 浏览

jsf - 重定向到错误页面时如何在会话 bean 中获取用户名?

谁能告诉我如何正确获取会话 bean 中的用户名?在我们的应用程序中,我们通过调用这个方法来做到这一点:

这工作正常,直到一切都很好。但是当我们收到一些 500 或 404 错误并将用户重定向到相应的页面(在 web.xml 中设置)时,此方法返回“WLS KERNEL”作为用户名。在这种情况下如何获得正确的用户名?

0 投票
1 回答
362 浏览

hibernate - Hibernate 3.6.6.Final (JBoss 6.1) merge() 瞬态对象树

我尝试使用 Hibernate 的 merge() 方法保存对象树。实体Auftrag(在英语中的意思是“订单”)包含一组Auftragsposition对象,映射为cascade="all-delete-orphan.

持久化发生在通过 RMI 调用的无状态会话 bean 中。该方法打开一个新的(干净的)Session实例。当保存已经存在的订单时,merge() 尝试从数据库加载实体,然后将刚刚加载的相关订单位置与会话的持久性上下文相关联。稍后,当 merge() 操作级联到订单位置时,会发生 NonUniqueObjectException(因为瞬态订单位置与 Hibernate 加载的位置不同)。

saveOrUpdate() 产生类似的结果。

是否存在智能(一个或尽可能少的代码行)解决方案?或者是否必须解决该行为,例如通过递归对象树并首先保存(与会话相关联)瞬态对象?

(PS:我现在得到这个异常是因为我扔掉了一个旧的、定制的子类AuftragEntityPersister,它从数据库中清除了整个对象树,然后再次插入这些东西,可能是为了解决这个问题。)

参照。异常堆栈跟踪:

0 投票
2 回答
5362 浏览

glassfish - 为什么我们得到 java.lang.ClassCastException: $Proxy, in jndi lookup of a Stateless Session Bean in Glassfish 3.1.1

我们在实用程序类中查找本地状态会话 Bean 实例时遇到问题。我们总是得到一个 ClassCastException: $ProxyXYZ (XYZ 是任意数字)

我们正在使用 Glassfish 3.1.1、JPA 2、EJB 3、JSF2

一切都打包在一个耳朵档案中。

我们还在我们的项目中使用 Bean Validation,因此在我们的一个验证器类中,我们尝试获取一个无状态会话 bean 的实例。验证器是这样定义的:

会话 Bean:

查找过程运行良好,因为我们获得了 Proxy 类的实例,但不可能将其转换为 Session Bean,并且当执行此验证器时,我们会收到以下异常:

我们也以这种方式定义了验证器类:

但是我们得到了同样的错误。

有任何想法吗?

0 投票
1 回答
1638 浏览

java - EJB - 为有状态会话 Bean 执行 JNDI 查找时出现序列化错误

在我的 EJB 项目中,我有这个会话 Bean(有状态):

StatefulShopCartLocal 接口:

当我在应用程序客户端项目中进行查找时:

我收到此错误:

我认为这是该会话 bean 的序列化问题,但我做错了什么?

谢谢。

0 投票
1 回答
1373 浏览

java - Web 服务器/容器如何处理与 EJB 和实体等其他类相关的 POJO?

我正在尝试在需要时使用普通的旧 java 对象(PO​​JO)和常规类文件,并且仅在需要它们添加的功能(例如异步调用、池等)时才使用 EJB。我想知道服务器如何处理一旦项目部署在服务器上,就会出现这种行为。由于它不是由容器管理的,是否必须为每个可能调用其中一种方法的无状态会话 bean 池创建一个新实例?静态方法或状态之类的东西如何影响这个模型。

编辑:

1)我可以澄清更多。Java EE 的重点是您使用 @stateless 等注释 POJO,以便容器可以管理它。您不必声明您只需注入的无状态 bean 的新实例,并且可以调用它的类型。

2) 大多数 Java EE 教程和书籍从未将非注释类作为业务逻辑的一部分。它从来没有被提起过。如果您可以在 Java EE 项目中将它们用于您的业务逻辑并且它可以部署在服务器上,这对我来说似乎很奇怪。如果您不需要池或异步访问(容器通过 EJB 帮助管理的东西),那么您可以在 Java EE 项目中使用这些常规 POJO。

3)这导致我的问题是我如何正确地整合到项目中?我是将它们放在连接到 EAR 的 EJB 项目中还是应该放在 EAR 中?或动态网络项目。几乎没有提及或说明正确使用此类常规对象。当它被编译成 WAR 进行部署时,您在服务器上是否遇到任何问题?不是期望正确注释的 EJB、servlet 或 JSP 吗?