Локальный каталог входящего канала-адаптера и сообщение
У нас есть веб-приложение, и мы хотим использовать ftp:inbound-channel-adapter для чтения файлов с ftp, создания сообщения и отправки его на канал.
- Когда для local-directory установлено значение local-directory="#servletContext.getRealPath('')}/temp/inFtp", оно выдает генерируемое сообщение GenericMessage [payload={applicationDeployPath}\temp\inFtp\xyz.stagging.dat, заголовки ={timestamp=1444812027516, id=9b5f1581-bfd2-6690-d4ea-e7398e8ecbd6}]
Но каталог не создан, я проверил, у меня есть полное разрешение здесь. Путь [{applicationDeployPath}\temp\inFtp] не обозначает правильно доступный каталог.
В сообщении я хочу отправить еще несколько полей в качестве полезных данных, имеющих значение из файла свойств в зависимости от среды. Как я могу это сделать?
<int-ftp:inbound-channel-adapter id="ftpInboundAdaptor" channel="ftpInboundChannel" session-factory="ftpClientFactory" filename-pattern="*.stagging.dat" delete-remote-files="false" remote-directory="/stagging/" local-directory="#servletContext.getRealPath('')}/temp/inFtp" auto-create-local-directory="true"> <int:poller fixed-rate="1000"/> </int-ftp:inbound-channel-adapter>
заранее спасибо
1 ответ
local-directory
оценивается только один раз (и создается при необходимости), во время инициализации, а не для каждого сообщения.
Я удивлен, что контекст даже инициализируется; этот синтаксис выглядит плохо:
local-directory="#servletContext.getRealPath('')}/temp/inFtp"
Если ты имеешь ввиду
local-directory="#{servletContext.getRealPath('')}/temp/inFtp"
это будет работать только если у вас есть бин под названием servletContext
,
Если ты имеешь ввиду
local-directory="#servletContext.getRealPath('')/temp/inFtp"
вам нужна переменная servletContext
в контексте оценки.
генерируется сообщение GenericMessage [payload={applicationDeployPath}\temp\inFtp\xyz.stagging.dat, заголовки ={timestamp=1444812027516, id=9b5f1581-bfd2-6690-d4ea-e7398e8ecbd6}]
Если он действительно генерирует это сообщение, он должен был создать этот каталог.
Непонятно, что вы подразумеваете под
Я хочу отправить еще несколько полей в качестве полезной нагрузки
Полезная нагрузка File
,
Если вы хотите изменить полезную нагрузку на что-то другое, содержащее файл и другие поля, используйте преобразователь.