SFTPトランスポートは、SFTPを利用してディレクトリからファイルの読み書きを可能にします。VFSトランスポートで扱えるファイル・サイズは制限されていますが、SFTPトランスポートはメッセージのペイロードにInputStreamを使うために大きなファイルを扱うことができます。
SFTPコネクタはJSCH 0.1.29ライブラリに基づいています。
SFTPプロジェクトは、2つのバージョンを提供しています:
- tag : ESB Muleバージョン1.3.3に対応
- trunk : ESB Muleバージョン1.4.4に対応
インストレーション・ガイドと例題も参照してください。ユニット・テストにも例があります。
SFTPコネクタのプロパティ
| プロパティ |
説明 |
デフォルト |
必須 |
| pollingFrequency |
読込みディレクトリをチェックする間隔(ミリ秒)。読込みディレクトリは、コンポーネントのエンドポイントで指定します。 |
1000 |
× |
| filenameParser |
org.mule.providers.file.FilenameParser の実装で、ファイル名パターンからをファイル名の生成を制御します。ファイル・プロバイダは以下のパターンを認識する実装 org.mule.providers.file.SimpleFilenameParser がデフォルトで定義されています:
- ${DATE}- 現在の日付。形式: dd-MM-yy_HH-mm-ss.SS
- ${DATE:yy-MM-dd}- 指定された形式で、現在の日付
- ${SYSTIME}- 現在のシステム時刻(ミリ秒)
- ${UUID}- 生成された汎用一意識別子
- ${ORIGINALNAME}- 書き出すファイルが別の場所から読込まれた場合、元のファイル名
- ${COUNT}- 連番カウンタ
|
org.mule.providers.file. SimpleFilenameParser |
○ |
| outputPattern |
VFSファイル・システムに書き出す場合のデフォルト・パターン。コネクタに設定されている filenameParser を使う。ESB Muleメッセージにプロパティを設定して、このパターンを上書きすることが可能(キーVfsConnector.PROPERTY_FILENAMEを使う)。 |
|
Yes |
| autoDelete |
処理した後に、読み込みディレクトリのファイルを削除する。 |
true |
× |
SFTPエンドポイント
SFTPエンドポイントは以下のような、標準のURIで指定します:
sftp://<ユーザ名>:<パスワード>@<ホスト>/path/to/dir
例えば、SFTP絵インドポイントを次のように定義することができます:
sftp://mule:test123@myhost.com/tmp/mule-vfs
この定義は、SFTPを使ってホストmyhost.comにmule/test123として接続し、~/tmp/mule-vfsを読み書きします。
トランスフォーマー
| トランスフォーマー |
説明 |
org.mule.providers.sftp.transformers.InputStreamByteArray |
InputStreamをバイト配列に変換します。 |
このトランスフォーマはSFTPメッセージ・レシーバを非ストリーミング・サービス・コンポーネント及びメッセージ・ディスパッチャと使えるようにします。このトランスフォーマはSFTP受信エンドポイントに追加して、サービス・コンポーネント又はメッセージ・ディスパッチャがInputStreamの代わりにバイト配列として、ペイロードを受けられるようにします。ただし、ファイルが大きい場合はInputStreamでOOMエラーになりますので、注意してください。
ユニット・テスト
JUnitクラス |
説明 |
org.mule.providers.sftp.LargeFileReceiveFunctionalTestCase |
SftpMessageReceiverが大きいファイルを読み込むことができるたテストします。ファイルはサービス・コンポーネントReceiveLargeFileTestHelperComponentで受け取られ、ディレクトリ/tmpにストリームされます。 |
| org.mule.providers.sftp.LargeFileSendFunctionalTestCase |
SftpMessageReceiverが大きいファイルを送信できるかテストします。ファイルはローカル機器のファイル/tmp/big.zipにストリームされます。 |
| org.mule.providers.sftp.SendReceiveFunctionalTestCase |
複数ファイルを送信/受信できるかテストします。 |