使用@EJB时,每个托管bean是否都有自己的@EJB实例?

2023-11-21

我正在将 JSF 2.2 用于 Web 项目,并且现在正在实现登录页面。

我有一个login.xhtml作为view,和一个名为的支持 beanUserLoginView.
这种豆子有一个EJB属性beanprivate UserService userService(如图所示here).

这是否意味着每个新UserLoginView得到一个新实例UserService?

在生产环境中这样实现可以吗?


这是否意味着每个新的 UserLoginView 都会获得一个新的 UserService 实例?

没有。给定的UserService is a @Stateless EJB. @StatelessEJB 作为容器自动生成的可序列化代理进行池化和注入。其中,EJB 发生异常时的堆栈跟踪就是这一点的证据。您会看到支持 bean 方法和 EJB 方法之间有额外的层。

自动生成的代理类@StatelessEJB看起来大致是这样的(实际上更复杂,例如DB事务也需要在这里获取、启动和提交,具体取决于@TransactionAttributeEJB 类和/或方法):

public class UserServiceProxy extends UserService implements Serializable {

    public User find(Long id) {
        UserService instance = getAnAvailableInstanceFromPool();
        User result = instance.find(id);
        releaseInstanceToPool(instance);
        return result;
    }

    public Long save(User user) {
        UserService instance = getAnAvailableInstanceFromPool();
        Long result = instance.save(user);
        releaseInstanceToPool(instance);
        return result;
    }

    // ...
}

你看到了吗?它只是从 EJB 池中获取一个可用实例,然后将方法调用委托给它,最后将其释放到池中以供将来重用。实际上,正是这个代理实例被注入到您的 JSF 托管 bean 中。

顺便说一下,CDI 也是这样工作的。这正是为什么使用 CDI 可以将范围较窄的 Bean 注入范围较广的 Bean 中,并且仍然可以使其按预期工作。 JSF的@ManagedBean注入actual实例,因此它不会那样工作。如果 JSF 也使用代理来实际获取当前 bean 实例,那么它就会起作用FacesContext并委托给它。

Only @StatefulEJB 实际上与客户端的生命周期相关。如果托管 bean 作为客户端,它确实会获得“它自己的”实例。也可以看看JSF 请求作用域 bean 会在每个请求上不断重新创建新的有状态会话 bean?

And @SingletonEJB 池中基本上最多有一个实例。因此每个客户端将始终获得相同的实例。


在生产环境中这样实现可以吗?

