问题标签 [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.
jakarta-ee - 为什么是无状态会话 bean?
我正在阅读有关无状态会话 bean 的信息,但无法理解它的用途。
摘自下面的太阳教程
“..因为无状态会话 bean 可以支持多个客户端,它们可以为需要大量客户端的应用程序提供更好的可扩展性”
在哪里使用无状态会话 bean?什么样的应用程序使用它?
在“无状态会话 bean”出现之前,使用什么机制来支持类似上下文中的多个客户端?
谁能提供一些细节?
谢谢你!
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 进行调用的方式:
恐怕在广泛的谷歌搜索之后我无法找到这个问题的解决方案(主要是因为似乎接近这个问题的少数论坛帖子包含太多行话,我无法遵循解决方案)。
我非常感谢任何建议/帮助指出我正确的方向。
java - Transaction TimeOut EJB 对线程的影响
关于 EJB 的一个问题:
假设我有一个具有无限循环的会话 bean。它在 EJB 事务下运行。现在当 EJB 的事务超时时,是否会导致无限循环线程中断或容器将停止运行无限循环的线程。
java - 使用无状态 Bean 和 DI 代替 POJO 和静态方法有什么优势
为什么使用无状态 bean 和依赖注入而不是使用静态方法的简单 pojo 会有好处?换句话说,EJB 的优势仅仅是因为底层容器的好处,如线程、事务等吗?
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)?
jsf - 重定向到错误页面时如何在会话 bean 中获取用户名?
谁能告诉我如何正确获取会话 bean 中的用户名?在我们的应用程序中,我们通过调用这个方法来做到这一点:
这工作正常,直到一切都很好。但是当我们收到一些 500 或 404 错误并将用户重定向到相应的页面(在 web.xml 中设置)时,此方法返回“WLS KERNEL”作为用户名。在这种情况下如何获得正确的用户名?
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
,它从数据库中清除了整个对象树,然后再次插入这些东西,可能是为了解决这个问题。)
参照。异常堆栈跟踪:
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,并且当执行此验证器时,我们会收到以下异常:
我们也以这种方式定义了验证器类:
但是我们得到了同样的错误。
有任何想法吗?
java - EJB - 为有状态会话 Bean 执行 JNDI 查找时出现序列化错误
在我的 EJB 项目中,我有这个会话 Bean(有状态):
StatefulShopCartLocal 接口:
当我在应用程序客户端项目中进行查找时:
我收到此错误:
我认为这是该会话 bean 的序列化问题,但我做错了什么?
谢谢。
java - Web 服务器/容器如何处理与 EJB 和实体等其他类相关的 POJO?
我正在尝试在需要时使用普通的旧 java 对象(POJO)和常规类文件,并且仅在需要它们添加的功能(例如异步调用、池等)时才使用 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 吗?