无法序列化会话 Bean - 引发警告

2024-03-27

我正在使用 EclipseLink (JPA 2.0) 在 netbeans 中运行 JSF + Primefaces + tomcat 6.0.32 的环境。

我的应用程序工作正常,但每次运行它时,我都会收到很多警告,指出无法序列化我的会话 bean,并为每个会话 bean 显示这样的块:

18-jul-2012 23:05:46 org.apache.catalina.session.StandardSession writeObject
ADVERTENCIA: No puedo serializar atributo de sesión facturacionController para sesión 62A53325838E1E7C6EB6607B1E7965E6
java.io.NotSerializableException: org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    ... and so on...

问题是我的会话 bean 已经实现了可序列化。 那么我能做些什么来解决这个问题呢?

Thanks !

---- 添加信息 07/20/2012 ----

我从会话 bean 引用 EntityManager 的唯一一点是当我在 getter 属性中创建 jpaController 时,如下所示:

private JpaController getJpaController() {
    if (jpaController == null) {
        jpaController = new JpaController(Persistence.createEntityManagerFactory("myPersistenceUnit"));
    }
    return jpaControllerPedido;
}

那是因为我像这样定义了 jpaController 构造函数:

public JpaController(EntityManagerFactory emf) {
    this.emf = emf;
}

使类可序列化并不意味着其中的所有内容都将是可序列化的。类中的所有引用(依赖项/属性),它们本身应该是可序列化的,反过来它们的引用也应该是可序列化的。

根据上面的异常,您的会话 bean 似乎引用了不可序列化的 EntityManagerFactoryImpl 对象,因此出现错误。

为了解决这个问题,你可以将其定义为transient它不会被序列化,但唯一的问题是在反序列化期间,您必须手动构建对象或分配引用。

我建议看看这篇文章序列化 http://www.ibm.com/developerworks/java/library/j-5things1/index.html.

如何解决这个问题,我不做 JPA,所以无法判断是否有相同的序列化类,

为了解决这个问题,将参考定义为transient

transient EntityManagerFactory entityManagerFactory

并在反序列化钩子方法中手动将引用分配回bean,如下所述。

private void readObject(java.io.ObjectInputStream stream)
        throws java.io.IOException, ClassNotFoundException
    {
        stream.defaultReadObject();

        // assign reference manually.
        this.entityManagerFactory =  //get from factory;
    }

希望这可以帮助 !!!!

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

无法序列化会话 Bean - 引发警告 的相关文章

