gpt4 book ai didi

java - 在运行时修改 Java 类以使实例字段 transient ——它会起作用吗?

转载 作者:行者123 更新时间:2023-12-04 06:59:40 25 4
gpt4 key购买 nike

每当我们使 HTTPSession 具有不可序列化的对象(我们不关心但会污染我们的日志)时使 HTTPSession 无效时,就会收到来自 Weblogic 的烦人的日志消息。调整我们的 log4j 配置以不记录此消息似乎不是一个选项(该消息来自通用 Weblogic 类,我们不想抑制来自此类的所有消息,除了编写我们自己的适配器来查看即将被写入日志并抑制反序列化错误消息我不知道我们将如何通过 log4j 配置来做到这一点)。

为了暂时解决这个问题以清理我们的日志,我想拦截将对象添加到 HTTP session 的调用,以便添加的对象的类(及其对象图中的任何对象)将它们的实例变量声明更改为 transient 。我想我会通过添加一个 HTTPSesssionEventListener 来拦截调用,然后使用反射库修改类的实例变量。

有谁知道这是否有效?

最佳答案

Does anyone have a better suggestion and/or know if this will/will not work like I would want it to?



是的。 按规范 build !

符合 Java Servlet 规范:

The distributed servlet container must throw an IllegalArgumentException for objects where the container cannot support the mechanism necessary for migration of the session storing them.



因此,如果您想避免此消息(并编写良好的可移植和可分发代码),只需制作您放入 HttpSession 中的对象即可。实现 Serializable界面。

说真的,我不敢相信您正在考虑解决实际问题而不是解决问题的解决方案。

关于java - 在运行时修改 Java 类以使实例字段 transient ——它会起作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com