Локальный каталог входящего канала-адаптера и сообщение

У нас есть веб-приложение, и мы хотим использовать ftp:inbound-channel-adapter для чтения файлов с ftp, создания сообщения и отправки его на канал.

  1. Когда для 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] не обозначает правильно доступный каталог.

  1. В сообщении я хочу отправить еще несколько полей в качестве полезных данных, имеющих значение из файла свойств в зависимости от среды. Как я могу это сделать?

    <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,

Если вы хотите изменить полезную нагрузку на что-то другое, содержащее файл и другие поля, используйте преобразователь.

Другие вопросы по тегам