随机推荐

  • Term::ReadKey,原始模式下的非阻塞读取:检测到 EOF?

    当我将内容通过管道传输到程序中时 它似乎没有获得任何像 0x4 这样的字符来指示 EOF echo abc map cat saw a x61 saw b x62 saw c x63 saw x0A zzzbc C 我必须按 Ctrl C
  • 如何直接从我的 Gitlab 存储库部署到 Heroku

    在我的团队中 我们使用 Gitlab 作为远程存储库 因此我们正在寻找一种解决方案来将应用程序自动部署到 Heroku 我们找到了 Codeship 用于从 Github 自动将应用程序部署到 Heroku 有小费吗 技巧 如果您不准备使用
  • 波特 油炸的去梗

    为什么波特词干算法在线 http text processing com demo stem http text processing com demo stem stem fried to fri并不是fry 我不记得任何以以下结尾的单词
  • Mjpeg 在最近的 Mobile Safari 上损坏了?

    我正在处理来自 IP 摄像机的实时 mjpeg 流 发现最近发布的 Mobile Safari 似乎对 mjpeg 的支持被破坏了 我正在使用一个带有嵌入图像的简单 HTML 测试页面 如下所示 img src http ip addres
  • 使用流复制文件

    以下示例演示如何使用流复制文件 private void copyWithStreams File aSourceFile File aTargetFile boolean aAppend log Copying files with st
  • Android底部导航视图项目图标大小[重复]

    这个问题在这里已经有答案了 I need to do a bottom navigation view in Android like this I tried and now I have something like this 如何增加
  • 在 Clojure 中实现 cron 类型调度程序

    我正在寻找任何可以在给定时间触发事件的 clojure 方法 例如 我希望一个特定的进程在上午 9 30 启动 然后我可以触发另一个进程在半小时后开始运行 等等 提前致谢 更新2 感谢 arthur ulfeoldt 和 unknown p
  • 是否可以将 Camera2 与 Google Vision API 一起使用

    是否可以仅使用 Camera2 和 Google Vision API 来检测人脸 我找不到整合它的方法 是的 可以将 Camera2 API 与 Google Vision API 一起使用 首先 Google Vision API 人脸
  • 使用 SDK 在 azure 函数中将 Azure blob 存储转换为 JSON

    我正在尝试创建一个计时器触发器 azure 函数 该函数从 blob 获取数据 聚合数据 并将聚合结果放入 cosmosDB 中 我之前尝试使用 azure 函数中的绑定来使用 blob 作为输入 但我被告知这是不正确的 请参阅此线程 Az
  • 如何以编程方式读取 EF DbContext 元数据?

    我有使用 EF CodeFirst 5 的应用程序 dll 版本 4 4 0 0 在 net 4 0 上 我需要能够读取实体元数据 以便我可以针对给定的条目类型获取以下信息 哪些属性是一对多关系 引用实体 哪些属性是多对一关系 引用当前实体
  • 从 SQL Server 中的日期时间字段中获取“日期”

    我有一个日期列 其中日期以格式显示2009 11 18 10 55 28 370 我只想从该值中获取日期 而不是时间 我怎么做 如果您使用的是 SQL Server 2008 则现在有 DATE 数据类型 让它变得更加自然 SELECT C
  • PHP Curl 收到 502:错误网关错误

    在浏览器中 该 url 有效 当我尝试使用 PHP curl 时 我得到了 502 Bad Gateway error 这是我的代码 ch curl init curl setopt ch CURLOPT URL url query str
  • popen vs system:popen 和 system 一样邪恶吗?

    popen 缓冲输出 而系统则不缓冲 这是唯一的区别吗 据我所知 popen 和 system 都通过 shell 运行命令 然而 popen 是evil http www cplusplus com forum articles 1115
  • 使用“using”关键字使继承的构造函数公开[重复]

    这个问题在这里已经有答案了 我正在尝试测试我的类的受保护方法和构造函数 为此 我尝试对其进行子类化 并使用 C 11 将其成员重新导出为 publicusing关键词 class Foo protected Foo int i void r
  • 添加对 CountVectorizer (sklearn) 的词干支持

    我正在尝试使用 sklearn 将词干添加到 NLP 中的管道中 from nltk stem snowball import FrenchStemmer stop stopwords words french stemmer French
  • Keycloak java.lang.NoClassDefFoundError:使用 Springboot 的 java/security/acl/Group

    因此 我们正在构建一个带有 Keycloak 集成的 Spring Boot 后端 但是在 docker swarm 服务上运行后端时出现以下错误 2020 06 29 21 17 51 694 ERROR 1 nio 3304 exec
  • MigraDoc C# 在同一行左右对齐

    我有一个带有单元格的表格 其中我想要两个文本 第一个文本左对齐 第二个文本右对齐 位于同一单元格的同一行上 我尝试使用 MigraDoc 重现此单元 但没有成功 我只能添加左右对齐的两个文本 但不能在同一行上 这是我的代码 Cell cel
  • 在 Python 中向已运行的 cmd 发送命令

    我有一个Python脚本可以绕过Windows中的UAC 绕过用户帐户控制 然后我需要能够以某种方式与打开的 CMD 进行通信并向其传递命令 例如 回声测试 我只能找到打开新命令并与其通信的代码 然而 这并没有帮助 因为我需要与我通过 UA
  • 如何在没有 UDID 的情况下跟踪 iOS5 上的下载

    谁知道如何在没有 UDID 的情况下跟踪 iOS 应用程序下载 通过网络广告 我认为这是不可能的 特别是如果用户从网站转到 AppStore 但一家名为 WDA 的公司似乎使这成为可能 http www lovefortech com 20
  • 无法序列化会话 Bean - 引发警告

    我正在使用 EclipseLink JPA 2 0 在 netbeans 中运行 JSF Primefaces tomcat 6 0 32 的环境 我的应用程序工作正常 但每次运行它时 我都会收到很多警告 指出无法序列化我的会话 bean