2013-03-11 3 views
0

J'utilise le POJO de Camel produisant par ex.apache camel Méthode @Produce avec l'argument Object au lieu de la chaîne

{

public interface MyListener { 
    String sayHello(String name); 
} 

public class MyBean { 
    @Produce(uri = "activemq:foo") 
    protected MyListener producer; 

    public void doSomething() { 
     // lets send a message 
     String response = producer.sayHello("James"); 
    } 
} 

}

Les interfaces en utilisant la méthode sayHello avec un objet de chaîne qui utilise comme corps dans le vase. Cependant, si j'essaye d'employer n'importe quel autre objet ici j'obtiens l'exception de chameau en disant aucun typeConvertor trouvé pour BeanInvocation pour la conversion java.io.InputStream.

Je sais que l'objet a été autorisé il aurait été mentionné quelque part. Mais je veux raisonner pourquoi cela a été fait comme ça et s'il y a moyen de contourner cela.

Répondre

1

Je n'ai pas encore vraiment utilisé la messagerie POJO. Peut-être, un utilisateur expérimenté peut vous aider à mieux. Mais à partir de ce que je comprends, il devrait être capable de supporter n'importe quel type d'objet et pas seulement de la chaîne de caractères.

L'erreur dont vous parlez semble provenir d'une discordance sur la route. Je suppose qu'il y a une sorte de problème avec la consommation.

Pouvez-vous s'il vous plaît signaler l'erreur pile exacte et la méthode de consommation?

Merci!

0

Difficulté avec le même problème en ce moment. La seule solution évidente est d'utiliser beaucoup @EndpointInject au lieu de @Produce - alors vous obtenez ProducerTemplate et publier tout objet:

@EndpointInject(uri = "seda:report-send") 
    ProducerTemplate reportSender; 

Maintenant vous pouvez faire

Object myObject = new Object(); 
    reportSender.sendBody(myObject); 

Ou encore

Object myObject = new Object(); 
    Map<String, Object> headers = new HashMap<String, Object>(); 
    headers.put("Subject", "Mail subject"); 
    headers.put("contentType", "text/plain"); 
    reportSender.sendBodyAndHeaders(myObject, headers);