gpt4 book ai didi

java - JMS ObjectMessage 中保存的对象是否可以或是否与发布时的实例相同?

转载 作者:行者123 更新时间:2023-11-30 05:00:57 25 4
gpt4 key购买 nike

我认为这是一个愚蠢的问题,但我无法在 JMS getting started guide 中找到我正在寻找的答案。 ,或者确实在网络上的其他地方。 This jGuru post建议以下场景中的线程安全性取决于应用程序设计者。

场景

Object 视为 HttpSession 的属性。该对象的类型为 ProductQuote

在 Java Servlet 中,我从请求中获取一些输入,并将它们设置为 ProductQuote 的新实例中的字段,然后使用我的另一个类来推送相同的 ProductQuote code> 实例到 JMS 队列。

在一个单独的线程上,该对象通过容器从队列中弹出,并通过 onMessage(Message message) 传递给我的消息驱动 bean(“MDB”),它实现 MessageListener方法。 MessageListener 接口(interface)的这个特定实现将改变实例中的字段,然后丢弃消息,干净地执行。

问题

ProductQuote 的实例是否有可能将与另一个线程中的 MDB 使用的实例完全相同的实例推送到 Servlet 中的队列?

我假设相反的情况也是可能的(如果不是总是如此;我试图填补我的知识空白):推送到队列/主题的实例与传递给消费者的实例不同。

编辑为了进一步说明,我正在考虑给定场景中的线程安全性,其中 session 中的对象可以在 MDB 修改/读取它的同时进行修改。

请原谅这个愚蠢的问题。

最佳答案

我认为答案是 - 是的,有可能......(虽然不太可能)查看 JMS 规范,似乎对此没有任何保证,因此它可能取决于您选择的 JMS provider 。仅仅因为规范规定对象必须实现 Serialized 并不意味着它将被序列化。不过,我想补充一点,如果它是同一个对象,因为 JMS 经常用于在应用程序之间执行消息传递,因此该对象必须已序列化,我会感到惊讶。

关于java - JMS ObjectMessage 中保存的对象是否可以或是否与发布时的实例相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745172/

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