当前位置: 首页 > 知识库问答 >
问题:

Apache Camel FTP组件

颜嘉誉
2023-03-14

使用Apache Camel连接到本地安装的FTP服务器(FileZilla)时,我遇到以下异常。

16:27:45.974 INFO  [Camel (camel-1) thread #0 - ftp://x.x.x.x:21/in][org.apache.camel.component.file.remote.FtpConsumer] Connected and logged in to: ftp://kallada@x.x.x.x:21
16:27:45.980 WARN  [Camel (camel-1) thread #0 - ftp://x.x.x.x:21/in][org.apache.camel.component.file.remote.RemoteFilePollingConsumerPollStrategy] Trying to recover by disconnecting from remote server forcing a re-connect at next poll: ftp://kallada@x.x.x.x:21
16:27:45.980 WARN  [Camel (camel-1) thread #0 - ftp://x.x.x.x:21/in][org.apache.camel.component.file.remote.FtpConsumer] Error occurred while disconnecting from ftp://kallada@x.x.x.x:21 due: File operation failed:  Software caused connection abort: socket write error. Code: 215. This exception will be ignored.
16:27:45.981 WARN  [Camel (camel-1) thread #0 - ftp://x.x.x.x:21/in][org.apache.camel.component.file.remote.FtpConsumer] Consumer FtpConsumer[ftp://x.x.x.x:21/in?delay=5s&move=done&passiveMode=false&password=xxxxxx&username=kallada] failed polling endpoint: Endpoint[ftp://x.x.x.x:21/in?delay=5s&move=done&passiveMode=false&password=xxxxxx&username=kallada]. Will try again at next poll. Caused by: [org.apache.camel.component.file.GenericFileOperationFailedException - File operation failed:  Software caused connection abort: recv failed. Code: 215]
org.apache.camel.component.file.GenericFileOperationFailedException: File operation failed:  Software caused connection abort: recv failed. Code: 215
    at org.apache.camel.component.file.remote.FtpOperations.listFiles(FtpOperations.java:784)
    at org.apache.camel.component.file.remote.FtpConsumer.doPollDirectory(FtpConsumer.java:88)
    at org.apache.camel.component.file.remote.FtpConsumer.pollDirectory(FtpConsumer.java:51)
    at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:117)
    at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:187)
    at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:114)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Software caused connection abort: recv failed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
    at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
    at sun.nio.cs.StreamDecoder.read(Unknown Source)
    at java.io.InputStreamReader.read(Unknown Source)
    at java.io.BufferedReader.fill(Unknown Source)
    at java.io.BufferedReader.read(Unknown Source)
    at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:314)
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294)
    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:483)
    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:608)
    at org.apache.commons.net.ftp.FTP.port(FTP.java:932)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:812)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:759)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3293)
    at org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:3271)e 
    at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2930)
    at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2977)
    at org.apache.camel.component.file.remote.FtpOperations.listFiles(FtpOperations.java:777)
    ... 12 moreows 

FileZilla服务器控制台显示以下跟踪。

(000043)23-11-2014 16:27:45 - (not logged in) (x.x.x.x)> Connected on port 21, sending welcome message...
(000043)23-11-2014 16:27:45 - (not logged in) (x.x.x.x)> USER kallada
(000043)23-11-2014 16:27:45 - (not logged in) (x.x.x.x)> 331 Password required for kallada
(000043)23-11-2014 16:27:45 - (not logged in) (x.x.x.x)> PASS *******
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> 230 Logged on
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> TYPE A
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> 200 Type set to A
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> PWD
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> 257 "/" is current directory.
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> CWD in
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> 250 CWD successful. "/in" is current directory.
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> SYST
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> 215 UNIX emulated by FileZilla
(000043)23-11-2014 16:27:45 - kallada (x.x.x.x)> disconnected.

路线定义如下

ftp://x.x.x.x:21/in?username=kallada

任何解决此问题的指针都会有所帮助。

共有1个答案

江飞章
2023-03-14

请检查防火墙是否设置为阻止FTP通信。

 类似资料:
  • 使用组件的目的就是通过构建模块化的组件,相互组合组件最后组装成一个复杂的应用。 在 React 组件中要包含其他组件作为子组件,只需要把组件当作一个 DOM 元素引入就可以了。 一个例子:一个显示用户头像的组件 Avatar 包含两个子组件 ProfilePic 显示用户头像和 ProfileLink 显示用户链接: import React from 'react'; import { rend

  • 英文原文:http://emberjs.com/guides/components/defining-a-component/ 为了定义一个组件,需要先创建一个名字以components/开始的模板。例如:如果需要定义一个新组建{{blog-post}},需要创建components/blog-post模板。 注意: 组件名必须包含'-'。因此blog-post是一个合法的命名,而post则不是。

  • 了解如何跨文档使用组件,以提高各工作流程的工作效率。 作为一名设计人员,您经常会创建一些在整个设计中重复出现的主要元素,如导航栏或按钮。但是,必须根据上下文或布局来自定义元素实例并非易事。在此情况下,您往往最终会创建同一基础元素的多个版本,这会使您的设计维护变得困难得多。 组件(以前称为符号)是具有无与伦比的灵活性的设计元素,可帮助您创建和维护重复元素(如按钮),同时针对不同的上下文和布局更改该按

  • 结构 组件是对视图的一部分进行封装,以方便组织代码和重用。 任何具有 view 方法的 JavaScript 对象都是 Mithril 组件。组件可以用过 m() 函数调用: var Example = { view: function() { return m("div", "Hello") } } m(Example) // 等效 HTML // <div>Hello</d

  • 底部动作条 按钮 按钮:浮动操作按钮 卡片 纸片 数据表格 提示框 分隔线 网格 列表 列表控制 菜单 选择器 进度和动态 选择控制 滑块 Snackbars 与 Toasts 副标题 开关 Tabs 文本框 工具提示

  • 页面往往有不少重复的元素,这时可以将这些元素抽离为独立的、可复用的部件,我们将这些部件称为组件。组件在概念上类似于 JavaScript 函数,它接收任意的参数(组件的参数称为“props”),然后返回一个可以被渲染的 Rax 元素。下面简单介绍组件的基本使用。 定义组件 有两种方式来定义组件。最简单和推荐的做法是使用 JavaScript 函数来定义一个组件: function Welcome(

  • 我们的页面一般都是由各种各样的组件构成的,组件就像一个一个积木一样,被用来搭建成页面。例如一个带有用户信息、logo的头部就是一个组件,而用户信息、logo也许也可以是独立组件。组件化可以让我们把一个庞大的页面切割成一个一个小块来分别进行管理,也就是分而治之的思想,同时组件化也能帮助我们更好地进行代码复用。 Nerv天生是支持组件化的,组件是Nerv中的核心概念。Nerv中的组件分为 Class

  • 下面列表中的组件被用于构建 OpenResty。所有组件均可以方便的被激活或禁止。 绝大部分组件已内置在OpenResty安装包中,但也有一部分不包含在内。 Drizzle Nginx 模块、 Postgres Nginx 模块 以及 Iconv Nginx 模块 默认并未启用。 你需要分别加入--with-http_drizzle_module、--with-http_postgres_modu