Я использую интеграцию с весной 4.2.4.RELEASE, и я наткнулся на ошибку. Я пытаюсь создать входящий канал с помощью настраиваемого каталога на основе «WatchServiceDirectoryScanner». Когда я пытаюсь ввести этот сканер, я получаю ошибку.файл: входящий канал-адаптер не работает при использовании пользовательского сканера
«Параметры« фильтр »и« шкафчик »должны присутствовать на прилагаемом внешнем« сканере »:«. Независимо от того, какую комбинацию свойств я пробовал, она не работает. Причина в том, что даже я поставляю шкафчик и фильтрует свой собственный сканер, чтобы «FileReadingMessageSource» весной создавал свои собственные. Поэтому, когда он утверждает,
Assert.state(!(this.scannerExplicitlySet && (this.filter != null || this.locker != null)),
"The 'filter' and 'locker' options must be present on the provided external 'scanner': "
+ this.scanner);
не удается. Существует фильтр, который является «FileListFilterFactoryBean.initializeFileListFilter», независимо от того, какая комбинация была установлена, код ниже будет создавать один, и все вещи просто терпят неудачу.
// no filters are provided
else if (Boolean.FALSE.equals(this.preventDuplicates)) {
filtersNeeded.add(new AcceptAllFileListFilter<File>());
}
else { // preventDuplicates is either TRUE or NULL
filtersNeeded.add(new AcceptOnceFileListFilter<File>());
}
Я прочитал этот пост: How to skip the settings of filter and locker , но он не работает для меня. Кто-нибудь нашел решение для этого?
Вот пример конфигурации XML для создания входящего канала.
<bean id="inboundChannel_3522_filter" class="org.springframework.integration.file.filters.CompositeFileListFilter">
<constructor-arg>
<list>
<bean class="org.springframework.integration.file.filters.RegexPatternFileListFilter">
<constructor-arg value="^Test_(20160216).TXT$" />
</bean>
</list>
</constructor-arg>
</bean>
<bean id="inboundChannel_3522_nio_locker" class="org.springframework.integration.file.locking.NioFileLocker" />
<bean id="inboundChannel_3522_scanner" class="com.test.spring.integraton.file.NonRecursiveWatchServiceDirectoryScanner"
>
<constructor-arg value="e:\data\incoming\Test-V2" />
<property name="filter" ref="inboundChannel_3522_filter"/>
<property name="locker" ref="inboundChannel_3522_nio_locker"/>
</bean>
<file:inbound-channel-adapter id="inboundChannel_3522" auto-create-directory="true" scanner="inboundChannel_3522_scanner"
directory="file:/c:/data/incoming/TEST/" prevent-duplicates="false" ignore-hidden="false" >
<integration:poller fixed-rate="1000"/>
</file:inbound-channel-adapter>
В основном я хочу знать, есть ли способ, чтобы переопределить боб FileReadingMessageSource, так что я могу изменить Assert?