0

次のキャメルルートがあります:

RequestToOrderTransform requestToOrderTransform =
    new RequestToOrderTransform();

from("ghttp:///processOrder")
    .transform(requestToOrderTransform)
    .bean(OrderProcessor.class)
    .to("direct:endOfRoute");

HttpServletRequestCamel-GAE を使用して GAE サーブレットからを受け取り( )、リクエストをPOJO にprocessOrder変換し、最後にその注文を処理します ( )。OrderOrderProcessor

org.apache.camel.Expression私は自分の( )を書きたいと思ってrequestToOrderTransformいます。これまでのところ、スケルトン/フレームワークがあります。

public class RequestToOrderTransform implements Expression {
    @Override
    public <T> T evaluate(Exchange arg0, Class<T> arg1) {
        // ???

        return null;
    }
}

ここで、どうにかしてHttpServletRequest( GAEサーブレット コンシューマーから取得したものだと思います) を独自のOrderPOJO に変換する必要があります。しかし、そもそも入手方法がわかりませんHttpServletRequest。リクエストを受け取ったら、必要なパラメーターを抽出して、新しい注文インスタンスをインスタンス化できます。しかし、 Camel が元の ではなくルーティングすることを認識できるように、 をどうすればよいかOrderわかりませんHttpServletRequest

だから私は尋ねます:

  1. HttpServletRequestmy (または GAE サーブレット エンドポイントから取得したオブジェクト)のインスタンスを取得するにはどうすればよいですか?
  2. Order新しくインスタンス化されたインスタンスを設定して、Camel が ( OrderProcessorBean に)ルーティングするユニットとして使用するようにするにはどうすればよいですか?

前もって感謝します!

4

1 に答える 1

2

実際に実装しているのはメッセージ トランスレータだけである場合、式を記述することは悪い方法のように思えます。しかし、とにかく、本体を文字列としてつかんで、それを使って何でもしてください。

arg0.getIn().getBody(String.class)

この場合、GAE から取得するデータはわかりませんが、構造化されている場合 (json、xml、フラット ファイル、csv)、文字列から Java オブジェクトへの変換を行うさまざまなデータ形式を確認することをお勧めします。

于 2013-01-26T09:42:12.353 に答える