Как добавить объявление XML в начало документа XML в предоставленных CICS контейнерах ответов

Сообщения XML со специальными символами (Ý,¨), которые на самом деле являются действительными символами XML, обрабатываются как недопустимые символы для кодировки по умолчанию, которая назначается сообщению, если оно не указано. Мы попытались сделать это, добавив тип кодировки вверху сообщения. Мы использовали кодировку UTF-8. Таким образом, добавляя "" в самом начале сообщения XML, символы в идеале должны стать действительными символами.

Чтобы добавить декларацию XML, мы использовали WITH ENCODING 1208, выполняя XML GENERATE для генерации декларации в документе xml.

  • Вариант кодирования по умолчанию: IBM-1140
  • Документ XML создается внутри буквенно-цифрового элемента данных.
  • Опция компилятора XMLPARSE (XMLSS) действует

Затем мы помещаем сгенерированный XML(с объявлением) в контейнер CICS DFHWS-BODY. Но CICS затем присоединяет конверт к самому началу документа XML, переданного из программы Cobol.

Итак, вопрос здесь в том, как мы можем прикрепить декларацию XML(в CICS) к самому началу XML-документа для внешней среды, чтобы определить параметр кодирования и преобразовать специальные символы в правильный формат?

2 ответа

Можно написать свою собственную программу-обработчик и добавить эту программу-обработчик в конфигурацию xml конвейера в качестве обработчика службы. Теперь, когда ваша программа передает контейнер DFHWS-BODY обратно в обработчик SOAP терминала, она создаст ответное сообщение SOAP (включая, как вы заметили, конверт SOAP) в контейнере DFHRESPONSE. Все сервисные обработчики, которые запускаются после завершения обработчика терминала SOAP (проверьте содержимое контейнера DFHFUNCTION, чтобы определить фазу запроса), смогут изменить этот контейнер, если захотят, и могут добавить объявление XML в начало ответа. При создании нового контейнера ответов следите за преобразованиями кодовых страниц, поскольку в них легко допустить ошибку...

Вы генерируете XML в своей программе? Это интересный подход. Обычно для веб- службы CICS (в отличие от программы веб- поддержки CICS) CICS генерирует XML из структуры данных, которую вы предоставляете в DFHWS-BODY контейнер согласно WSBIND файл. Возможно, вы решили использовать XML-ONLY параметр DFHWS2LS,

Быстрый поиск показывает, что вы пытались решить эту проблему различными способами. Вы можете попробовать CODEPAGE(1208) вариант компиляции и, если необходимо, NOSQLCCSID опция компиляции.

В любом случае, если вы хотите изменить ответ после того, как CICS выполнит его обработку, используйте программу- обработчик транспорта. Объявите обработчик транспорта в вашем файле конфигурации конвейера. Помня, что ваш обработчик транспорта будет вызываться как для запросов, так и для ответов, закодируйте ваш обработчик транспорта, чтобы проверить, обрабатывает ли он ответ, и только затем добавьте декларацию XML к содержимому соответствующего контейнера (DFHRESPONSE Я верю). Вы можете определить, является ли текущая функция ответом, изучив содержимое контейнера с именем DFHFUNCTION, Поставляемая IBM тетрадь DFHPIUCO предоставит вам некоторые константы, которые вам потребуются.

Вы будете изменять контейнеры, которые CICS обычно обрабатывает для вас. Если вы совершите ошибку, вы можете оказаться с интересным завершением и несчастным программистом CICS Systems. Уделите дополнительное время тщательной отладке вашего транспортного обработчика, чтобы у вас не возникали производственные проблемы при возникновении некоторых крайних случаев.

Файлы конфигурации конвейера, обработчики транспорта и т. Д. Документированы в Центре знаний CICS.

IBM предоставляет пример программы-обработчика (SNIFFER) в справочнике SG247206 Реализация веб-сервисов CICS, опубликованном 10 октября 2007 г. Существует более свежая книга с тем же именем, но, похоже, в нее не включен исходный код программы-обработчика.

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