Mule 3.4.0中对Ftp协议的上传下载的应用

1.    前言

一直都听说 Mule 对 Ftp 和 Http 协议的支持很好,于是就关注了一下。

Mule 通过一系列的配置文件的配置就可以完成对 Ftp 服务器的下载和上传 ,这个还是很神奇的。

但是可惜的是, Mule 本身并不支持 FtpS 协议,只支持 SFTP ,这样对于工业级的使用上,未免有点不方便 

 

2.    Mule 3.x 的基本知识

Mule 是一个开源的 ESB 软件,基本概念如下:

http://tech.ddvip.com/2010-05/1274838569154227.html

 

Mule 3.X 中对 Ftp 的支持是通过 < ftp:connector> 等标签实现的,具体的官方信息如下:

http://www.mulesoft.org/documentation/display/MULE3USER/FTP+Transport

 

下载实现

mule-download-config.xml

Xml代码  

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

2.      <mule xmlns="http://www.mulesoft.org/schema/mule/core"  

3.             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

4.             xmlns:spring="http://www.springframework.org/schema/beans"  

5.             xmlns:ftp="http://www.mulesoft.org/schema/mule/ftp"  

6.             xmlns:file="http://www.mulesoft.org/schema/mule/file"  

7.          xsi:schemaLocation="  

8.             http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd  

9.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd  

10.         http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd  

11.         http://www.mulesoft.org/schema/mule/ftp http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd">  

12.      <!--  

13.      连接 FTP 服务器的连接器  

14.      从 ftp 服务器上下载文件的方法  

15.      -->  

16.    

17.      <ftp:connector name = "ftpConnector" binary = "true"  

18.    

19.         validateConnections = "true" />  

20.    

21.      <model name = "ftp-model" >  

22.         <service name = "ftp-reader" >  

23.         <!--  

24.       连接 FTP 服务器的入口节点,在这里配置 ftp 的 ip ,账户和密码  

25.       利用 file:filename-wildcard -filter 确认只下载 txt 文件  

26.       -->  

27.             <inbound >  

28.                <ftp:inbound-endpoint user = "root" binary = "true" path = "/home/test"  

29.                    password = "123456" host = "10.100.102.8" port = "21"  

30.                    pollingFrequency = "10000" connector-ref = "ftpConnector"    

31.                    >  

32.                    <file:filename-wildcard-filter  

33.                       pattern = "*.txt" />  

34.                </ftp:inbound-endpoint >  

35.             </inbound >  

36.      <!--  

37.       连接 FTP 服务器的出口节点,在这里配置地址,将文件下载到 e:/download 目录下  

38.       同时利用 outputPattern ,定义下载的文件和源文件同名同类型  

39.       -->  

40.             <outbound >  

41.                <pass-through-router >  

42.                    <file:outbound-endpoint path = "/e:/download" outputPattern = "[header:originalFilename]" />  

43.                </pass-through-router >  

44.             </outbound >  

45.         </service >  

46.      </model >  

47.  </mule >  

48.    

49.     

 下载测试:

 

 

 

Java代码  

1.      import org.mule.api.MuleContext;  

2.      import org.mule.api.MuleException;  

3.      import org.mule.api.context.MuleContextFactory;  

4.      import org.mule.config.spring.SpringXmlConfigurationBuilder;  

5.      import org.mule.context.DefaultMuleContextFactory;  

6.        

7.      /** 

8.       * <p>功能描述,该部分必须以中文句号结尾。<p> 

9.       * 

10.   * 创建日期 2013-8-16<br> 

11.   * @author  $Author$<br> 

12.   * @version $Revision$ $Date$ 

13.   * @since   3.0.0 

14.   */  

15.  public class MuleFtpDownloadMain {  

16.      public static void main(String[] args) {  

17.          try {  

18.              String configFile = "mule-download-config.xml";  

19.              String[] configFileArr = new String[] {configFile };  

20.              MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();  

21.              MuleContext context = muleContextFactory  

22.                      .createMuleContext(new SpringXmlConfigurationBuilder(configFileArr));  

23.              context.start();  

24.          } catch (MuleException t) {  

25.              t.printStackTrace();  

26.          }  

27.      }  

28.  }  

 

 

上传应用:

mule-upload-config.xml

Java代码  

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

2.      <mule xmlns="http://www.mulesoft.org/schema/mule/core"  

3.             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

4.             xmlns:spring="http://www.springframework.org/schema/beans"  

5.             xmlns:ftp="http://www.mulesoft.org/schema/mule/ftp"  

6.             xmlns:file="http://www.mulesoft.org/schema/mule/file"  

7.          xsi:schemaLocation="  

8.             http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd  

9.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd  

10.         http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd  

11.         http://www.mulesoft.org/schema/mule/ftp http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd">  

12.  <!--  

13.    上传文件到 ftp 服务器上的办法  

14.  -->  

15.      <file:connector name = "fileConnector" pollingFrequency = "6000" />  

16.  <!--  

17.  连接 ftp 服务器的连接器  

18.  -->  

19.      <ftp:connector name = "ftpConnector" />  

20.      <model name = "model" >  

21.         <service name = "service" >  

22.             <inbound >  

23.             <!--  

24.                                              利用 fileConnector 读取 e:/tmp 下的文件  

25.         -->  

26.                <file:inbound-endpoint path = "/e:/upload"  

27.                    connector-ref = "fileConnector" >  

28.                </file:inbound-endpoint >  

29.             </inbound >  

30.             <outbound >  

31.                <!--  

32.          利用 ftpConnector 将文件传输到 ftp 服务器上,这里配置了服务器的 ip 和账户密码  

33.         -->  

34.                <pass-through-router >  

35.                    <ftp:outbound-endpoint host = "10.100.102.8"  

36.                       port = "21" user = "root" password = "123456" path = "/home/test" connector-ref = "ftpConnector" />  

37.                </pass-through-router >  

38.             </outbound >  

39.         </service >  

40.      </model >  

41.  </mule >  

42.    

43.     

 

 

测试

Java代码  

1.      import org.mule.api.MuleContext;  

2.      import org.mule.api.MuleException;  

3.      import org.mule.api.context.MuleContextFactory;  

4.      import org.mule.config.spring.SpringXmlConfigurationBuilder;  

5.      import org.mule.context.DefaultMuleContextFactory;  

6.        

7.      /** 

8.       * 检查是否发布成功的请求路径为: 

9.       * http://localhost:9090/hello?wsdl 

10.   * <p>功能描述,该部分必须以中文句号结尾。<p> 

11.   * 

12.   * 创建日期 2013-8-16<br> 

13.   * @author  $Author$<br> 

14.   * @version $Revision$ $Date$ 

15.   * @since   3.0.0 

16.   */  

17.  public class MuleFtpUploadMain {  

18.      public static void main(String[] args) {  

19.          try {  

20.              String configFile = "mule-upload-config.xml";  

21.              String[] configFileArr = new String[] {configFile };  

22.              MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();  

23.              MuleContext context = muleContextFactory  

24.                      .createMuleContext(new SpringXmlConfigurationBuilder(configFileArr));  

25.              context.start();  

26.          } catch (MuleException t) {  

27.              t.printStackTrace();  

28.          }  

29.      }  

30.  }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值