Mule初次使用碰到的问题

  因为需要做个数据交换的东西,知道Mule这个东西,以前简单看过,一直没有用。以为拿个来用比较简单,谁知真正用起来碰到问题还真不少,又找不到人来讨论,真是麻烦。

     需求:本地文件夹与FTP同步

   使用Mule版本:2.2.1

     碰到的问题及解决方法:

          1、不知道怎么在Java中嵌入mule。 

    代码:   

            String configFile = "conf/mule-config.xml";
            String[] configFileArr = new String[]{configFile};
            MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
            MuleContext context =
                    muleContextFactory.createMuleContext(new SpringXmlConfigurationBuilder(configFileArr));
            context.start();

    配置:  

<?xml version = "1.0" encoding = "UTF-8"?>
<mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spring="http://www.springframework.org/schema/beans"
    xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2" xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.2"
    xmlns:ftp="http://www.mulesource.org/schema/mule/ftp/2.2" xmlns:file="http://www.mulesource.org/schema/mule/file/2.2"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
       http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd
       http://www.mulesource.org/schema/mule/vm/2.2 http://www.mulesource.org/schema/mule/vm/2.2/mule-vm.xsd
       http://www.mulesource.org/schema/mule/file/2.2 http://www.mulesource.org/schema/mule/file/2.2/mule-file.xsd
       http://www.mulesource.org/schema/mule/ftp/2.2 http://www.mulesource.org/schema/mule/ftp/2.2/mule-ftp.xsd">
    <file:connector name="fileConnector" pollingFrequency="6000" />
    <ftp:connector name="ftpConnector"/>
    <model name="model">
        <service name="service">
            <inbound>
                <file:inbound-endpoint path="/e:/tmp"
                    connector-ref="fileConnector">
                </file:inbound-endpoint>
            </inbound>
            <outbound>
                <pass-through-router>
                    <ftp:outbound-endpoint host="XXX.XXX.XXX.XXXX"
                        port="21" user="3guser" password="3guser" outputPattern="#[ORIGINALNAME]"
                        path="/tttt" connector-ref="ftpConnector">
                    </ftp:outbound-endpoint>
                </pass-through-router>
            </outbound>
        </service>
    </model>
</mule>

    

    2、上传文件大于20M左右的时候,客户端便会断开连接,Mule运行报错。

    解决:

    在ftp:outbond-endpoint节点中增加 

       <object-to-byte-array-transformer />
 问题解决

    3、包含中文文件名的文件不能同步,FTP服务器中文乱码。

    这个问题困扰了我很久,花了我很多时间,还是没有解决得很特底,有时有效,有时无效。

    下载mule-transport-ftp源代码,修改FtpConnector.java

              public OutputStream getOutputStream(ImmutableEndpoint endpoint, MuleMessage message)方法中 
         // OutputStream out = client.storeFileStream(filename);
         修改为:
OutputStream out = client.storeFileStream(new String(filename.getBytes("GBK"), "iso8859-1"));

下一步:一定要把mule搞透,使用3.X版本

posted @ 2013-03-27 23:57  lexloo  阅读(607)  评论(0编辑  收藏  举报
ccc