#java #ftp #spring-integration-ftp
#java #ftp #spring-интеграция-ftp
Вопрос:
Я уже несколько лет использую Spring-Integration 4.1.6 для подключения к старому FTP-серверу. FTP-сервер был недавно заменен на более новую версию (новый сервер — Globalscape EFT Enterprise), и сразу же мои адаптеры int-ftp для входящих каналов перестали находить файлы. Я отслеживаю несколько учетных записей, и все они перестали работать одновременно.
Вот конфигурация одного:
<beans:bean id="ftpSessionFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
<beans:property name="host" value="${ftp.host}" />
<beans:property name="port" value="${ftp.port}" />
<beans:property name="username" value="${ftp.username}" />
<beans:property name="password" value="${ftp.password}" />
<beans:property name="clientMode" value="2" />
<beans:property name="fileType" value="2" />
<beans:property name="bufferSize" value="5000000" />
</beans:bean>
<beans:bean id="cachingSessionFactory" class="org.springframework.integration.file.remote.session.CachingSessionFactory">
<beans:constructor-arg ref="ftpSessionFactory" />
<beans:constructor-arg value="1" />
<beans:property name="sessionWaitTimeout" value="60000" />
</beans:bean>
<int-ftp:inbound-channel-adapter id="ftpInboundChannelAdapter" channel="ftpChannelIn" session-factory="cachingSessionFactory" auto-create-local-directory="true"
delete-remote-files="true" remote-directory="dev" local-directory="C:/temp" auto-startup="true">
<poller max-messages-per-poll="-1" receive-timeout="10000" cron="0 0/2 * * * *" >
<transactional/>
</poller>
</int-ftp:inbound-channel-adapter>
и когда я отлаживаю адаптер, я вижу это утверждение:
[org.springframework.integration.ftp.inbound.FtpInboundFileSynchronizer] cannot copy, not a file: dev/dev
Но под dev нет папки с именем dev, только один файл .csv.
Структура /path/to/user/dev/file.csv, а FTP-сервер настроен так, чтобы показывать весь путь пользователю, когда он выполняет PWD.
И я уверен, что при входе в систему они помещаются в папку /path/to/user .
Я установил другой FTP-сервер в своей локальной среде, и он работал нормально.
Были ли проблемы с некоторыми нестандартными FTP-серверами, вызывающими подобные проблемы?
Заранее благодарю вас
Ответ №1:
Оказывается, в последней версии GlobalSCAPE EFT (8.0.2.x) неправильно реализована команда LIST. Когда для мониторинга выполняется СПИСОК some/directory, они возвращали сведения о самом каталоге, а не о содержимом каталога. Это было изменение в поведении по сравнению с их версией 7.x.
Было бы неплохо, если бы я мог настроить FTP-библиотеку Spring Integration для создания CWD, а затем списка текущей папки. Или пусть он использует NLST. Однако, поскольку это была просто ошибка на FTP-сервере, вполне понятно, почему это не вариант.