---
schema_version: "1"
id: c7e35f87cc191434c7a1ffa971f31b6c51270114a114ee3bfd3a0c8d22938601
title: FTP サーバーへの動的な接続の例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/ftp-connector/1.5/ftp-dynamic-connection.md
canonical_url: https://docs.mulesoft.com/jp/ftp-connector/1.5/ftp-dynamic-connection
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 8c65a2bfa7084ab3490dd079a025873d88a3703aab72f1576250130163d9ee63
description: MuleSoft Documentation Site
release: "1.5"
latest: false
---
# FTP サーバーへの動的な接続の例

多くのインテグレーションでは、次のように特定の条件に応じて異なるサーバーへの接続が必要です。

- 請求書を送信する部署に応じて異なる請求書ストレージサーバーに接続する。
- マルチテナントのユースケースなど、インテグレーションの主題に応じて異なるサーバーに接続する。

こうしたユースケースに対応するため、​`config`​ 要素では、これらの条件を評価して適切なサーバーに接続するパラメーター式がサポートされています。

次の例は、以下に該当する動的マルチキャストアプリケーションの例を示しています。

- `host`​、​`username`​、​`password`​ が式になっているコネクタの設定を定義する。
- HTTP 経由でコンテンツを投稿するフロー (​**HTTP Listener**​ によってトリガーされる) を記述する。
- File Connector の ​**Read**​ 操作を使用して、​`host`​、​`user`​、​`port`​ などの列で構成される FTP 宛先セットを含む ​`recipients.csv`​ ファイルを読み込む。
- **\[For Each\]**​ コンポーネントと FTP の ​**Write**​ 操作を使用して、コンテンツを各 FTP 宛先に書き込む。​**\[For Each\]**​ の反復ごとに、FTP グローバル設定要素で設定された式が異なる値に解決され、サーバーごとに異なる接続が確立されます。

この例をテストするには、Mule アプリケーションを作成して、curl コマンドを使用して実行します。

![Studio キャンバスでの FTP サーバーの動的な接続フロー](/mulesoft/current/ja-jp/ftp-connector/1.5/_images/ftp_dynamic_connect_flow.png)

## [](#mule-アプリケーションの作成)Mule アプリケーションの作成

Mule アプリケーションフローを作成する手順は、次のとおりです。

1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[HTTP\] > \[Listener\]**​ を選択します。
2. **\[HTTP\] の \[Listener\]**​ を Studio キャンバスにドラッグします。
3. **\[HTTP Listener (HTTP リスナー)\]**​ 設定画面で、必要に応じて ​**\[Display Name (表示名)\]**​ 項目の値を変更します。
4. **\[Path (パス)\]**​ を ​`/multitenant`​ に設定します。
5. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内の HTTP Listener のすべてのインスタンスで使用できるグローバル要素を設定します。
6. **\[General (一般)\]**​ タブで、次の項目を設定します。
    
    - **Host (ホスト)**​: `All Interfaces [0.0.0.0] (default)`
    - **Port (ポート)**​: `8081`
7. **\[OK\]**​ をクリックします。
8. **\[Set Variable\]**​ コンポーネントを ​**\[HTTP\] の \[Listener (リスナー)\]**​ ソースの右にドラッグします。
9. **\[Name (名前)\]**​ を ​`content`​ に、​**\[Value (値)\]**​ を ​`#[payload]`​ に設定します。
10. File Connector の ​**\[Read\]**​ 操作を ​**\[Set Variable\]**​ コンポーネントの右にドラッグします。
11. **\[File Path (ファイルパス)\]**​ を ​`recipients.csv`​ に設定します。これにより、​`host`​、​`user`​、​`port`​ などの列で構成されるランダムな FTP 宛先セットを含む CSV ファイルが読み取られます。
12. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内の File Connector のすべてのインスタンスで使用できるグローバル要素を設定します。
13. デフォルト設定を受け入れ、​**\[OK\]**​ をクリックします。
14. **Read**​ 操作の ​**\[MIME Type (MIME タイプ)\]**​ タブの ​**\[MIME Type (MIME タイプ)\]**​ で ​**\[application/csv\]**​ を選択します。
15. Studio で、​**\[Transform Message\]**​ コンポーネントを ​**\[Read\]**​ 操作の右にドラッグします。
16. コンポーネントの ​**\[Output (出力)\]**​ セクションで、次の DataWeave コードを追加して、CSV ファイルの列にマップします。
    
    DataWeave スクリプト:
    
    ```dataweave
    %dw 2.0
    output application/java
    ---
    payload map using (row = $) {
       host: row.Host,
       user: row.User,
       password: row.Password}
    ```
