1

単純なJavaBeanをJMS経由で別のJavaアプリケーションに送信するJavaアプリケーションがあります。

これはActiveMQで完全に正常に機能しますが、Tibco JMS Brokerに切り替えると、受信側のアプリケーションでエラーがスローされます。BeanはSerializableインターフェースを実装し、両方のアプリケーションはBeanのクラスを含む同じjarから実行されます。

tibjmsd.exeを使用してTibcoJMSを起動します。バージョンは4.1.0です。

送信側のJavaクライアント内からの簡単なチェックにより、以下のエラーが生成されます。

コード:

..
....
MyBean bean = new MyBean(1,”Test”);
final ObjectMessage msg = jmssession.createObjectMessage(bean);
    try {
        msg.getObject();
    } catch (Exception e) {
        LOG.error("Problem with storing bean", e);
    }
....
..

上記のコードからのエラーメッセージ:

javax.jms.MessageFormatException: Deserialization failed: [Ljava.lang.String;
     at com.tibco.tibjms.TibjmsObjectMessage.getObject(TibjmsObjectMessage.java:199)

ActiveMQを実行すると、同じコードがエラーなしで機能します。実行または確認できることはありますか?

4

1 に答える 1

1

まず第一に、あなたはそのlinkedExceptionために見つける必要がありますJMSException

catch(MessageFormatException mfe)
{
      mfe.printStackTrace(); // what you told us
      mfe.getLinkedException().printStackTrace(); // the interesting one
}

TibjmsObjectMessage$CLOIS.resolveClassこれは、ネイティブ配列のクラス名を正しく解析できないことに関連していると思います。

longメッセージ に単純なものを含めるのに問題があるようです: https ://jira.springsource.org/browse/SPR-1231?page = com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel

そして、うまくいく提案された解決策は、オブジェクトを自分でシリアル化して使用することjavax.jms.BytesMessageです。

于 2012-04-25T09:40:44.210 に答える