Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.jms.MapMessage getString属性_Java_String_Jms - Fatal编程技术网

java.jms.MapMessage getString属性

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

我只搜索了一个答案,但没有找到任何答案。 谢谢你抽出时间。 在使用map.message通过JMS队列发送的
字符串上执行
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而不是普通的
消息
消息,因为您没有设置消息体(a
Map
),我将
连接到
消息.getStringProperty(“tipo”)
将其转换为
字符串
变量
ic
是接口
ICounter
(实现两种方法的加法和乘法)的一个实例,我使用
r.lookup()
,因为我使用RMI,
ICounter
是一个远程接口。我使用
MapMessage
,因为这是一个旧examFYI
getStringProperty()
的文本,已经返回了一个
字符串。您是否尝试在实例级别声明
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");
        }
    } 
}