绝对地。否则它们就不存在。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用@EJB时,每个托管bean是否都有自己的@EJB实例? 的相关文章

  • PowerMockito 模拟单个静态方法并返回对象

    我想从包含 2 个静态方法 m1 和 m2 的类中模拟静态方法 m1 我希望方法 m1 返回一个对象 我尝试了以下方法 1 PowerMockito mockStatic Static class new Answer
  • CDI 和 EJB 相比如何?相互影响?

    我很难理解两者如何相互作用以及它们之间的界限在哪里 它们重叠吗 他们之间有裁员吗 我知道两者都有相关的注释 但我无法找到两者的完整列表和简短描述 不确定这是否有助于澄清它们的不同之处或重叠之处 真的只是很困惑 我 认为我 对 EJB 相当了
  • 异步方法的默认 EJB 事务模式?

    当我有一个 AsynchronousEJB 中的方法 并且我没有指定 TransactionAttribute 那么容器到底是如何处理事务边界的呢 显然 它不能使用调用线程的事务 那么它是做什么的呢 同样的问题 但涉及由 TimerServ
  • h:message 为空时的默认输出

    我正在寻找一种在 JSF 中实现以下切换的方法 div if empty div
  • 在哪里使用 EJB 3.1 和 CDI?

    我正在制作一个基于 Java EE 的产品 我在其中使用玻璃鱼 https en wikipedia org wiki GlassFish3 和 EJB 3 1 我的应用程序有会话bean https en wikipedia org wi
  • Primefaces 进度条动态标签

    您好 我正在使用 JSF 和 Primefaces 我有一个很长的任务 在此期间我想向用户显示一个进度条 以进度 int 和状态 String 作为指示器 这两个参数映射到后端 bean 的两个字段 如果我使用
  • 将方法参数/参数传递给复合组件操作属性

    标题确实说明了一切 我尝试过 但失败并出现以下错误 Illegal attempt to pass arguments to a composite component lookup expression i e cc attrs iden
  • 自定义 JSP 标记 - 检测其他实例的存在

    自定义 JSP 标记是否可以检测页面中是否存在其自身的其他实例 如果是这样 首选的方法是什么 我的标签的输出需要有条件地取决于它是否是唯一的实例 请注意 我的页面出现了三次标签 其中两个具有与第三个不同的属性集 因此我知道从资源池分配了两个
  • 不支持的major.minor版本52.0错误[重复]

    这个问题在这里已经有答案了 我有在 JDK 1 8 上编译的代码 我创建了 war 文件并将其部署在运行 JRE 1 8 的 Ubuntu 服务器中的 Tomcat8 上 我打开主页的时候出现这个错误 java lang Unsupport
  • ui:define with generated="false" 属性仍然呈现

  • 如何在 Wildfly 中使用 MQTT 和 JMS?

    我正在开发一个平台来监视和控制使用 MQTT 作为通信层的设备 我将 REST 端点用于基于 Angular2 的 SPA Web 后端是使用 WildFly 在 JEE 中开发的 它通过 JMS 代理 ActiveMQ Artemis 支
  • JSF 的最佳实践是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从支持 bean 更新 PrimeFaces 数据表

    我在 bean 中使用 Schedule Timer 当员工注册从指纹设备获取数据时 它会更新变量 当 bean 中的变量更新时 我需要从支持 bean 更新 jsf 中的组件 我尝试使用 primefaces poll 组件 但它每次都会
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • Primefaces 中动态生成条形图

    我正在使用 Primefaces 4 0 我需要根据查询结果的数量生成条形图 条形图的标题和颜色也应该能够为所有使用查询结果的人动态设置 条形图示例如下
  • FontAwesome 与 PrimeFaces

    我一直渴望在 Primefaces 中包含 FontAwesome 图标 最后 Optimus 昨天发布了这个伟大的新图标 gt http blog primefaces org p 3004 comment 5422 http blog
  • 正确使用 JDBC 连接池 (Glassfish)

    我需要在 Java Web 服务中作为会话 bean 实现数据库连接 但我不确定我这样做是否正确 我创建了一个类 public final class SQLUtils private static DataSource m ds null
  • JSF1064 jsf 2.0 上的“无法找到或提供资源”警告

    我正在 Weblogic 10 3 3 上使用 Java EE 5 和 JSF 2 0 Mojarra 2 0 3 开发一个企业项目 我没有错误 但在浏览我的应用程序时 控制台中出现了非常烦人的警告 每当我在 JSF 中执行重定向时 我都会
  • ajax4jsf死了吗?还有哪些其他适用于 JSF 的 AJAX 库?

    我目前正在使用JBoss RichFaces http www jboss org jbossrichfaces 我正在从事的项目的 JSF 组件库 一般来说 它工作得很好 特别是 ajax4jsf A4J 提供的 AJAX 支持 但我发现
  • 查看/page.jsf无法恢复[重复]

    这个问题在这里已经有答案了 我有无法解决的问题 当我在页面空闲 10 分钟后刷新打开的 JSF 页面时 我收到以下错误消息 serverError class javax faces application ViewExpiredExcep

