问题标签 [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.
java - 我们可以从静态方法访问/调用无状态会话 Bean 吗?
我在一个有许多静态方法的类中注入了一个无状态会话 bean。我想从这些静态方法中访问这个 bean。没有关于此的文档。
所以我想知道它是否允许。如果是,有什么缺点吗?推荐/不推荐?
java - Session Bean 能否实现除 SB 接口之外的其他接口?
我有一个这样的会话 Bean:
我想知道是否也可以实现另一个接口。例如,我有一个名为MyXYXInterface
. 我希望上面的 bean 也能实现这一点。
那么,在 EJB 的/会话 Bean 的上下文中,这是一件坏事吗?它会干扰容器中 EJB 的处理吗?
jakarta-ee - 何时在无状态会话 bean 上使用有状态会话 bean?
有状态会话 bean 定义如下:
有状态会话 Bean 对象的状态由其实例变量的值组成。在有状态会话 bean 中,实例变量表示唯一客户端 bean 会话的状态。因为客户端与其 bean 交互(“交谈”),所以这种状态通常称为会话状态。
无状态会话 bean 定义如下:
无状态会话 Bean 无状态会话 bean 不与客户端保持会话状态。当客户端调用无状态 bean 的方法时,bean 的实例变量可能包含特定于该客户端的状态,但仅限于调用期间。当方法完成时,不应保留特定于客户端的状态。但是,客户端可以更改池化无状态 bean 中实例变量的状态,并且该状态将保留到池化无状态 bean 的下一次调用。除了在方法调用期间,无状态 bean 的所有实例都是等效的,允许 EJB 容器将实例分配给任何客户端。也就是说,无状态会话 bean 的状态应该适用于所有客户端。
使用无状态会话 bean 优于有状态会话 bean 的优点如下:
因为无状态会话 bean 可以支持多个客户端,所以它们可以为需要大量客户端的应用程序提供更好的可伸缩性。通常,应用程序需要比有状态会话 bean 更少的无状态会话 bean 来支持相同数量的客户端。
所以想到的问题是什么时候应该使用有状态会话bean?根据我对此事的天真理解,应该尽可能坚持使用无状态会话 bean。
应该使用有状态会话 bean 的候选对象是什么?有什么好的例子吗?
multithreading - 不同的线程可以访问无状态 EJB 的特定实例的不同方法吗?
考虑一个特定的实例MyBean1
。然后我们知道method1()
或者method2()
不能被多个线程同时访问。但是,当method1()
被一个线程访问时,可以method2()
被另一个线程访问吗?
jakarta-ee - 参数通过远程会话 bean 传递到 DTO/DAO 服务后端
我对在 JavaEE 上进行开发比较陌生。我想知道将参数传递到会话 bean 以进行对象创建或删除调用的最佳格式是什么。
对于我的后端,我使用带有 DAO 的 DTO 在数据库上运行创建、更新、删除和读取操作
我有一个简单的 DAO 接口:
(我相信BusinessDAO
现阶段的执行是无关紧要的)
那么关于我的实际问题 - 如果我有一个远程(无状态会话 bean)EJB 接口,我是否应该在远程 EJB 接口中定义一个方法:
或类似的东西:
我有一个简单的客户端程序,可以调用这些方法中的任何一种。
我的想法是,对于对象创建,BusinessObject bo
定义会更好地工作,但是我似乎认为有一种模式可以遵循远程界面中的其他定义。
我不知道如何将相同样式的方法定义合并到类似的东西findObject(BusinessObject bo)
标准做法是BusinessObject
在该对象中创建并仅提供 ID 字段,然后 DAO 实现将填充的对象返回给客户端(通过会话 bean)?
还是将 a 传递int id
给findObject
方法并只返回 a更好BusinessObject
?
transactions - EJB 3.0 事务和同步
使用 EJB 3.0,两个线程将尝试运行此代码(即在无状态会话 bean 中)。两个线程都能够通过 if 语句并打印出该语句。
我尝试将事务隔离级别设置为可序列化但没有成功:
也许我使用了错误的方法。
更新
不能使用 Singleton 会话 bean,因为 Jboss 5 不支持它们。现在我正在尝试以下代码来解决我在其他时候遇到死锁的问题:
java - 在有状态会话中封装无状态 bean
我有一个使用 EJB 的 Java EE 应用程序,并通过无状态 EJB 执行大部分功能。
我要求所有用户也有一个活动会话,我想知道使用 bean 的最佳方式是什么。
目前,我有一个命令行客户端,除了使用有状态 bean 登录系统外,它还直接使用无状态 bean。
我想知道是否应该让客户端通过有状态 bean 执行所有功能,这样除非存在活动会话,否则无法执行任何功能。
这对我个人来说更有意义。
我只是不太确定什么设计是“正确的”或者什么是更好的设计。
如果我继续让客户端使用无状态 bean,那么我将不得不为这些无状态 bean 提供一种方法来检查客户端是否具有活动会话。
jakarta-ee - EJB 在每次业务方法调用之前重新注入所有依赖项
这个问题毫无疑问,实际上是一个提示。
您是否知道会话 EJB 在每次业务方法调用之前重新注入所有依赖项?好吧,直到几分钟前我才知道,这让我很头疼。
我认为依赖注入只发生在实例的创建中,但事实并非如此。EJB 3.1 规范说:
“如果会话 bean 使用依赖注入,则容器会在创建 bean 实例之后以及在 bean 实例上调用任何业务方法之前注入这些引用。” 第 4.3.2 节
不知何故,这个定义可以赋予无状态会话 Bean 具有会话状态的能力,这正是我所需要的。例如,如果您在 SLSB 中注入一个 @SessionScoped bean,而与您的请求处理的池实例无关,那么 SessionScoped bean 将始终符合当前客户端的会话。换句话说,SLSB 实例不可能拥有另一个客户端的 SessionScoped bean。
如果两个用户交替使用相同的 SLSB 实例,这使得 SLSB 通过 @Inject 接收登录用户作为实例字段而不会导致任何问题。例如:
然后,“test”方法的各种调用的结果是这样的:
请注意,即使调用相同的实例,字段“loggedInUser”也会根据调用该方法的用户而正确地变化。
stateless-session-bean - 为什么使用 ShoppingCart 作为有状态的 Sesson Bean?
使用有状态会话 Bean 的一个典型示例是通过 ShoppingCart 示例。我们创建 ShoppingCart 类的 bean 实例,然后将该实例存储在 HttpSession 中。然而,同样可以通过将 ShoppingCart 类作为普通 Java 类(或无状态会话 bean)轻松实现。添加产品的请求进来,我们创建一个购物车对象,然后将该购物车对象放入一个 HttpSession 中。
所以,我看不出在这里使用有状态会话 bean ShoppingCart 的意义。通常,有状态会话 bean 似乎没有发挥任何重要作用。
java - 从 Thread 调用会话 bean 时出现 NullPointerException
我的简单锻炼计划有些问题。我想从线程调用会话 bean,但它变成了 NullPointer 异常!但如果我从主线程调用它,它可以正常运行
这是警告和例外
这是调用远程会话 bean 的可运行类
这是我的主要功能
这是会话 bean