2013-03-11 6 views
0

저는 Camel의 POJO를 사용하고 있습니다.apache camel @ String 대신 Object 인수가있는 @Produce 메서드

{

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

}

낙타 바디로서 사용될 문자열 오브젝트의 sayHello 방법을 사용하는 인터페이스. 그러나, 여기에 다른 개체를 사용하려고하면 java.lang에서 예외를받습니다. TypeConvertor는 변환 java.io.InputStream BeanInvocation을 찾지 못했습니다.

나는 어딘가에 언급 된 것이 허용 된 대상인지 알고 있습니다. 그러나 나는 왜 그런 짓을했는지, 그리고이 문제를 해결할 방법이 있는지를 추론하고 싶다.

답변

1

저는 실제로 POJO 메시징을 사용하지 않았습니다. 어쩌면 숙련 된 사용자가 더 잘 도와 줄 수 있습니다.

그러나 이해할 때, 문자열뿐만 아니라 모든 종류의 개체를 지원할 수 있어야합니다.

당신이 말하는 오류는 길을 따라 불일치가 발생하는 것 같습니다. 나는 소비에 어떤 문제가 있다고 생각한다.

정확한 오류 스택 추적 및 소비자 방법을 게시 할 수 있습니까?

감사합니다.

0

지금 같은 문제로 고생하고 있습니다. 유일한 확실한 해결 방법은 지금까지 대신 @Produce의 @EndpointInject을 사용하는 것입니다 - 당신은 ProducerTemplate 얻을 및 개체로 배포합니다 : 당신이 할 수있는 지금

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

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

심지어

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