0

ルート定義は、FTP2 コンポーネントに基づいて単純です。

        Endpoint[sftp://server.com:22//path/to/file/?consumer.delay=900000&password=xxxxxx&username=user]

FTP フォルダからファイルを読み込もうとしています。

   JAXBContext jaxBContext = JAXBContext.newInstance(ObjectFactory.class);
   Unmarshaller unmarshaller = jaxBContext.createUnmarshaller();
   File authBatchFile = exchange.getIn().getBody(File.class);
   AuthorizationFeed batchAuthFeed = (AuthorizationFeed) JAXBIntrospector
            .getValue(unmarshaller.unmarshal(authBatchFile)); 

取引所には必要なものがすべて揃っています

    Body                [Body is file based: RemoteFile[fileName.txt]]

ヘッダーには、ファイルのサイズCamelFileLength=81612も表示されます。ただし、交換トレースの直後に以下の例外が発生します。

  java.lang.IllegalArgumentException: The value for the "java.io.File" parameter cannot be null.
at com.ibm.xml.xlxp2.jaxb.unmarshal.AbstractUnmarshallerImpl.reportNullParameter(AbstractUnmarshallerImpl.java:180)
at com.ibm.xml.xlxp2.jaxb.unmarshal.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:72)
at com.wellpoint.clihub.hie.um.camel.processor.BatchCFFProcessor.process(BatchCFFProcessor.java:47)
4

1 に答える 1

3

ルート定義に追加することで解決策を見つけました

&localWorkDirectory=/tmp. 

そうすれば、リモートファイルとは見なされず、java.io.Fileと見なされます。リモートファイルを扱うとき、Camel はそれをデフォルトの機能として組み込むべきだと思います。彼らのドキュメントによると、

上記のルートは、ファイルの内容全体をメモリに読み込まないようにするため、非常に効率的です。リモート ファイルをローカル ファイル ストリームに直接ダウンロードします。次に、java.io.File ハンドルが Exchange 本体として使用されます。

于 2014-07-03T19:31:13.190 に答える