О начале обучения |
Реализация. Создание корпоративной сервисной шины
9.4.4 Импортирование схем в брокер
Далее импортируйте файлы схем в рабочее пространство инструментария Broker Toolkit. Вы можете организовать импорт схем, поместив файлы схем, относящиеся к каждому проекту набора сообщений, в соответствующий проект, или же можно импортировать все схемы в общую папку.
- В перспективе Broker Application Development перейдите в окно Resource Navigator
(Навигатор ресурсов), щелкните правой кнопкой мыши по элементу proxyAssessorSystem и выберите пункт меню File (Файл) Import (Импорт) File system (Файловая система) Next (Далее):
- Перейдите к директории, в которой находятся файлы схем, и отметьте файлы, которые вы хотите импортировать.
- В качестве пункта назначения для импортированных ресурсов уже должна быть указана система proxyAssessorSystem. Установите флажок Create selected folders only (Создавать только указанные папки) и нажмите Finish (Готово).
- Проверьте схемы, открыв и изучив их графическое представление и сравнив их с исходными WSDL-файлами ( рис. 9.22).
- Используя представление Outline (Общий обзор), выберите схему верхнего уровня или выберите верхний уровень на графической закладке. Затем откройте закладку Design редактора свойств и убедитесь, что в поле целевого пространства имен указано нужное вам пространство.
- Последнее, что нужно импортировать, – это файл схемы, который описывает SOAP-сообщения. При помощи Web-браузера посетите сайт World Wide Web Consortium (W3C): http://schemas.xmlsoap.org/soap/envelope/ Сохраните схему для SOAP 1.1.
9.4.5 Использование схем для создания MDF
Теперь, когда все наши файлы схем находятся в рабочем пространстве Broker Toolkit, мы можем использовать их для заполнения файлов определений сообщений (message definition file, MDF).
- В перспективе Broker Application Development, в окне Resource Navigator (Навигатор ресурсов), щелкните правой кнопкой мыши по файлу схемы, который вы хотите использовать в качестве источника определений сообщений. Выберите пункт меню New (Новый) Message Definition File (Файл определения сообщений).
- Переключатель XML schema file (Файл XML-схемы) должен быть включен. Нажмите Next (Далее). Выберите применяемый файл схемы и нажмите Next (Далее). Выберите проект Assessor Messageset, который вы создали, и нажмите Next (Далее). Установите флажки выбора глобальных элементов и нажмите Finish (Готово).
Вы создали новый файл определений сообщений (.mxsd). Повторите данные шаги для каждого файла схемы. Вы должны получить 10 сообщений об ошибках, связанных с конфликтом имен ( рис. 9.23).
увеличить изображение
Рис. 9.23. Ошибки при импортировании определений сообщений в один набор сообщений
Устранение дубликатов имен и типов
Легче всего устранить шесть ошибок, помеченных буквами А. Эти ошибки вызваны тем, что поток 3 и поток 4 используют одинаковые имена сообщений. Высокоуровневые элементы сообщения применять необязательно, поскольку в действительности мы будем использовать сообщение-конверт SOAP (SOAP envelope).
Оставшиеся четыре ошибки вызваны дубликатами типов CarDetails и AssessorAckMessage в одном пространстве имен. В данном случае нам повезло. Это полные дубликаты, и мы можем удалить один из дублей, заменив его ссылкой. Если бы типы имели одинаковые имена и пространства имен, но при этом различались, то у нас было бы только два варианта: заставить одну из команд разработки изменить определения в исходных материалах и внести изменения везде, где изменения определений на что-то повлияли, или использовать несколько наборов сообщений для хранения конфликтующих типов.
Решение проблемы дублирования имен сообщений
Эта ошибка, возникающая, даже если сообщения находятся в разных пространствах имен, вызвана тем, что версия 5 WebSphere Business Integration Message Broker не использует в данной ситуации пространства имен для различения сообщений. Возможно, это будет исправлено в версии 6.
Для решения проблемы дублирования имен сообщений, выполните следующие действия:
- Откройте файл определений сообщений AssessorAvailablity(3) и выберите папку Messages. На рис. 9.24 мы используем для этого представление Outline (Общий обзор).
- Удалите сообщения requestAssessorAvailablity и requestAssessorAvailabilityReponse и сохраните файл определений.
Число ошибок уменьшится до четырех.
Решение проблемы дублирования типов
Эта процедура несколько более хитрая. Проблема показана на рис. 9.25.
Тип AssessorAckMessage в пространстве имен itso.lgi.broker имеет дубликаты, которые обведены на левой половине рисунка. Тип CarDetails дублируется в пространстве имен itso.assessor, как показано в правой части. Обратите внимание, что в пространстве имен itso.assessor есть дубликат типа AssessorAckMessage, но это не представляет проблемы, поскольку этот дубль находится в другом пространстве имен.
Мы удалим тип AssessorAckMessage из AssessorReport(8) и заменим его ссылкой на определение в DeliverAssessment(7).
- Откройте в представлении Outline (Общий обзор) файл AssessorReport(8) и посмотрите, где находится определение типа AssessorAckMessage и какие на него есть ссылки ( рис. 9.26).
- Удалите тип и нажмите OK в появляющемся сообщении для подтверждения удаления элемента receiveAssessorReportReturn.
- Выделите сообщение receiveAssessorReportResponse, щелкните правой кнопкой мыши и выберите пункт меню Add Local Element (Добавить локальный элемент). Введите значение receiveAssessorReportReturn, чтобы восстановить элемент.
- Новый элемент отобразится в окне редактора определения сообщения. Выберите string в столбце Type (Тип), а в раскрывающемся списке выберите More (Еще).
- Выберите тип AssessorAckMessage и квалификатор http://assessor.itso. На рис. 9.27 показано восстановленное сообщение-ответ.
Используя сходную процедуру, удалите одно из определений CarDetails.
- Удалите тип CarDetails. Нажмите OK в предупреждающем сообщении.
- Откройте элемент requestAssessorAvailability в редакторе определения сообщения. Щелкните правой кнопкой мыши по элементу ** Anonymous **, выберите пункт меню Add Local Element и введите имя cardet.
- Укажите тип string и выберите в раскрывающемся окне пункт More (Еще). Укажите в поле типа CarDetails и введите квалификатор http://assessor.itso. Нажмите OK.
- Перетащите элемент cardet в нужную позицию между assessorID и location. Получившийся элемент показан на рис. 9.29.
- Сохраните файл определений сообщений. Теперь все ошибки должны быть исправлены.