0

このApacheCamelルートがあります。

from(commandDrop).marshal(jaxbDataFormat).to(jmsQueue);    
from(jmsQueue).inOut("jms:doCommand?requestTimeout=500000");          
from("jms:doCommand").unmarshal(jaxbDataFormat).beanRef("bean");

....そしてこのようなBeanクラス

class BeanClass {
        public void doCommand(Command command, Exchange exchange){
    {       
        command.run();      
        exchange.getOut().setBody(command);     
    }
}

私たちはメッセージを入れて、このようなルートで返信を待とうとしています

Object ret = template.requestBody(commandDrop, new TestCommand());

順方向のルート上のオブジェクトは、見事にマーシャリング/アンマーシャリングされています。しかし、setBody呼び出しにより、java.io.NotSerializableExceptionが発生しています。帰りに同じjaxbマーシャリング/アンマーシャリングを使用するようにルートを構成する方法はありますか?私のCommandクラスには、シリアル化できないjaxbで生成されたクラスオブジェクトがいくつか含まれています。それらは前向きのマーシャル/アンマーシャルによってうまく処理され、それらが帰りにあることができれば素晴らしいでしょう。ラクダは比較的新しいので、これがこれを行うための最良の方法であるかどうかはわかりません。

本当にありがとう。

4

1 に答える 1

1

Beanの呼び出し後にマーシャリングできます

from("jms:doCommand").unmarshal(jaxbDataFormat).beanRef("bean").marshal(jaxbDataFormat);
于 2011-03-28T11:26:50.480 に答える