17. **\[For Each\]**​ コンポーネントを ​**\[Transform Message\]**​ コンポーネントの右にドラッグします。
18. FTP の ​**\[Write\]**​ 操作を ​**\[For Each\]**​ コンポーネントにドラッグします。  
    For Each の反復ごとに、​**Write**​ 操作は、コンテンツを各 FTP 宛先に書き込みます。
19. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内の FTP の ​**Write**​ 操作のすべてのインスタンスで使用できるグローバル要素を設定し、次の項目を設定します。
    
    - **Host (ホスト)**​: `#[payload.host]`
    - **Username (ユーザー名)**​: `#[payload.username]`
    - **Password (パスワード)**​: `#[payload.password]`
20. **\[OK\]**​ をクリックします。
21. **\[Path (パス)\]**​ を ​`demo.txt`​ に設定します。
22. **\[Content (コンテンツ)\]**​ 項目を ​`payload`​ に設定します。
23. **\[Set Payload\]**​ コンポーネントを ​**\[For Each\]**​ コンポーネントの右にドラッグします。
24. **\[Value (値)\]**​ 項目を ​`Multicast Ok`​ に設定します。

## [](#mule-アプリケーションの実行およびテスト)Mule アプリケーションの実行およびテスト

Mule アプリケーションを作成したら、それを実行してテストします。

1. Studio で、Mule アプリケーションを保存します。
2. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。
3. ブラウザーを開き、​`http://0.0.0.0:8081/multitenant`​ と入力します。

Mule 4 の動作に関する注意事項 (Mule 3 ユーザー向け):

- HTTP Listener ソースを通じて投稿された情報は各 FTP サイトに複数回書き込まれますが、Mule 4 の反復可能ストリーム機能によってストリームの複数回のコンシュームによるオーバーヘッドが防止されます。
- Mule 4 では、For Each コンポーネントは最初に Java 構造に変換することなく、CSV ファイルの各行を自動的に処理します。
    
    Mule 3 では、最初に CSV ファイルを Java 構造体に変換する必要がありましたが、Mule 4 は Java に依存しないため、変換せずに動作するようになりました。

ファイルを読み取る場合やリストする場合に、ファイルのメタデータ (たとえば、ファイル名、フルパス、サイズ、タイムスタンプ) を知りたいと考える場合もあります。コネクタは Mule メッセージ属性を使用してこの情報にアクセスします。

## [](#ftp-サーバーに動的に接続するための-xml)FTP サーバーに動的に接続するための XML

この例のフローをすばやく Mule アプリケーションに読み込むには、Studio キャンバスで次のコードを ​**\[Configuration XML (設定 XML)\]**​ タブに貼り付けます。

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:sftp="http://www.mulesoft.org/schema/mule/sftp"
	xmlns:file="http://www.mulesoft.org/schema/mule/file"
	xmlns:ftp="http://www.mulesoft.org/schema/mule/ftp"
	xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ftp http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd">
	<http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<file:config name="File_Config" doc:name="File Config" doc:id="" />
	<ftp:config name="FTP_Config" doc:name="FTP Config" doc:id="" >
		<ftp:connection host="#[payload.host]" username="#[payload.username]" password="#[payload.password]" />
	</ftp:config>
	<flow name="streaming-multitenantFlow" >
<http:listener path="/multitenant"
doc:name="Listener" config-ref="HTTP_Listener_config"/>
<set-variable variableName="content" value="#[payload]" doc:name="Variable" />
<file:read path="recipients.csv" doc:name="Read"
 outputMimeType="application/csv" config-ref="File_Config"/>
  <ee:transform doc:name="Transform Message" doc:id="" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload map using (row = $) {
   host: row.Host,
   user: row.User,
   password: row.Password
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<foreach doc:name="For Each" >
			<ftp:write doc:name="Write" doc:id="" path="recipients.csv" config-ref="FTP_Config"/>
</foreach>
<set-payload doc:name="Set Payload" value="Multicast OK"/>
</flow>
</mule>
```

## [](#関連情報)関連情報

- [FTP Connector の例](https://docs.mulesoft.com/jp/ftp-connector/1.5/ftp-examples)
- [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors)
- [MuleSoft ヘルプセンター](https://help.mulesoft.com)