【问题标题】:ftp Endpoint: hostname can't be nullftp 端点:主机名不能为空
【发布时间】:2014-03-14 10:20:22
【问题描述】:

我的 FTP 端点有问题。它会工作一点然后停止工作并给我主机名不能为空。我正在使用工作室版本:3.4.0。我的流量取决于 FTP 是:

<context:property-placeholder location="environment.properties"/>
    <flow name="NpPlaFeedFlow1" doc:name="NpPlaFeedFlow1">
        <quartz:inbound-endpoint jobName="GetAttributes" cronExpression="30 * * * * ?" startDelay="500" responseTimeout="10000" doc:name="Quartz" repeatCount="0" repeatInterval="0">
            <quartz:event-generator-job/>
        </quartz:inbound-endpoint>
        <message-properties-transformer  doc:name="Message Properties" scope="session">
            <add-message-property key="database.server" value="${database.server}"/>
            <add-message-property key="database.port" value="${database.port}"/>
            <add-message-property key="database.user" value="${database.user}"/>
            <add-message-property key="database.password" value="${database.password}"/>
            <add-message-property key="database.databaseName" value="${database.databaseName}"/>
            <add-message-property key="adwords.promo" value="${adwords.promo}"/>
            <add-message-property key="file.fileName" value="${file.fileName}"/>
            <add-message-property key="ftp.serverName" value="${ftp.serverName}"/>
        </message-properties-transformer>
        <component doc:name="Java" class="com.newpig.transformer.GeneratePLA"/>
        <file:file-to-string-transformer doc:name="File to String"/>
        <logger message="Hostname is: ${ftp.serverName}" level="INFO" doc:name="Logger"/>
        <ftp:outbound-endpoint host="${ftp.serverName}" port="21" user="${ftp.user}" password="${ftp.pass}" responseTimeout="10000" doc:name="FTP"/>

当我运行应用程序时,记录器会输出正确的主机名,如下所示。

2014-03-12 16:16:45,078 [[npplafeed].NpPlaFeedFlow1.stage1.02] INFO  org.mule.api.processor.LoggerMessageProcessor - Hostname is: cmsdev_steves
2014-03-12 16:16:45,092 [[npplafeed].connector.ftp.mule.default.dispatcher.01] INFO  org.mule.lifecycle.AbstractLifecycleManager - Initialising: 'connector.ftp.mule.default.dispatcher.1429708287'. Object is: FtpMessageDispatcher
2014-03-12 16:16:45,092 [[npplafeed].connector.ftp.mule.default.dispatcher.01] INFO  org.mule.lifecycle.AbstractLifecycleManager - Starting: 'connector.ftp.mule.default.dispatcher.1429708287'. Object is: FtpMessageDispatcher
2014-03-12 16:16:45,109 [[npplafeed].connector.ftp.mule.default.dispatcher.01] ERROR org.mule.exception.CatchMessagingExceptionStrategy - 
********************************************************************************
Message               : hostname can't be null (java.lang.IllegalArgumentException)
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. hostname can't be null (java.lang.IllegalArgumentException)
  java.net.InetSocketAddress:-1 (null)
2. hostname can't be null (java.lang.IllegalArgumentException) (org.mule.transport.ConnectException)
  org.mule.transport.ftp.FtpConnector:556 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/transport/ConnectException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.IllegalArgumentException: hostname can't be null
    at java.net.InetSocketAddress.<init>(Unknown Source)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:176)
    at org.apache.commons.net.SocketClient.connect(SocketClient.java:268)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

2014-03-12 16:16:45,146 [[npplafeed].connector.smtp.mule.default.dispatcher.01] INFO  org.mule.transport.service.DefaultTransportServiceDescriptor - Loading default outbound transformer: org.mule.transport.email.transformers.ObjectToMimeMessage
2014-03-12 16:16:45,151 [[npplafeed].connector.smtp.mule.default.dispatcher.01] INFO  org.mule.lifecycle.AbstractLifecycleManager - Initialising: 'connector.smtp.mule.default.dispatcher.2029326140'. Object is: SmtpMessageDispatcher
2014-03-12 16:16:45,180 [[npplafeed].connector.smtp.mule.default.dispatcher.01] INFO  org.mule.lifecycle.AbstractLifecycleManager - Starting: 'connector.smtp.mule.default.dispatcher.2029326140'. Object is: SmtpMessageDispatcher

有人知道还要检查什么吗?我试过用 host="cmsdev-steves" 替换 host="${ftp.serverName}" ,有时我可以让它工作,有时不能。

编辑 我没有在原始帖子中提到我根本无法使用该变量连接 FTP 组件。最初我的属性文件中只有 ftp.serverName,并没有将其添加到消息属性转换器中。我把它加到那个变压器上,希望它能捡起来。同样,记录器吐出正确的值,所以我看不出为什么 FTP 端点也没有得到相同的值。

【问题讨论】:

  • “有时有效,有时无效”是可怕的部分。我从未见过如此古怪的行为。您确定您没有运行多个不同版本的应用实例吗?
  • 是的,大卫,这也是我真正困扰的问题。有时关闭并重新启动 mulestudio 可以解决问题。请参阅我上面的编辑。 FTP 组件会获取用户并传递 ok 但不会传递主机名,这似乎很奇怪。
  • 您是否尝试过在 Mule 上而不是在 Studio 中运行?我无法理解为什么属性替换对你不起作用,它只是没有意义:''(
  • 嗯,这很尴尬,但事实证明,配置文件的主机名中有一个下划线。当我手动将它输入到 FTP 端点时,我正确地输入了一个破折号。当我更正属性文件时,它起作用了。我希望它响应“主机未知”而不是“空主机名”。谢谢大家花时间看这个,即使它是 UE。
  • 啊,至少现在说得通了 :)

标签: mule mule-studio


【解决方案1】:

问题是您正在出站端点配置您的 ftp 凭据。

定义一个连接器并将您的 ftp 配置(主机名、用户名和密码)放在那里。

【讨论】:

  • 为什么会出现这个问题? MuleSoft 网站中有一些示例,其中没有单独的连接器用于 ftp 出站:mulesoft.org/connectors/ftp-connector
  • 端点中的凭据应该可以工作:它们实际上混合在端点 URI 中。
  • 是的,如果我在出站 FTP 端点中配置凭据,我可以(通常)让它工作。不过,我真的不想那样做。根据您是在生产、测试​​还是开发环境中,我有不同的属性文件。我不想依赖人们记得在流程中切换它。
  • 不确定您的意思?凭据应在属性文件中外部化。
猜你喜欢
  • 2020-09-19
  • 1970-01-01
  • 2014-06-27
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多