java.jms.MapMessage getString属性
我只搜索了一个答案,但没有找到任何答案。 谢谢你抽出时间。 在使用map.message通过JMS队列发送的java.jms.MapMessage getString属性,java,string,jms,Java,String,Jms,我只搜索了一个答案,但没有找到任何答案。 谢谢你抽出时间。 在使用map.message通过JMS队列发送的字符串上执行if语句时,我遇到了一些问题 这是代码(该部分仅用于创建和检索来自MapMessage的信息) 消息创建 for (int i = 0; i < 5; i++) { if (Math.random() < 0.5f) { msg.setStringProperty("tipo", "MUL"); msg.setBoolean("operazi
字符串上执行if
语句时,我遇到了一些问题
这是代码(该部分仅用于创建和检索来自MapMessage
的信息)
消息创建
for (int i = 0; i < 5; i++) {
if (Math.random() < 0.5f) {
msg.setStringProperty("tipo", "MUL");
msg.setBoolean("operazione", true);
} else {
msg.setStringProperty("tipo", "SUM");
msg.setBoolean("operazione", false);
}
msg.setInt("operando1", (int) (Math.random() * 100));
msg.setInt("operando2", (int) (Math.random() * 100));
sender.send(msg);
}
如果我试图使用
if(tipo.equals(“MUL”))
或if(tipo.equals(“SUM”)
即使tipo变量的打印值等于SUM或MUL,代码也始终运行else分支,有人知道为什么吗?谢谢
我尝试强制转换msg.getStringProperty(“tipo”)
,或者使用=
而不是equals
。ICounter是RMI接口,可以正常工作。使用
if(tipo.compereTo(“SUM”)==0)
而不是if(tipo==“SUM”)
或if(tipo.equals(“SUM”)
谁能告诉我为什么?谢谢您不应该在实例级别(op1、op2、tipo
等)声明变量,因为根据Q管理器和设置,onMessage
方法很有可能被并行调用。还有,为什么要将“
连接到message.getStringProperty(“tipo”)
?最后,ic
和r.lookup()
节是做什么的?r还有,为什么您使用的是MapMessage而不是普通的消息
消息,因为您没有设置消息体(aMap
),我将“
连接到消息.getStringProperty(“tipo”)
将其转换为字符串
变量ic
是接口ICounter
(实现两种方法的加法和乘法)的一个实例,我使用r.lookup()
,因为我使用RMI,ICounter
是一个远程接口。我使用MapMessage
,因为这是一个旧examFYIgetStringProperty()
的文本,已经返回了一个字符串。您是否尝试在实例级别声明onMessage()
方法insetad中的所有变量?是的,我尝试过,但没有解决问题
int op1 = 0, op2 = 0, ris = 0;
String tipo = null;
int k = 0;
boolean operazione;
public MyListener() {
// TODO Auto-generated constructor stub
}
public void onMessage(Message msg) {
java.rmi.registry.Registry r;
try {
r = LocateRegistry.getRegistry();
ICounter ic = (ICounter) r.lookup("counter");
MapMessage message = (MapMessage) msg;
tipo = "" + message.getStringProperty("tipo");
System.out.println(tipo);
op1 = message.getInt("operando1");
op2 = message.getInt("operando2");
operazione = message.getBoolean("operazione");
if (operazione) {
ris = ic.moltiplica(op1, op2);
System.out.println("moltiplico");
} else if (!operazione) {
ris = ic.somma(op1, op2);
System.out.println("sommo");
} else {
System.out.println("messaggio non valido");
}
}
}