有人可以帮助我。这是我的问题:
我尝试使用jms发送一个对象(这部分有效)并使用jms接收它。
我的对象很简单。 3个字符串,3个int和一个布尔值。
没有连接问题或类似问题。我收到了对象,但是好像我一一收到了所有东西。
这是我的MessageListener:
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);
最后,这是我要发送的内容(在receive.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 =(ObectToSend)myMessage.getObject();
但.....
最佳答案
对于JMS的未来用户,我将回答我自己的问题。
很难找到任何信息,因为JMS文档中没有对此进行说明。
我发现很多人都在问该怎么做,但是却没有任何答案。那是因为它不依赖于JMS,而是依赖Java。
所以就这样:
如果您想使用相同的类(对象),例如
ObectToSend yo = (ObectToSend) myMessage.getObject();
我的第一个对象(yo)来自com.test.jms包中的ObectToSend.java类,而我的第二个对象(myMessage.getObject())来自com.test.jms2包。因此,我有一个类似“ notfoundclass”的异常。并且不能投射物体。
两个项目中都应该包含ObectToSend.java类。但是您不能只复制具有相同名称的粘贴(我愚蠢地这样做)。
您需要创建在两个项目/程序包中使用的类的jar并将其添加到两个项目中。
这样,您就可以使用完全相同的类,而不是它的副本。和您的2个对象完全相同。