随机推荐

  • android 是否有向 Google keep 添加数据的意图

    android 是否有向其中添加数据的意图谷歌保留 可以通过新的 Intent Intent ACTION SEND 实现 有一种技术可以通过编程方式选择适当的应用程序 而不是显示可能性 测试
  • Grails GGTS IDE GrailsProcessDiedException:Grails 进程终止

    我在 GGTS IDE 上遇到了以下奇怪的异常 Command terminated with an exception org grails ide eclipse longrunning client GrailsProcessDied
  • C++20 概念:元素可迭代概念

    我正在尝试创造一个概念ElementIterable它可以确定类型是否是嵌套范围 例如 中的元素std vector
  • 0x9d 在什么 8 位字符集中有意义?

    英语的 8 位类似 ASCII 的字符集是什么0x9d有意义吗 我正在清理一些旧的数据文件 偶尔会发现0x9d在其他 ASCII 文本中 不 这不是 UTF 8 它在 Windows 1252 中无效 Python latin 1 编解码器
  • 如何在 iPhone sdk 中创建 Excel 工作表和文件?

    我想生成应用程序来在 iPhone sdk 中创建 excel 文件 任何人都可以建议我创建它 嗯 对的人看到了你的帖子 SourceForge 上有一个开源 C 库 xlslib 这将完全满足您的需要 但是等等 还有更多 有一个 Obje
  • 限制访问 Web ASP .NET 应用程序的用户数量

    如何限制 Web 应用程序的用户数量 您可能希望将 Web 应用程序限制为一次仅处理 20 个用户 我们公司销售基于多个许可证的应用程序 但我们不确定网络应用程序中的行为是什么 我看到一些建议说 当用户登录时 您可以将用户帐户标记为 Log
  • android logcat中的致命信号6是什么[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我是 Android 开发新手 我的应用程序在从 Activity 切换 11 次时不断被终止 而且它只说 致命信号 6 SIGABRT tid 9485 中的代码 6 Thre
  • Python/SciPy:如何从 CubicSpline 获取三次样条方程

    我正在通过给定的一组数据点生成三次样条曲线图 import matplotlib pyplot as plt import numpy as np from scipy import interpolate x np array 1 2 4
  • 如何从 Tomcat Java 应用程序捕获 SOAP 消息到外部服务器?

    我有一个 Web 应用程序 它在 Tomcat6 内运行并通过 HTTPS 将 SOAP 消息发送到某个外部系统 我想拦截这些消息 为了做到这一点 我在工具 gt Fiddler 选项对话框 重新启动 Fiddler 后 我可以看到对多个主
  • 如何读取内存中存储的图像文件?

    在我的 Android 应用程序中 我使用以下代码将图像文件存储在内部存储器中 FileOutputStream fos con openFileOutput fileName con MODE PRIVATE fos write baf
  • 在不同的控制器中设计表单

    我正在使用 devise gem 进行登录 退出程序 我从设备生成视图文件 使用rails g devise views 我看到有一个 devise sessions new html erb 文件 其中包含登录表单 我创建了另一个文件 d
  • TypeScript - 检查对象的属性是否是具有给定签名的函数

    我有一个从对象获取属性的函数 Utils ts export function getProperty
  • 如何在 Java 中将电话号码格式化为字符串?

    我一直将电话号码存储为很长的长度 我想在将电话号码打印为字符串时简单地添加连字符 我尝试使用DecimalFormat但这不喜欢连字符 可能是因为它用于格式化十进制数字而不是长整数 long phoneFmt 123456789L Deci
  • Android studio java.exe 以非零退出值 3 结束

    我已经通过了与 multidex 问题相关的非零退出值 1 2 但现在我得到了非零退出值 3 工作室留言 Information Gradle Executing tasks emoticons lib proj assembleDebug
  • 通过AJAX调用提示用户保存文件

    我正在将 DHTMLX 网格导出到 csv 并已成功创建 CSV 文件 我遇到的问题是它没有提示用户保存 打开文件 我使用 javascript 中的 post 调用将 CSV 字符串发送到 PHP 然后将该字符串写入 csv 由于某种原因
  • 如何在 C# 中使用 imageMagick

    您能解释一下如何将 ImageMagick 与 C 一起使用吗 我正在尝试将 PDF 页面转换为图像 我想运行 imageMagick 命令 convert 密度 300 input pdf output png string argume
  • 获取类函数的参数数量

    有没有办法检测类中函数的参数数量 我想做的是以下内容 class foo path path to file if file exists path die require path if class exists class die c
  • 在 Maps V2 上绘制多色折线

    我按照以下方式在地图上绘制纯色折线 效果很好 PolylineOptions polyLine new PolylineOptions polyLine width 5 polyLine color Color RED polyLine g
  • WPF 的语法荧光笔[重复]

    这个问题在这里已经有答案了 我目前正在为 WPF 应用程序寻找语法荧光笔 用户可以在文本框中输入内容 希望能够识别代码并相应地突出显示语法 我想先支持C 稍后再支持其他语言 问题重复394751 如果您不介意没有任何文档 Avalon编辑是
  • 使用@EJB时,每个托管bean是否都有自己的@EJB实例?

    我正在将 JSF 2 2 用于 Web 项目 并且现在正在实现登录页面 我有一个login xhtml作为view 和一个名为的支持 beanUserLoginView 这种豆子有一个EJB属性beanprivate UserService