2011-03-28 7 views
0

우리는이 아파치 낙타 경로가와 비 정렬 화 교환 마샬링 밖으로 경로/아파치 낙타 입출력의 JAXB

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);  
    } 
} 

같은 빈 클래스 메시지 및 GETT있는 전진 방향으로 노선에이

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

객체와 같은 경로에 대한 응답을 기다립니다 마샬링/언 마샬링 된 멋지다. 그러나 setBody 호출로 인해 java.io.NotSerializableException이 발생합니다. 경로를 다시 구성 할 때 동일한 jaxb 마샬링/언 마샬링을 사용하도록 구성 할 수 있습니까? My Command 클래스에는 직렬화 할 수없는 jaxb 생성 클래스 객체가 포함되어 있습니다. 그들은 마샬/언 마샬에 의해 정방향으로 잘 처리되며, 돌아 오는 길에있을 수 있다면 좋을 것입니다. 비교적 낙타에 익숙하지 않으므로 이것이 최선의 방법인지 확실하지 않습니다.

감사합니다.

답변

1

당신은 콩 호출

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

아하 후 마샬링 할 수 있습니다. 이것은, 호출 측의 바이트 배열을 돌려줍니다. 어느 쪽이 좋을까, retCommand = (Command) jaxbContext.createUnmarshaller(). unmarshal (new ByteArrayInputStream (ret)); 고맙습니다! – Mustafa