处理“EJB 不存在”或“无法从 BACKUPSTORE FOR Key 加载”

2024-05-21

所以问题很简单:

我们使用 JSF 2.0 与 Primefaces 和 EJB 来处理我们的应用程序,但遇到了问题。我们有一个单@SessionScoped我们存储所有的bean@Stateful Session Beans.

在一种情况下(当我们没有处理 JPA 的一些异常时)并且存在一个异常:

javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "webuser_idwebuser_pk"
  Detail: Key (idwebuser)=(6) already exists.

它会导致我们之一的毁灭@Stateful Session Bean。 因此,刷新网站后,当 JSF 仍然正常工作时,在填写表单并尝试提交后,通过调用该 Bean 中的方法会出现异常:

javax.ejb.NoSuchObjectLocalException: The EJB does not exist. session-key: 22900a4d007e1f-6dcc714a-0

最有问题的是,我们必须重新启动并重新部署应用程序才能使其在同一台计算机(或 Web 浏览器)上运行,因为 JSF 的@SessionScopedBean 以某种方式通过 cookies 或其他东西保存。

所以我想解决方案是强制销毁它@SessionScoped或以某种方式刷新会话,但实际上我不知道该怎么做。 或者什么是更好的方法。

Thanks!


为了解决这个问题,您需要了解 EJB 中应用程序异常和系统异常之间的区别。

这些大致分别对应于检查异常和运行时异常。

应用程序异常应该由您自己的代码处理,并且不会导致事务回滚或 bean 破坏。系统异常具有相反的效果,会导致回滚和EJB bean 的破坏。

后一个效果就是你所看到的。 JPA 抛出未经检查的异常,从而成为系统异常,从而导致您的 SFSB 被破坏。 JSF 或 CDI 托管 bean 都会参与此“系统异常”事件,因此它们只会传播异常并保持活动状态。

您可能想要的是定义一个新的异常,并用 @ApplicationException 进行注释,然后将其回滚属性设置为 true。捕获 SFSB 中的 JPA 异常,并用您的自定义异常包装并重新抛出它。

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

处理“EJB 不存在”或“无法从 BACKUPSTORE FOR Key 加载” 的相关文章

