Spring XD: исключение "поток закрыт между полезными нагрузками" для процессора оболочки
Простой процессор оболочки принимает входные данные и выводит их обратно:
nano /tmp/echo.sh
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
#!/bin/bash
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"
cat $input
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Он отлично работает при развертывании в Spring XD:
stream create test --definition "file --mode=contents --outputType=text/plain | shell --command='bash /tmp/echo.sh' | b:file --binary=true --dirExpression='''/tmp/out''' --nameExpression=headers[file_name]" --deploy
Но когда я пытаюсь расширить сценарий оболочки для вызова веб-службы, например,
#!/bin/bash
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"
#cat $input
curl http://some.address/webservice -d 'output=xml' -d "text=$(cat $input)"
я всегда получаю исключение "поток закрыт между полезными нагрузками" из Spring XD. Даже если я пытаюсь вернуть (существующий) файл
#!/bin/bash
[ $# -ge 1 -a -f "$1" ] && input="$1" || input="-"
#cat $input
cat /tmp/output.xml
я получаю то же исключение.