5

使ってます:

  • 春3.1.1
  • ActiveMQ 5.6.0

私は2つのJMSアプリを持っています:

  • アプリAはJmsTemplateを使用して、jmsTemplate.convertAndSend(msg);を使用してドメインオブジェクトを送信します。
  • アプリBはメッセージリスナーを使用し、メッセージコンバーターが登録されています

受信したメッセージが変換されると、null値が抽出されます。

これはかなり単純なはずですが、null値を取得していて、何が間違っているかを確認するための例が見つかりません。

誰かがこれがどのように機能するか説明できますか?

ドメインオブジェクト

public class MyDomainObj implements Serializable {

private static final long serialVersionUID = -5411260096045103654L;
private String name;
private String msg;

public MyDomainObj() {

}

public MyDomainObj(String name, String msg) {
    this.name = name;
    this.msg = msg;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

}

アプリA

@Component
public class MessageSender {

    @Autowired
    private JmsTemplate jmsTemplate;

    public MessageSender() {

    }

    public void sendMessage(MyDomainObj msg) {
        jmsTemplate.convertAndSend(msg);
    }
}

アプリB

@Component
public class MyReceiverConverter implements MessageConverter {

    @Override
    public Object fromMessage(Message msg) throws JMSException,
            MessageConversionException {

        MyDomainObj myDomainObj = new MyDomainObj(msg.getStringProperty("name"), msg.getStringProperty("msg"));


        return myDomainObj;
    }

    @Override
    public Message toMessage(Object msg, Session session) throws JMSException,
            MessageConversionException {

        ....
    }
}
4

1 に答える 1

3

解決策は次のとおりです。

@Override
public Object fromMessage(Message msg) throws JMSException,
        MessageConversionException {

    MyDomainObj myDomainObj = (MyDomainObj)((ObjectMessage)msg).getObject();

    return myDomainObj;
}
于 2012-08-08T11:36:34.390 に答える