Ниже приведена моя конфигурация. Я смог опросить файлы до недавнего времени. Теперь фильтр всегда получает пустой список файлов. Единственное изменение, которое я сделал, это установить антивирус Касперского. Надеюсь, это не проблема. Я могу успешно получить доступ к ftp из командной строки, а также из браузера.Весенняя интеграция не выбраны файлы
конф:
<int:channel id="ftpChannel"/>
<int-ftp:inbound-channel-adapter id="ftpInbound1"
channel="ftpChannel"
session-factory="ftpClientFactory"
charset="UTF-8"
local-directory="file:${paths.root}"
delete-remote-files="false"
temporary-file-suffix=".writing"
remote-directory="${file.ftpfolder}"
preserve-timestamp="true"
auto-startup="true"
filter="compositeFilterLocal"
>
<int:poller max-messages-per-poll="10000" fixed-rate="1000" error-channel="errorChannel"/>
</int-ftp:inbound-channel-adapter>
<int-ftp:outbound-channel-adapter id="ftpOutbound"
channel="ftpChannel"
session-factory="ftpClientFactory"
charset="UTF-8"
remote-file-separator="/"
auto-create-directory="true"
remote-directory="DMS"
use-temporary-file-name="true"
temporary-file-suffix=".writing">
</int-ftp:outbound-channel-adapter>
<!-- <bean id="acceptAllFilter" class="org.springframework.integration.file.filters.AcceptAllFileListFilter" /> -->
<bean id="compositeFilterLocal" class="org.springframework.integration.file.filters.CompositeFileListFilter">
<constructor-arg>
<list>
<!-- Ensures that the file is whole before processing it -->
<bean class="org.springframework.integration.file.filters.AcceptAllFileListFilter" />
<bean class="com.polling.util.CustomFileFilterLocal"/>
<!-- Ensures files are picked up only once from the directory -->
</list>
</constructor-arg>
</bean>
Пожалуйста, скажите мне, если что-то нужно изменить в нем ... Спасибо
Пожалуйста, дайте мне знать, если требуется больше информации!
EDIT :: Update Если я использую Apache commons-net-3.3 для извлечения одного и того же файла из той же папки, он работает нормально и позволяет мне взять файл и загрузить его. Таким образом, это не имеет никакого отношения к доступу jvm к ftp-сайту.
EDIT :: Код для фильтра прост. В настоящее время я использую его только для сопоставления с образцом.
@Override
public List<File> filterFiles(File[] files)
{
List<File> ret = new ArrayList<File>();
Pattern pattern = Pattern.compile(".*?~.*?");//(".*[email protected]*[email protected]*?");
DocumentFile documentFile;
Matcher matcher;
for (File file : files)
{
matcher = pattern.matcher(file.getName());
if(matcher.find())// matching the input file name pattern
{
//get key and documentfile
//create sha key to check file existance
String key = EncodeUtil.generateKey(file);
documentFile = documentDaoImpl.getDocumentFile(key,Constants.INPROGRESS);
if (documentFile != null)
{
ret.add(file);
}
}/*else
{
file.delete();
}*/
}
return ret;
}
Я успешно работал с этим, по крайней мере, пару месяцев, и теперь внезапно у меня нет файлов! В настоящее время я использую выражение таймера cron и буду делать ftp, используя apache commons-net в запущенном классе. Кажется, что такой отход должен делать ftp, несмотря на наличие весеннего тега ftp.
любой помощи? Пожалуйста, – kavita
Извините, но на самом деле информации недостаточно. Любые ошибки в журнале? Что делает ваш 'CustomFileFilterLocal'? Можете ли вы отлаживать классы Spring Integration для FTP, чтобы убедиться, что 'FtpSession' возвращает для команды' LS' - 'AbstractInboundFileSynchronizer'? –
В журнале не было ошибок, только сообщение передано 0 файлов. Могу ли я проверить каталог, в котором он работает, в фильтре? – kavita