Java 实现Camel转换
我有以下骆驼路线:Java 实现Camel转换,java,apache-camel,esb,middleware,Java,Apache Camel,Esb,Middleware,我有以下骆驼路线: RequestToOrderTransform requestToOrderTransform = new RequestToOrderTransform(); from("ghttp:///processOrder") .transform(requestToOrderTransform) .bean(OrderProcessor.class) .to("direct:endOfRoute"); 它使用Camel GAE从GAE serv
RequestToOrderTransform requestToOrderTransform =
new RequestToOrderTransform();
from("ghttp:///processOrder")
.transform(requestToOrderTransform)
.bean(OrderProcessor.class)
.to("direct:endOfRoute");
它使用Camel GAE从GAE servlet(processOrder
)接收HttpServletRequest
),然后将请求转换为Order
POJO,最后处理该订单(OrderProcessor
)
我想编写自己的org.apache.camel.Expression
(requestToOrderTransform
),到目前为止,我已经有了框架:
public class RequestToOrderTransform implements Expression {
@Override
public <T> T evaluate(Exchange arg0, Class<T> arg1) {
// ???
return null;
}
}
公共类RequestToOrderTransform实现表达式{
@凌驾
公共T评估(交换arg0,类arg1){
// ???
返回null;
}
}
在这里,不知何故,我必须将一个HttpServletRequest
(我相信这是我从GAE servlet消费者那里得到的)转换成我自己的顺序
POJO。但是我不确定首先如何获得HttpServletRequest
。一旦我有了请求,我就可以提取出必要的参数,然后实例化我的新订单实例。但是我不知道如何处理订单
,这样Camel就知道如何路由它,而不是原始的HttpServletRequest
所以我问:
HttpServletRequest
(或从GAE servlet端点获取的任何对象)的实例Order
实例,以便Camel使用它作为路由单元(在OrderProcessor
bean上)提前谢谢 编写表达式似乎是一种糟糕的方式,而您真正要实现的只是一个消息转换器。但不管怎样,只要抓住尸体作为绳子,然后用它做任何事情
arg0.getIn().getBody(String.class)
在本例中,我不确定您从GAE中获得了什么数据,但如果它是结构化的(json、xml、平面文件、csv),您可能需要查看字符串到java对象的转换