Недавно я участвовал в обновлении среды weblogic с версии 10.3.3.0 до 10.3.6.0. На обоих была установлена одна и та же версия OSB, и после копирования всего кода мы столкнулись с проблемой. Все работало, за исключением того, что мы в конечном итоге обнаружили как часть xquery. Рассматриваемый XQuery захватил токен из базы данных, чтобы мы могли отправить запрос через бизнес-службу, а токен, который мы извлекли из базы данных, был неправильно отформатирован. Рассматриваемый XQuery был командой fn-bea:execute-sql
. Там, где старая среда создала токен, отформатировала токен с возвратом каретки, новая среда выполнила тот же код и создала токен, который выглядел следующим образом:
54686973206973206120746F6B656E0D#&13;
0A54686973206973206120746F6B656E#&13;
0D0A54686973206973206120746F6B65#&13;
6E0D0A54686973206973206120746F6B#&13;
656E0D0A54686973206973206120746F#&13;
6B656E0D0A5468697320697320612074#&13;
В токене был дополнительный #&13;
в конце каждой строки перед возвратом каретки (я проверил с помощью notepad++ и после этого увидел символ возврата каретки). Теперь я знаю, что #&13;
— это код ASCII для возврата каретки, и я использовал небольшое форматирование xquery, чтобы удалить их в качестве обходного пути. Рассматриваемый XQuery был:
fn:replace(xs:token(TOKEN), " " , "
")
Где токен - это переменная, в которую я помещаю результаты функции sql.
Однако мне интересно, что вызвало это? эта функция xquery была удалена из более новой версии weblogic? В журналах изменений weblogic я не нашел ничего, что имело бы непосредственное отношение к этому.
Также есть ли более чистое обходное решение, чем форматирование строки как токена для удаления # вместе с возвратом каретки, а затем повторное добавление возврата каретки вместо добавленных пробелов?
Спасибо, ГолосовойЭльк