java setattribute_java – HttpSession setAttribute并不总是插入新对象「建议收藏」

java setattribute_java – HttpSession setAttribute并不总是插入新对象「建议收藏」我正在从WLS10g和JavaEE6升级到WLS12c和JavaEE7.我注意到HttpSession.setAttribute的工作方式有所不同.在WLS10中,任何已存储在某个键下的对象都将被替换.在WLS12中,如果newObject.equals(oldObject),则不替换该对象.这对我们来说是个问题,因为应用程序有这样的对象:classValueObject{intkey;St…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我正在从WLS10g和

JavaEE6升级到WLS12c和JavaEE7.

我注意到HttpSession.setAttribute的工作方式有所不同.在WLS10中,任何已存储在某个键下的对象都将被替换.

在WLS12中,如果newObject.equals(oldObject),则不替换该对象.

这对我们来说是个问题,因为应用程序有这样的对象:

class ValueObject {

int key;

String data;

@Override

public int hashCode()

{

return key;

}

boolean equals(Object o) {

if (o == null || (o instanceof ValueObject) == false) {

return false;

}

ValueObject otherObject = (ValueObject)o;

/* Return true if the keys are equal, even though the data may differ */

return key == otherObject.key;

}

}

ValueObject通过跨多个网页的工作流进行修改.中间值存储在HTTPSession中,在工作流结束时,修改后的值将写入数据库.

在servlet中有这样的代码(成员实际上是通过getter / setter修改的,但我正在简化以减少问题中的代码量):

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {

HttpSession session = request.getSession();

ValueObject newValue = new ValueObject();

newValue.key = Integer.parseInt(request.getParameter(“key”));

newValue.data = request.getParameter(“data”);

session.setAttribute(“value”, newValue);

newValue.key未修改,而newValue.data具有新值.

WLS12中HttpSession的修改行为打破了这种模式 – 当从会话中检索对象时,我们从第一步获取数据,因为当我们尝试存储更新版本时,对象未被替换.

我们可以通过更改所有更新来解决此问题:

session.setAttribute(“value”, newValue);

session.removeAttribute(“value”);

session.setAttribute(“value”, newValue);

但是,有超过100个servlet因此需要做很多工作.并且解决方法既丑陋又容易出错,因为程序员在编写代码时需要跟踪另外一件事.

有没有办法配置WLS12c来使用旧的行为,其中对象总是被HttpSession.setAttribute()替换?

更新2015-09-30:

向Oracle提交的错误报告.我尝试过wero建议的过滤器想法.似乎Weblogic期望来自过滤器链的对象属于weblogic.server.internal.ServletRequestImpl类,因为当我将其包装并将包装器发送到过滤器链时,我从内部Weblogic类获得了ClassCastException.

我还检查了Gimby建议的配置选项.我找不到会议的任何适用选项.我们部署到单个服务器并使用内存作为会话持久性设置.

更新2016-02-03:

Oracle已将错误报告关闭为“不是错误”.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183723.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月31日 下午6:36
下一篇 2022年8月31日 下午6:46


相关推荐

  • 在线校验哈希算法_哈希值查询

    在线校验哈希算法_哈希值查询地址http://www.atool9.com/hash.php

    2025年11月5日
    4
  • vscode设置快捷键删除行

    vscode设置快捷键删除行开发中习惯的快捷键删除:ctrl+Dvscode的删除快捷键:ctrl+shift+K修改方式:默认ctrl+D被addselectiontonextfindmatch使用, 先修改调它的快捷键,如图改为ctrl+shift+alt+D,按回车键保存 在修改DeleteLine的快捷键为ctrl+D,按回车键保存 完成…

    2022年6月26日
    125
  • Cinemachine使用

    Cinemachine使用根据BeaverJoe教程总结笔记,素材来源:https://www.bilibili.com/video/BV1oa4y1s7gg创建相机后主相机会自动添加Brain组件,主相机决定使用哪个虚拟相机,虚拟相机的数值会同步调整到主相机上,主相机无法手动控制:此时相机已经会自动跟随物体;选择相机跟随哪个物体,一般2Dfollow,3Dlookat:Body部分saveduringplay:退出运行后会保存运行时的数值;x、y、zDamping控制缓慢移动的速度,值越大越慢;决定相机

    2022年5月28日
    94
  • torch torchvision 下载安装与使用

    torch torchvision 下载安装与使用本文仅供学习交流使用,如侵立删!联系方式及demo下载见文末torch和torchvision版本对应关系表torch下载官方下载地址:https://download.pytorch.org/whl/torch_stable.html选择对应版本下载即可torch安装安装命令:pipinstalltorch-1.5.1+cpu-cp36-cp36m-win_amd64.whlpipinstalltorchvision-0.6.0+cpu-cp36-cp

    2022年6月24日
    122
  • live2d 添加对应mine值,mtn,moc文件404

    live2d 添加对应mine值,mtn,moc文件404

    2022年2月20日
    51
  • IOSG Ventures宣布加入Celer状态守卫者网络以及cBridge流动性桥接网络

    IOSG Ventures宣布加入Celer状态守卫者网络以及cBridge流动性桥接网络IOSGVentures宣布加入Celer状态守卫者网络,并已建立Celer验证人节点。同时,IOSGVentures也宣布加入CelercBridge流动性桥接网络,为其提供流动性。IOSGVentures将与Celer共同维护其二层扩容网络的可用性和安全性,并为其生态发展提供持续可靠的基础设施服务。IOSGVentures现已成为Celer状态守卫者网络验证人节点IOSGVentures成立于2017年,是由社区驱动的研究型早期美元基金,在中国、美国和新…

    2022年6月4日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号