gpt4 book ai didi

java - JMS ObjectMessage 类路径

转载 作者:行者123 更新时间:2023-12-01 12:05:46 25 4
gpt4 key购买 nike

我正在尝试使用 Java EE JMS 创建一个简单的示例。

如果我尝试接收 ObjectMessage,我需要与发送 ObjectMessage 的其他项目具有完全相同的路径(包名称)。

例如,我在发送方项目中的包“org.queue.sender”中有一个名为 Person 的类,而在我的接收方项目中的包“org.queue.receiver”中有一个完全相同的类。

正如已经说过的,如果我尝试获取对象消息,我会收到以下异常:java.lang.ClassNotFoundException:org.queue.sender.Person

如果我在接收器项目中创建一个名为 org.queue.sender 的新包并将 Peron 类传输到那里,那么它就会运行。但我认为我不能成为真正的解决方案。

有更好的解决方案吗?

最佳答案

来自JavaDoc :

An ObjectMessage object is used to send a message that contains a serializable object in the Java programming language ("Java object"). It inherits from the Message interface and adds a body containing a single reference to an object. Only Serializable Java objects can be used.

因此,通过 ObjectMessages 传递的对象必须是可序列化的,即它必须是相同的类和完全相同的包。

如果您需要更灵活地处理消息,我建议您使用例如TextMessage 并使用例如序列化/反序列化对象JSON 或 XML。

ObjectMapper mapper = ... ; // Get hold of a Jackson ObjectMapper
session.createTextMessage(mapper.writeValueAsString(myPojo));

// and on the receiving side
TextMessage message = ....; // From the message receiver
MyPojo myPojo = mapper.readValue(message.getText(), MyPojo.class);

关于java - JMS ObjectMessage 类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623929/

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