gpt4 book ai didi

java - 用jms java接收对象

转载 作者:行者123 更新时间:2023-11-29 05:02:43 25 4
gpt4 key购买 nike

谁能帮帮我。这是我的问题:

我尝试用 jms 发送一个对象(这部分有效)并用 jms 接收它。我的对象很简单。 3 个字符串、3 个整数和一个 boolean 值。

没有连接或类似问题。我收到了元素,但好像我一件一件地收到了所有东西。

这是我的消息监听器:

 MessageListener listner = new MessageListener() {
public void onMessage(Message message) {

ObectToSend yo=null;

try {
if (message instanceof ObjectMessage) {
ObjectMessage myMessage = (ObjectMessage) message;
System.err.println("test");
yo = (ObectToSend) myMessage.getObject();
System.err.println("test2");
System.err.println(yo.entite + " " + yo.error + " " + yo.idGloreg + " " + yo.indPerso + " " + yo.nom + " " + yo.prenom + " " + yo.nom);
}
} catch (JMSException e) {
System.out.println("Caught:" + e);
e.printStackTrace();
}
}
};

那是我的发送部分:

 Serializable ObectTest = new ObectToSend("pro", "enc", 134, 10, true, "yayaya", 0);

MessageProducer producer = session.createProducer(topic);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);

ObjectMessage message = session.createObjectMessage();

message.setObject(ObectTest);
connection.start();
producer.send(message);

最后这是我要发送的内容(在 receiver.java 和 sender.java 中):

 public static class ObectToSend implements Serializable{

private static final long serialVersionUID = 1L;
String prenom;
String nom;
int idGloreg;
int indPerso;
boolean ok;
String entite;
int error;

ObectToSend(String prenomP, String nomP, int idGloregP, int indPersoP, boolean okP, String entiteP, int errorP){
prenom = prenomP ;
nom= nomP;
idGloreg = idGloregP;
indPerso = indPersoP;
ok = okP;
entite= entiteP;
error = errorP;
}
}

我的控制台:

test
test
test
test
test
test
test

如果有人能告诉我问题是什么,那就太好了。我不明白。我的带有主题/队列/同步/异步的短信工作得很好。它谈到反对和......看来问题出在这里: yo = (ObjectToSend) myMessage.getObject();但是……

最佳答案

对于 JMS 的 future 用户,我将回答我自己的问题。

JMS 文档中没有解释,因此很难找到任何信息。

我发现很多人问如何去做,但从来没有任何答案。那是因为它与 JMS 无关,而是与 Java 相关。

就这样吧:

如果你想使用相同的类(对象),比如

ObectToSend yo = (ObectToSend) myMessage.getObject();

我的第一个对象 (yo) 来自包 com.test.jms 中的类 ObectToSend.java,我的第二个对象 (myMessage.getObject() ) 来自包 com.test.jms2。所以我有一个像“notfoundclass”这样的异常(exception)。并且不能转换对象。

类 ObectToSend.java 应该在两个项目中。但是你不能只复制同名的粘贴(我愚蠢地做了)。您需要为两个项目/包中使用的类创建一个 jar,并将其添加到两个项目中。

这样你就可以使用完全相同的类而不是它的副本。而你的 2 个对象是完全一样的。

关于java - 用jms java接收对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520062/

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