随机推荐

  • 在 Windows 7 64 位中删除 Spark 临时目录时出现异常

    我正在尝试在 Windows 7 64 位中运行 Spark 作业的单元测试 我有 HADOOP HOME D winutils winutils path D winutils bin winutils exe 我运行了以下命令 winu
  • 使用外键引用创建新的 EF 对象,而不加载整个重新引用对象

    我想创建一个新的 EF 对象 它引用另一个对象 我的示例中的 aspnet userId 而不加载外部 键 对象 所以本质上我想做以下事情 buskerSet bs new buskerSet bs Title title bs Image
  • 为什么我在 Java 8 中无法正确解析这个英文日期?

    我想执行一个简单的示例来用模式解析字符串 String input Sep 31 2013 LocalDate localDate LocalDate parse input DateTimeFormatter ofPattern MMM
  • Android自定义控件命名空间问题

    我一直在为 Android 开发自定义控件 尽管我尝试按照建议进行操作here https stackoverflow com questions 4495511 how to pass custom component parameter
  • XSD 1.1 断言以计数和比较元素

    我目前有一个 XSD 文件 它控制对我相应的 XML 文件的验证等 我想进行控制 最好使用断言命令而不是 XLST 因为我对此没有先验知识 并能够确保abc Country 标签与 abc AccountNumber 标签的数量相同 因为其
  • 水平滚动条仅出现在页面底部

    我有一个具有以下 HTML 结构的页面 div class wrapper div The wrapper被设置为min width 1100px至于原因我就不多说了 因此 当浏览器大小调整为小于 1100px 时 我希望出现水平滚动条 我
  • 具有有限行数和字符数限制的文本区域

    我需要具有 TextArea 的功能 1 maximum total lines 6 and 2 in each line there must be maximum of 16 chars 3 if user enters 17th ch
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 获取 IntelliJ Kotlin 插件和 gradle 进行匹配

    我正在尝试 IntelliJ 16 早期访问版本 但我的项目无法编译 Error 16 17 Kotlin Unresolved reference substring note this may be caused by the fact
  • 在rails中,如何在要求升级帐户之前限制用户在数据库中保存的帖子数量

    我添加了一种控制非订阅用户和订阅用户的小方法 基本上我的想法是所有使用 Devise 注册的用户都会获得一个帐户 但是 我的模型或根据找到的用户 ID 在数据库中存储的用户可以拥有的帖子数量应该是 25 个帖子 我猜下面的方法会起作用 Mo
  • 如何从一个活动中完成一系列开放的子活动?

    我正在尝试为我的应用程序制作一个退出按钮 无论如何 我能够跟踪我的应用程序中的所有活动实例 然后完成它们 但在某些情况下 仍有一些活动仍然存在 不知道怎么办 有没有什么方法可以杀死android中的特定应用程序 或者我可以通过任何其他方式退
  • 具有单个子模块的多个存储库

    我已经找了一段时间但没有找到答案 也许我不知道该看什么 我们有一个主库 它本身就是一个存储库 我们称之为 Lib 它包含我们的大部分模块和子模块 我们还假设它的大小为 2GB 现在我们有很多项目 例如 ProjA ProjB ProjC 每
  • Rust 中的下划线:“考虑使用”

    Rust 新手 当提供参数并在函数声明中不使用它时 例如 当学习 Rust 时 编译器会警告该变量在作用域中未使用 并建议考虑在其前面添加下划线 这样做 警告就会消失 warning unused variable y gt src mai
  • Google Play 商店中基于服务的 Android 应用程序

    我正在开发一个应用程序 该应用程序仅包含一些服务 没有任何活动 即没有 UI 基本上 当用户在他 她的设备上安装应用程序时 我希望有 2 到 3 个服务在后台运行 对此我有几个疑问 应用程序安装后我的服务将如何启动 我的BroadcastR
  • 使用非标准评估公式

    我正在创建一个使用的包非标准评价 http adv r had co nz Computing on the language html跟踪列的含义 该包在函数之间传递数据框 这些函数执行同一组列的各种操作 非标准评估对此非常有用 my s
  • 使用yard创建文档时如何防止[查看源代码]链接?

    我正在使用yard生成项目文档 但我不想在文档中显示 查看源代码 链接 我已深入研究yard官方指南 但仍然没有得到解决方案 有什么想法吗 谢谢 我可能有点晚了 但您可以通过从 method details 部分中删除 源 部分来轻松自定义
  • 如何使用 Python 和 Java 访问 Google Cloud Endpoints 请求标头

    在endpoints方法中 如何访问请求头信息 Python 在端点方法中 self request state headers提供此信息 E g self request state headers get authorization 爪
  • 快速将阴影绘制到 uibezierpath

    我有一个奇怪的问题 尽管我确实阅读了很多有关如何执行此操作的教程 但最终结果仅显示贝塞尔线 而不显示任何阴影 我的代码非常简单 let borderLine UIBezierPath borderLine moveToPoint CGPoi
  • 如何将多行文本插入到框架/图像中

    我使用 C 和 OpenCV 创建了一个框架 并想在其中插入几行文本 使用以下代码 putText frame My text here cvPoint 30 30 FONT HERSHEY COMPLEX SMALL 0 8 cvScal
  • 处理“EJB 不存在”或“无法从 BACKUPSTORE FOR Key 加载”

    所以问题很简单 我们使用 JSF 2 0 与 Primefaces 和 EJB 来处理我们的应用程序 但遇到了问题 我们有一个单 SessionScoped我们存储所有的bean Stateful Session Beans 在一种情况下