Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > преобразование объектов при работе с ActivemQ


Автор: PerchFish 26.3.2013, 16:21
Попытка применить в проекте Camel+activemq для передачи сообщений и возникла проблема при использовании не текстовых сообщений. При сериализации возникают подобные проблемы. Передать в одну сторону получается, но вернуть ответ вызывает проблемы.

Есть класс
Код

@XmlRootElement
@XmlType
public class Customer{
    String name;

    public Customer() {
    }

    public Customer(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
    @XmlElement
    public void setName(String name) {
        this.name = name;
    }

}


Маршрут описываю след образом
Код

public class ServerRoutes extends RouteBuilder {

    @Override
    public void configure() throws Exception {
     
       from("jms:queue:testcust").to("bean:customerReciever");
  }
}


Ресивер 
Код

public class CustomerReciever {

    public Customer receive(Customer customer) {
     System.out.print(customer.getName());
        return customer;
    }
}


Отправка
Код

   Customer customer = new Customer("X-X");    
       Customer cst = (Customer) camelTemplate.sendBody("jms:queue:testcust", ExchangePattern.InOut,customer);



Принимающая сторона получает объект, получает свойство Name. На отправителе при возврате объекта получаю 
Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to com.xcompany.camel.Customer
Не понимаю почему в одну сторону маршалин выполняется автоматически, при возврате объекта нет. Как указать явно в маршруте, может быть, или другими способами...



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)