EJB 和 CDI bean 序列化的最佳实践

2024-02-15

我还没有遇到任何与序列化相关的问题。但 PMD 和 Findbugs 检测到一系列有关序列化的潜在问题。一个典型的情况是注入的记录器被检测为不可序列化。但还有更多——EntityManager和一些 CDI 豆。

我还没有找到任何关于如何正确处理序列化的最佳实践。

  • 将字段注入@Inject and @PersistenceContext反序列化时重新注入?
  • 他们应该被标记为transient?
  • 或者我应该忽略/关闭代码检查?
  • 我真的应该像 PMD 建议的那样提供所有这些字段的访问器吗?

我意识到这是一个老问题,但我相信提供的唯一答案是不正确的。

由 @Inject 和 @PersistenceContext 注入的字段将是 反序列化时重新注入?

不,他们不会。我在集群环境中使用 JBoss 时亲身经历过这一点。如果 bean 具有钝化能力,则容器必须注入可序列化代理。该代理被序列化和反序列化。反序列化后,它将找到正确的注入并重新连接它。但是,如果将字段标记为“transient”,则代理不会序列化,并且在访问注入的资源时您将看到 NPE。

应该注意的是,注入的资源或 bean 不必是可序列化的,因为代理将是可序列化的。唯一的例外是 @Dependent 作用域 bean,它必须是可序列化的或注入瞬态的。这是因为在这种情况下没有使用代理。

它们应该被标记为瞬态吗?

不,请参阅上文。

或者我应该忽略/关闭代码检查?

这取决于你,但这就是我会做的。

我真的应该像 PMD 建议的那样提供所有这些字段的访问器吗?

我不会。 在我们的项目中,当我们知道我们正在使用 CDI 时,我们会禁用此检查。

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

EJB 和 CDI bean 序列化的最佳实践 的相关文章

随机推荐

  • 用鼠标拖动滚动

    我正在尝试制作一个可滚动面板 但没有滚动条 并通过用鼠标垂直拖动来滚动 这是到目前为止有人帮助我做的 private void panel1 MouseEnter object sender EventArgs e panel1 AutoS
  • 哪个更快? ByVal 还是 ByRef?

    在 VB NET 中 使用方法参数速度更快 ByVal or ByRef 另外 哪个在运行时消耗更多资源 RAM 我通读了这个问题 https stackoverflow com questions 290189 best practice
  • 多对多 EF7

    Models public partial class Film public int FilmID get set public virtual ICollection
  • 单例模板作为 C++ 中的基类[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 根据C 单例设计模式 https stackoverflow com questions 1008019 c singleton design
  • 通过 Socket.io 更新 React 状态

    我的 React 组件使用来自 socket io 的数据作为状态 我不确定如何在更新数据时更新状态而不重新渲染整个组件 示例代码 var socket io var data components key name markup sock
  • nginx 将 POST 请求重定向到 GET 请求

    我有 Rails 4 1 应用程序运行puma网络服务器 我使用 nginx 作为代理服务器 几天前 一切都进展顺利 我更新了我的应用程序 突然有些POST请求开始重定向到相同的网址 但作为GET要求 我尝试回滚到以前的工作版本 但没有成功
  • 在 C# 中以编程方式编译打字稿?

    我正在尝试用 C 编写一个函数 该函数接受包含打字稿代码的字符串并返回包含 JavaScript 代码的字符串 有这方面的库函数吗 您可以使用Process要调用编译器 请指定 out file js到临时文件夹并读取编译文件的内容 我做了
  • 如何找到所有兄弟情谊字符串?

    我有一个字符串和另一个包含字符串列表的文本文件 当两个字符串按字母顺序排序后完全相同时 我们将它们称为 兄弟字符串 例如 abc 和 cba 会被排序为 abc 和 abc 所以原来两者是兄弟关系 但 abc 和 aaa 则不然 那么 有没
  • Windows 上 Python 3.1 的 SendKeys

    最新的 Python Sendkeys 模块适用于 Python 2 6 我无法自己升级它 因为它需要重新编译 C 模块 有谁知道将密钥发送到窗口的相当简单的替代方法 使用 win32ui FindWindow 我可以找到正确的窗口 然后使
  • C#/.NET 中方法的自动记录异常 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想要一些工具 最好是能够插入 VS 2008 2010 的工具 它将遍历我的方法并添加有关它们可能抛
  • cv::Mat 的序列化给出了奇怪的结果

    我目前正在尝试序列化和反序列化 openCV Mat 以便我可以使用 Boost 将帧从客户端发送到服务器 我遇到的问题是 当我反序列化图像时 它会给出不同颜色的重复重叠图像 我不知道为什么会发生这种情况 任何帮助将非常感激 很抱歉我无法发
  • jquery事件优先级

    我有两个函数挂在submit表单的事件 每个功能都位于不同的位置 并且一个功能可以影响另一个功能 如何强制这些函数之一以最低优先级挂钩 即最后执行 我能想到的有四种方法 您自己管理回调 并且只有一个事件处理程序以所需的顺序调用函数 在应该最
  • 多对多关系、复选框的 CRUD 视图

    我很难弄清楚我需要做什么才能让它发挥作用 我正在使用 EF 学习 ASP NET MVC CodeFirst 如果我创建一个模型 我可以简单地为该模型添加一个控制器 并添加脚手架来创建自动处理 CRUD 的视图 但现在我有两个模型 项目和类
  • 如何隐藏跟踪像素

    不幸的是 我有一个跟踪像素 导致页脚底部出现一个小白条 隐藏像素的最佳方法是什么 我正在考虑将它 和我的其他像素 放入position absolutediv 它正确隐藏了栏 但我不确定这是否会阻止像素在某些浏览器上工作 From 谷歌支持
  • MVC3如何在控制器的类中发布列表?

    我有一堂课 public class CarList public int quantity get set public List
  • 基于Radius Google Maps iOS SDK更改相机变焦

    我正在开发一个应用程序 它根据当前位置周围的半径显示某些标记 半径在100 5000米之间 我用一个改变半径UISlider并重新绘制GMSCircle 我的问题是我想根据滑块值更新相机变焦 但我不知道要按哪个比例划分 这就是我在中创建相机
  • Spring JPA @Query JPQL 失败并显示“意外标记:DATE”

    我正在使用 Spring Data JPA 我想查询我的结果并过滤它们 在 SQL 中 我会像这样编写查询 针对 DB2 数据库 SELECT FROM CAR WHERE ACCIDENT YEAR IS NULL OR BUY YEAR
  • GKE VPC 本机集群以及与 Cloud SQL 的连接

    GKE 集群中的 VPC Native 是什么 VPC Native 禁用 GKE 集群 是否限制通过私有 IP 连接到 Cloud SQL 我们有一个 GKE 集群 其 VPC Native 被禁用 并且我们在 cloud sql 中将
  • 如何在 Python 中使用 OpenCV 存储网络摄像头视频

    我有一个 Python 脚本 它可以读取我的网络摄像头并将其显示在窗口中 我现在想存储结果 所以如下本教程 http opencv python tutroals readthedocs io en latest py tutorials
  • EJB 和 CDI bean 序列化的最佳实践

    我还没有遇到任何与序列化相关的问题 但 PMD 和 Findbugs 检测到一系列有关序列化的潜在问题 一个典型的情况是注入的记录器被检测为不可序列化 但还有更多 EntityManager和一些 CDI 豆 我还没有找到任何关于如何正确处