Облегчение анализа и миграции приложений
Инструмент миграции приложений в IBM WebSphere Application Server Migration Toolkit облегчает перевод приложений с исходного сервера приложений на сервер WebSphere Application Server V7.0. В настоящее время поддерживаемыми исходными серверами приложений являются WebLogic Server 8.1 и WebLogic Server 9.2. Плагин миграции приложений работает с импортированным EAR-файлом. Инструмент сканирует JSP-страницы, исходный код на Java™ и дескрипторы развертывания, выявляет возможные проблемы с переносом и выводит отчет об этих проблемах в окне Problems среды Eclipse IDE. Инструмент идентифицирует большинство проблем переноса, с которыми вы можете столкнуться, и во многих случаях предлагает их решение.
Если вы не знакомы с возможностями инструмента миграции приложений, ниже приводится их краткий обзор с несколькими ссылками на файлы для загрузки, а также другие материалы для начала работы.
Что представляет собой инструмент
Инструмент миграции приложений является результатом работы по реализации в IBM Rational® Software Analyzer V7.1 функциональности помощника по миграции приложений с поддерживаемого исходного сервера приложений на WebSphere Application Server. Rational Software Analyzer представляет собой простое и мощное средство для автоматизации анализа программного обеспечения и повышения его качества. Для выполнения этой работы Rational Software Analyzer использует обширный набор правил, а также позволяет создавать специализированные правила под специальные среды и цели.
При разработке инструмента миграции были созданы специализированные правила обнаружения проблем миграции кода и реализованы исправления для решения многих из них. Все эти специализированные правила упакованы в плагин Eclipse 3.4.2, который можно загрузить бесплатно (и без дополнительных лицензий).
Плагин работает с импортируемым EAR-файлом. Он выполняет синтаксический анализ исходного кода на Java, JSP-страниц и дескрипторов развертывания в рабочей области Eclipse и выдает отчеты о проблемах миграции в окне Problems. Поскольку инструмент работает с исходным кодом, а не с файлами классов, нет необходимости полной компиляции приложения на WebSphere Application Server перед запуском программы.
После завершения анализа можно щелкнуть правой кнопкой мыши на конкретном результате в окне Problems и увидеть варианты решения проблемы:
- View Result (просмотр результата): открывает редактор с файлом, который активизировал правило. Строка, в которой возникла проблема, выделяется, и возле нее появляется пиктограмма "нарушение правила" (violation icon).
- Quick Fix (быстрое исправление): выполняет миграцию с модификацией соответствующего Java-кода, JSP-страницы или дескриптора развертывания. Исправление может изменить файл непосредственно или представить ряд необходимых для этого шагов.
- Quick Fix Preview (просмотр быстрого исправления): позволяет построчно сравнить первоначальный код с предлагаемым измененным кодом до выполнения реальных изменений.
- Ignore Result (игнорирование результата): удалит правило из списка без какого-либо изменения файла.
- Quick Fix All (быстрое исправление всегда): решает все проблемы для данного правила.
Вы можете в каждом случае решать, применять ли быстрое исправление или выполнить исправление самостоятельно. Имеется также возможность согласиться со всеми изменениями, если вы предпочитаете не просматривать их по одному. После завершения просмотра изменений можно экспортировать EAR-файл из Eclipse и развернуть его на WebSphere Application Server.
Этот плагин для миграции учитывает большой объем накопленных разработчиками знаний. В результате разработчики, не имеющие большого опыта работы с исходным сервером приложений или сервером WebSphere Application Server, могут выполнять успешные миграции.
Если переносимое приложение еще не загружено в Eclipse, необходимо импортировать EAR-файл в Eclipse до выполнения миграции. Если исходные файлы на Java и код JSP-страниц недоступны в EAR-файле, программа будет проверять правила только для миграции файлов дескрипторов развертывания. Если исходные коды присутствуют в EAR-файле, программа будет проверять правила миграции:
- исходных файлов на Java;
- исходных файлов JSP-страниц;
- файлов дескрипторов развертывания;
- просмотр class path.
Плагин включает в себя синтаксический анализатор исходных файлов на Java, исходных файлов JSP-страниц и файлов дескрипторов развертывания плюс набор правил, обнаруживающих использование проприетарных классов, API, констант и всех несоответствий спецификации Java EE. Эти правила эффективно обнаруживают основные источники проблем переносимости в таких файлах.
В следующем разделе перечислены некоторые правила и быстрые исправления для типов файлов, указанных выше. Ссылки на подробную информацию приведены в разделе Ресурсы.
Плагин обнаруживает исходные файлы на Java по расширению .java. К ним относятся сервлеты, EJB-компоненты и Java-классы. Программа анализирует все Java-файлы в рабочей области, проверяет на соответствие правилам для обнаружения каких-либо проблем переносимости и отображает их вместе с краткой информацией по их исправлению.
Таблица 1. Исходные файлы на Java
| Правило | Исправление |
|---|---|
| Do not use WebLogic RMI API calls (не использовать вызовы WebLogic RMI API). Обнаруживает ссылки на проприетарные RMI-классы и API WebLogic. | Изменяет код для использования стандартных RMI-классов и API Java. |
| Do not use WebLogic specific JNDI names (не использовать специфичные для WebLogic JNDI-имена). Сканирует Java-файлы для обнаружения использования значений проприетарных JNDI-имен WebLogic:
| Изменяет код для использования JNDI-имен WebSphere Application Server или для использования переносимого преобразования JNDI:
|
| Do not use WebLogic proprietary startup or
shutdown classes (не использовать проприетарные классы startup или shutdown WebLogic). Ищет классы, реализующие интерфейсы startup и shutdown WebLogic. | Преобразует эти классы для использования стандартного интерфейса javax.servlet.ServletContextListener и регистрирует их в файле web.xml приложения. |
| Do not use non-compliant UserTransaction lookup
name (не использовать несовместимый поиск по имени UserTransaction). Находит ссылки на ctx.lookup("javax.transaction.UserTransaction") в сервлетах и bean-компонентах BMT. (WebLogic разрешает такой несовместимый поиск, а WebSphere Application Server – нет.) | Если данная проблема возникает в bean-компоненте BMT, этот компонент преобразуется для использования ctx.getUserTransaction(). Если проблема возникает в коде сервлета или клиента, они преобразуются для использования JNDI-поиска: ctx.lookup("java:comp/UserTransaction"). |
| Do not use mismatching throws clauses (не использовать несогласованные выражения throws). Находит несоответствия выражений throws в методах EJB-компонентов и интерфейсах home и remote. (WebLogic разрешает такое несоответствие, а WebSphere Application Server – нет.) | Добавляет все отсутствующие исключительные ситуации и удаляет все лишние в EJB-компоненте. Интерфейсы home и remote не меняются. |
| Do not use WebLogic proprietary Apache packages (не использовать проприетарные Apache-пакеты WebLogic). Отмечает ссылки на проприетарные Apache-классы и API WebLogic, которые могут отображаться на Apache-классы и API с открытыми исходными кодами. | Изменяет код для использования Apache-классов и API с открытыми исходными кодами. Необходимо будет загрузить соответствующий .jar-файл Apache Xerces и включить его в приложение. |
Плагин обнаруживает исходные файлы JSP-страниц по расширению .jsp, анализирует эти файлы в рабочей области, проверяет их на соответствие правилам с целью поиска проблем переносимости и предлагает быстрые исправления. Помните, что исходные файлы JSP-страниц, как и Java-код, могут активизировать непереносимые классы, API и константы. Плагин обнаруживает эти проблемы переносимости и обрабатывает их способом, аналогичным описанному выше.
Таблица 2. Исходные файлы JSP-страниц
| Правило | Исправление |
|---|---|
| Avoid using a .jsp extension for JSP fragments (избегать использования расширения .jsp для JSP-фрагментов). Ищет JSP-фрагменты. Файлы фрагментов с расширением .jsp вместо .jspf отмечаются. Согласно спецификации Java EE, все JSP-страницы должны компилироваться, а JSP-фрагменты – нет. | Изменяет имя файла и все ссылки на него, используя диалоговое окно refactor. |
| Use correct case for tag/attribute names (использовать правильный регистр для имен тегов/атрибутов). Отмечает все имена тегов/атрибутов в JSP с неверным регистром символов. Согласно спецификации XML имена тегов/атрибутов чувствительны к регистру символов; сервер WebSphere Application Server требует соответствия этому правилу, а WebLogic – нет. | Изменяет регистр символов в исходных файлах JSP-страниц в соответствии с регистром в библиотеке тегов. |
Файлы дескрипторов развертывания
Плагин обнаруживает специфичные для поставщиков программного обеспечения файлы дескрипторов развертывания по их имени (например, weblogic.xml, weblogic-ebj-jar.xml, weblogic-webservices.xml и т.д.). Плагин анализирует дескрипторы развертывания, проверяет их на соответствие правилам для обнаружения проблем переносимости и предлагает быстрые исправления.
Таблица 3. Файлы дескрипторов развертывания
| Правило | Исправление |
|---|---|
| Use standard deployment descriptors for EJB
references (использовать стандартные дескрипторы развертывания для EJB-ссылок). Дескриптор развертывания WebLogic (weblogic.xml) может содержать EJB-ссылки на отображение сессионных bean-компонентов на их JNDI-имя. | Перемещает все EJB-ссылки, определенные в файле weblogic.xml, в стандартный дескриптор развертывания web.xml. |
| Use standard deployment descriptors for resource
reference names (использовать стандартные дескрипторы развертывания для имен ссылок на ресурсы). Специфичные для WebLogic дескрипторы развертывания (weblogic.xml) могут содержать ссылки на ресурсы, отображающие источники данных в их JNDI-имена. | Перемещает все ссылки на ресурсы, определенные в файлах weblogic.xml, в стандартные дескрипторы развертывания. |
| Do not use WebLogic Web services deployment
descriptor (не использовать дескриптор развертывания Web-сервисов WebLogic). Ищет дескриптор развертывания Web-сервисов, в частности определяет присутствие:
| Создает ANT-сценарий с ANT-заданиями WebSphere Application Server, который генерирует соответствующие артефакты для Web-сервисов на основе информации, собранной из дескрипторов развертывания. Также, если это необходимо для сервиса, генерируется и добавляется в classpath проекта Service Endpoint Interface (SEI). Затем можно запустить ANT-сценарий для миграции Web-сервиса. |
Проверяется корректность настройки class path.
Таблица 4. Просмотр class path
| Правило | Исправление |
|---|---|
| Use MANIFEST.MF for application class path (использовать MANIFEST.MF для class path приложения). Ищет классы и библиотеки в папке APP-INF и EAR-файле. Это WebLogic-расширение EAR-файла неявно добавляет в class path данные классы и библиотеки. | Добавляет запись в class path каждого соответствующего модуля, изменяя элемент class path файла MANIFEST.MF модуля. Это стандартный для отрасли метод добавления классов и библиотек в class path. |
Подробная информация по использованию инструмента миграции приложений выходит за рамки данной статьи, но для того чтобы помочь вам начать работать с ним, на рисунке 1 показаны некоторые его ключевые функциональные возможности. В следующем разделе Ресурсы приводятся ссылки на необходимую информацию. На рисунке изображен снимок экрана инструмента миграции приложений, выполняющего миграцию класса WebLogic Startup на сервер WebSphere Application Server. На рисунке:
- В панели Java Source Compare показан пример просмотра быстрого исправления. В левой половине этой панели отображается исходный код с примененным исправлением, а в правой половине – первоначальный код.
- Вкладка Help в правом столбце содержит объяснение правила и применяемого быстрого исправления.
- В панели Java Source Compare отображаются доступные варианты миграции кода:
- Просмотр сканированного файла.
- Изменение файла с применением быстрого исправления.
- Просмотр быстрого исправления.
- Игнорирование результата.
- Исправление всех случаев срабатывания этого правила.
Рисунок 1. Результаты анализа программой Application Migration
Если вы выполняете миграцию приложений на WebSphere Application Server или планируете такую миграцию в будущем, загрузите и попробуйте инструмент миграции приложений Tool. Имеется подробное руководство "Начало работы" (см. раздел Ресурсы): также работает форум, на котором можно поделиться своими проблемами и получить советы по их решению.
Научиться
- Оригинал статьи Comment lines by Donald Vines & Andy Hoyt: How the Application Migration tool makes it easy to move to WebSphere Application Server (EN).
- Информация о продукте IBM Rational
Software Analyzer.
Получить продукты и технологии
-
Загрузите IBM WebSphere Application Server Migration Toolkit.
-
Загрузите пробную версию IBM WebSphere Application Server.
-
Загрузите пробную версию IBM Rational Application Developer.
Дональд Вайнс (Donald Vines) - исполнительный IT-архитектор IBM, ответственный за разработку рекомендаций по миграции приложений WebSphere для стран Северной Америки. Сейчас он работает с наиболее важными клиентами IBM в области проектирования архитектурных решений и обучения разработчиков использованию SOA и правилам модернизации промышленных проектов. Также он является техническим экспертом в Object Management Group (OMG), одном из крупнейших центров создания отраслевых стандартов. Дональд был одним из исследователей-разработчиков протокола IIOP (Internet Inter-ORB Protocol), поддерживающего в том числе и взаимодействие программных объектов через интернет-каналы. Кроме того, он имеет сертификаты Sun Certified Enterprise Architect, Sun Certified Java Programmer и OMG Certified UML2 Professional.
