【发布时间】: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