2011-05-22 7 views
0

にApacheのラクダは、Apacheラクダと次のような状況を解決することが可能です:FTPからデータベース

読むのftpから(定期的に)、XMLを含むzipファイルを取得し、データベースにこのXMLを格納します。

主な質問は、どの機能がラクダに存在し、どの機能が自分で作成する必要があるかです。

答えて

4

はい、あなたのルートは、この(私の頭の上から)のようなものになります:これは、FTPサーバーをポーリング解凍ファイル、XMLフラグメントのコンテンツを分割し、JPAにこれらを変換します

JaxbDataFormat jaxb = new JaxbDataFormat("com.example.foobar"); 

from("ftp://user:[email protected]:21/inbox") 
    .unmarshal().zip() 
    .split(xpath("//foo")) 
    .unmarshal(jaxb) 
    .to("jpa:com.example.foobar.Foo") 

をこれらのオブジェクトをデータベースに永続化します。ユースケースによっては、スプリッタEIPを省略することも、たとえば、別の永続化メカニズム(MyBatis、Spring-JDBCなど)を選択することもできます。

+0

私の場合は、データベースにCLOBとしてxmlを保存する必要があります。CLOBフィールドと2つの追加フィールドを持つエンティティになります。何がわかりませんか。解凍後にファイルの本体を取得する方法jpaエンティティの内部に渡します。 org.apache.camel.model.dataformatには多くのデータ形式がありますが、他の場合に使用されているようです。私はそれをCLOBに変換するために私自身のデータフォーマットを書く必要があります – endryha

+0

今のところ、XMLを文字列に変換してJdbcTemplate経由でデータベースに保存するSpring Beanに渡したい – endryha

+0

Xml to ClobバインディングはおそらくJAXBアンマーシャリング。それ以外の場合は、メッセージトランスレータEIPを実装することができます(プロセッサなどを介して)。 Xml-> String-> Spring beanの方法については、 '.convertBodyTo(String.class).beanRef(" fooBean "、" barMethod ")' –

関連する問題