Apache Camel inOut маршруты, обмен маршалинг / демаршаллинг с jaxb - PullRequest
0 голосов
/ 28 марта 2011

у нас есть этот верблюжий апачский маршрут,

from(commandDrop).marshal(jaxbDataFormat).to(jmsQueue);    
from(jmsQueue).inOut("jms:doCommand?requestTimeout=500000");          
from("jms:doCommand").unmarshal(jaxbDataFormat).beanRef("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 объекты класса, которые не сериализуются. С ними хорошо справляется маршал / демаршал в прямом направлении, и было бы здорово, если бы они могли быть на пути назад. Я относительно новичок в верблюде, поэтому не уверен, что это лучший способ сделать это.

спасибо большое.

1 Ответ

1 голос
/ 28 марта 2011

Вы можете использовать его после вызова боба

from("jms:doCommand").unmarshal(jaxbDataFormat).beanRef("bean").marshal(jaxbDataFormat);
...