Давненько не писал ничего сюда.
Сегодня хочу рассмотреть использование веб-сервисов Teamcenter 10 с применением библиотеки Axis2. Часть первая - развёртывание и запуск.
Рассмотрим пример HelloTcSoap из архива soa_client. Пример из папки java\samples.
Папка HelloTcSoap представляет собой Eclipse проект. Проект будет нормально воспринят Eclipse 3.8, Java 1.7 и утилитой Ant 1.7. Внутри папки есть файл ReadMe.txt в котором описывается процесс сборки примера.
Копируем проект в рабочую область. Импортируем проект из папки samples. Import -> Existing Projects into Workspace. Выбираем папку рабочей области samples. Галочкой уже выделен проект, который будет импортирован. Нажимаем Finish.
После импорта проекта, среда разработки начнёт ругаться.
В readme первым пунктом идёт добавление переменной окружения AXIS2_HOME, если вы будете собирать проект с помощью Ant'а из консоли, иначе необходимо добавить переменную в Eclipse. В проекте уже используется эта переменная. Заходим в меню Window -> Preference. Открываем раздел Java -> Build Path -> Classpath Variables и создаём переменную. Путь указываем до самой папки Axis, т.е. например C:/distr/axis2-1.7.x
Заходим в свойства проекта, открываем Java Build Path. Видно, что среда не может найти некоторые jar. Проект писался под более старую версию Axis2-1.6.2 и поэтому некоторые файлы придётся исправить. Например axiom-impl-1.2.13.jar, а в axis2-1.7.3 используется версия 1.2.19.
Исправляем всё. Дело это долгое и творческое, т.к. некоторых библиотек может вообще не быть. В итоге я просто добавил все jar'ы из папки lib Axis'а, а старые записи убрал. По сути переменная не понадобилась.
Как вариант, можно скачать версию 1.6.2 и не париться.
У меня возникало несколько проблем на этом этапе. Во-первых Ант решил, что soa.home у меня в папке, где установлен TC10. Я не стал париться и просто скопировал папку wsdls туда. (Потом я ковырял файл build.xml и нашёл там объявление свойства soa.home. Задал верный путь до папки soa и всё стало работать правильно. Просто пример рассчитан на то, что его запускают из папки examples, а у нас это не так)
Во-вторых возникла ошибка парсинга wsdl. Решил это заменой значений атрибутов wsdlfilename у задач codegen. Имена файлов из папки заменил wsdl'ями реальных сервисов. Дело в том, что на сервере крутится TC10.1.5, а примеры для TC10.1.0 Возможно wsdl в папке различаются с реальными и поэтому возникла проблема.
При генерации используется папка wsdls в папке soa, как мы уже поняли. Могут возникнуть ошибки, если ант не найдёт необходимые файлы. Читайте сообщения анта в консоли. Ну а лучше реальные wsdl использовать я считаю.
После генерации появляются папки AxisGenCode/src и AxisGenCode, также появляется bat'ник для запуска. Батник нам не нужен, т.к. мы запускаем в Eclipse. Компилируем проект (или среда это делает за нас автоматически) и запускаем. Метод main находится в классе Hello. Как видим это опять практически тот же пример, что мы уже рассматривали на C#.
В аргументах запуска необходимо указать URI сервера или в самом коде, в классе Hello. Вернее, он указан, надо исправить просто.
Надеюсь не очень запутанно написал. Удачи! Во второй части будем смотреть что там, да как.
Сегодня хочу рассмотреть использование веб-сервисов Teamcenter 10 с применением библиотеки Axis2. Часть первая - развёртывание и запуск.
Рассмотрим пример HelloTcSoap из архива soa_client. Пример из папки java\samples.
Папка HelloTcSoap представляет собой Eclipse проект. Проект будет нормально воспринят Eclipse 3.8, Java 1.7 и утилитой Ant 1.7. Внутри папки есть файл ReadMe.txt в котором описывается процесс сборки примера.
Этап 1.
После импорта проекта, среда разработки начнёт ругаться.
Этап 2.
Для начала необходимо скачать Axis2.В readme первым пунктом идёт добавление переменной окружения AXIS2_HOME, если вы будете собирать проект с помощью Ant'а из консоли, иначе необходимо добавить переменную в Eclipse. В проекте уже используется эта переменная. Заходим в меню Window -> Preference. Открываем раздел Java -> Build Path -> Classpath Variables и создаём переменную. Путь указываем до самой папки Axis, т.е. например C:/distr/axis2-1.7.x
Заходим в свойства проекта, открываем Java Build Path. Видно, что среда не может найти некоторые jar. Проект писался под более старую версию Axis2-1.6.2 и поэтому некоторые файлы придётся исправить. Например axiom-impl-1.2.13.jar, а в axis2-1.7.3 используется версия 1.2.19.
Исправляем всё. Дело это долгое и творческое, т.к. некоторых библиотек может вообще не быть. В итоге я просто добавил все jar'ы из папки lib Axis'а, а старые записи убрал. По сути переменная не понадобилась.
Как вариант, можно скачать версию 1.6.2 и не париться.
Этап 3.
Далее идёт генерирование заглушек (stub). Для этого используется файл build.xml в корне проекта.У меня возникало несколько проблем на этом этапе. Во-первых Ант решил, что soa.home у меня в папке, где установлен TC10. Я не стал париться и просто скопировал папку wsdls туда. (Потом я ковырял файл build.xml и нашёл там объявление свойства soa.home. Задал верный путь до папки soa и всё стало работать правильно. Просто пример рассчитан на то, что его запускают из папки examples, а у нас это не так)
Во-вторых возникла ошибка парсинга wsdl. Решил это заменой значений атрибутов wsdlfilename у задач codegen. Имена файлов из папки заменил wsdl'ями реальных сервисов. Дело в том, что на сервере крутится TC10.1.5, а примеры для TC10.1.0 Возможно wsdl в папке различаются с реальными и поэтому возникла проблема.
При генерации используется папка wsdls в папке soa, как мы уже поняли. Могут возникнуть ошибки, если ант не найдёт необходимые файлы. Читайте сообщения анта в консоли. Ну а лучше реальные wsdl использовать я считаю.
После генерации появляются папки AxisGenCode/src и AxisGenCode, также появляется bat'ник для запуска. Батник нам не нужен, т.к. мы запускаем в Eclipse. Компилируем проект (или среда это делает за нас автоматически) и запускаем. Метод main находится в классе Hello. Как видим это опять практически тот же пример, что мы уже рассматривали на C#.
В аргументах запуска необходимо указать URI сервера или в самом коде, в классе Hello. Вернее, он указан, надо исправить просто.
В итоге.
Есть кстати ещё такая фишка, что при запуске примера (не только этого), сервер отклоняет соединение пока не будет запущен TC10. Там синхронизация какая-то происходит, может из-за этого? После запуска TC10, пример запускается нормально. Не знаю пока почему это происходит.Надеюсь не очень запутанно написал. Удачи! Во второй части будем смотреть что там, да как.
Комментариев нет:
Отправить комментарий