IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Lotus  >

Работа с плагинами в IBM Lotus Sametime V7.5.1: Тестирование и отладка плагинов

developerWorks
Опции документа

Опции документа, требующие включения JavaScript, не отображаются

Обсудить


Выскажите мнение об этой странице

Помогите нам улучшить содержание


Уровень сложности: средний

Дэн Кен, ведущий инженер по программному обеспечению, IBM
Лоренс Райт, студент, IBM

07.12.2007

В этой статье, третьей части серии из четырёх частей, показан процесс тестирования и отладки плагинов.

Если вы ознакомились с частями 1 и 2 этой серии, вы уже знаете, как использовать Eclipse для тестирования плагина IBM Lotus Sametime с помощью конфигурации времени исполнения. В Части 1 рассматривались настройки, необходимые для работы конфигурации времени исполнения. В Части 2 объяснялось, как разработать плагин BuddyNote с нуля. В этой статье пойдёт речь о настройках конфигурации времени исполнения, что позволит конфигурировать собственные среды запуска для использования в дальнейшей разработке. В статье также рассматривается имеющаяся в Eclipse перспектива debug, а также преимущества в области отладки и поиска ошибок, которые дает плагин EventLogger из IBM Lotus Sametime V7.5.1 Software Development Kit (SDK).

Эта серия статей предназначена для всех тех, кто интересуется расширением возможностей Lotus Sametime с помощью разработки плагинов. Вы должны быть знакомы с Lotus Sametime и уметь работать с ним.

В этой серии статей из четырёх частей представлено введение в разработку плагинов Lotus Sametime V7.5.1 с помощью платформы Eclipse.

  • В части 1 "Настройка среды Eclipse" рассматривалась настройка Eclipse для разработки плагинов Lotus Sametime V7.5.1.
  • В части 2 "Разработка плагина BuddyNote" при помощи Eclipse расширялся пользовательский интерфейс Lotus Sametime и создавался плагин BuddyNote.
  • В данной части 3 показано, как отлаживать плагин с помощью входящих в состав Eclipse инструментов.
  • В части 4, последней части этой серии, показан процесс развёртывания пользовательского плагина, который позволяет совместно использовать ваши творения, настроив проекты Feature и Update Site.

Предварительные требования

Данная статья предназначена для специалистов, имеющих опыт Java-разработки, но не обязательно знакомых с разработкой в Eclipse или разработкой плагинов. Прежде чем идти далее, необходимо ознакомиться со второй частью этой серии статей - "Разработка плагина BuddyNote", - чтобы хорошо разобраться в работе плагина BuddyNote. См. часть 1 "Настройка среды Eclipse", где подробно объясняются системные требования.



В начало


Введение

Возможность создавать среды исполнения для различных платформ - чрезвычайно полезная и мощная функция Eclipse. Это позволяет тестировать плагины в среде исполнения, использовать имеющиеся в Eclipse инструменты, а также избегать возможного "загрязнения" установленного продукта. Вы уже использовали Eclipse для тестирования плагина Lotus Sametime при помощи конфигурации времени исполнения, хотя могли и не отдавать себе в этом отчёта.

Поделиться...

digg Отправить на Digg
del.icio.us Разместить на del.icio.us
Slashdot Разместить на Slashdot!

В первой части данной серии мы сконфигурировали среду исполнения с рекомендованным именем ST 751. В этой статье вкратце рассматриваются параметры конфигурации, позволяющие в этой среде исполнения запускать Lotus Sametime с помощью среды разработки Eclipse. Затем вы познакомитесь с некоторыми встроенными в Eclipse инструментами отладки, которые можно использовать для поиска и устранения ошибок в плагинах Lotus Sametime.

Наконец, мы рассмотрим один из имеющихся в составе Lotus Sametime V7.5.1 SDK специальных плагинов под названием EventLogger. EventLogger, будучи добавленным к Lotus Sametime, запущенному в среде Eclipse, может выводить информацию о событиях Lotus Sametime на консоль Eclipse. Этот инструмент полезен как для поиска ошибок, так и для отладки. Предположим, например, что вы хотите выполнять какое-то действие при получении текстового сообщения, но не видите желаемых результатов. В этом случае к EventLogger можно добавить метод, позволяющий увидеть всю информацию по окну чата, участникам и сообщению, которую можно использовать для поиска ошибок в плагине. Информация такого типа служит полезным добавлением к справке по Javadoc API и другой документации, когда вы занимаетесь поиском ошибок и отладкой ваших плагинов.



В начало


Конфигурация исполнения

В этом разделе рассматривается конфигурация исполнения, использовавшаяся в рабочем пространстве во второй части этой серии, а также обсуждаются настройки, необходимые для запуска экземпляра Lotus Sametime через рабочую среду Eclipse, что позволяет тестировать плагины. Если у вас в Eclipse не открыто рабочее пространство, которое мы использовали в части 2, откройте его сейчас. Выберите из строки меню Choose Run, а затем Run. Откроется диалоговое окно, показанное на рисунке 1.


Рисунок 1. Диалоговое окно Run
Диалоговое окно Run

Здесь можно настраивать среды исполнения для любых приложений, для которых разрабатываются плагины, что позволяет запускать их в среде разработки для тестирования и возможной отладки. Цель конфигурации исполнения - в максимальной степени эмулировать вашу среду развёртывания. Практически всегда можно с уверенностью считать, что то, что работает в вашей среде развёртывания, будет работать точно так же при правильном развёртывании и в Lotus Sametime.

В левой панели диалогового окна можно увидеть список возможных родительских конфигураций для настройки. Вы видите, что среда ST 751, которую мы используем, в действительности представляет собой приложение Eclipse. Это разумно, поскольку Lotus Sametime работает поверх Eclipse.

Если среда ST 751 ещё не выбрана, выберите её, и на правой панели появятся настройки среды. Сначала откроется вкладка Main, на которой присутствуют три заголовка: Workspace Data, Program to Run и Java Runtime Environment.

В разделе Workspace Data можно назначить рабочее пространство исполнения - рабочее пространство, в котором хранится информация, созданная и собранная во время исполнения приложения. По умолчанию оно располагается по адресу C:\Documents and Settings\<winlogin>\IBM\RCP\Sametime; однако PDE специально создаёт отдельное рабочее пространство исполнения, чтобы можно было тестировать ваш код независимо от пользовательских данных, записанных как часть установленного продукта Lotus Sametime. В случае BuddyNote записи, сгенерированные для контакта, сохраняются в подкаталог рабочего пространства каталога .metadata\.plugins\sample.buddynote. В рабочем пространстве исполнения также сохраняются информация о входе в систему и настройки Lotus Sametime. Важно, чтобы это рабочее пространство и то, в котором выполняется разработка (содержащее проекты исходного кода), были разными, чтобы исключить повреждение данных.

Если выбрать опцию "Clear workspace data before launching", расположенную под полем Location, то вся собранная информация будет стираться каждый раз при запуске приложения. Если выбрать эту опцию для BuddyNote, вам придётся входить в Lotus Sametime вручную при каждом запуске приложения, а после выхода из него не будет оставаться записей. Попробуйте включать и выключать эту опцию, нажимая Apply, а затем - Run.

В разделе Program to Run вы увидите, что опция Run an Application выбрана, так как Lotus Sametime является приложением RTC (Real-Time Collaboration Application, приложение для коллективной работы в реальном времени). В таких приложениях, например, приложениях для обмена сообщениями, реализованы технологии одновременной работы. Этот плагин инициализирует среду исполнения и определяет индивидуальные особенности приложения; то есть открывает главное окно, восстанавливает настройки и готовит к использованию платформу функционально насыщенных клиентов.

В разделе Java Runtime Environment имеется JCL Desktop, фигурирующий в списке как Runtime JRE, а не обычный jrex.x.x для java. В Lotus Sametime в качестве среды исполнения используется J9 JRE, она быстрее и задействует меньше памяти, чем стандартная Sun JRE. Установить J9 JRE можно, выбрав Window - Preferences - Java - Installed JREs. Более подробную информацию можно найти в первой части этой серии, а также в Руководстве по интеграции из Lotus Sametime V7.5.1 SDK.

Перейдём теперь к вкладке Arguments (см. рисунок 2), на которой задаются некоторые аргументы JVM:

-Xint –Xtrace:none –Xgcpolicy:gencon
-Dcom.ibm.pvc.webcontainer.port=7777



Рисунок 2. Вкладка Arguments
Вкладка Arguments

Последняя интересующая нас вкладка, Plug-ins, показана на рисунке 3. Все остальные вкладки используются нечасто, и в этой статье речь о них не идёт.


Рисунок 3. Вкладка Plug-ins
Вкладка Plug-ins

На вкладке Plug-ins можно выбрать плагины, которые будут включены в состав вашей среды исполнения. Плагины среды исполнения - это сочетание плагинов, определённых в среде платформы (в данной статье это установленный продукт Lotus Sametime), а также плагинов, которые вы выбрали из вашего рабочего пространства. Обычно нужно оставить все плагины Target Platform выбранными; таким образом, вы используете базовый продукт и добавляете несколько плагинов в зависимости от вашей среды разработки для тестирования. Хотя не обязательно включать в рабочее пространство все плагины. Как можно видеть, в этом примере не выбран плагин под названием EventLogger, что означает, что он не будет включён в список доступных плагинов при инициализации конфигурации запуска. Он никогда не будет запускаться при запуске Lotus Sametime в этой конфигурации через Eclipse. О плагине EventLogger речь пойдёт ниже. Обратите внимание, что также имеются опции, включающие зависимости плагинов и их проверку. Эти опции можно оставить по умолчанию.

Необходимо выполнить и другие операции по настройки Eclipse для работы с Lotus Sametime, что рассматривается в части 1 этой серии статей. Теперь мы рассмотрим некоторые инструменты отладки, имеющиеся в Eclipse.



В начало


Инструменты отладки Eclipse

Прежде чем ознакомиться с этим разделом, убедитесь, что вы ввели запись BuddyNote для своего идентификатора пользователя Lotus Sametime. При необходимости запустите Lotus Sametime из Eclipse, добавьте запись, а затем выйдите из Lotus Sametime.

В Eclipse встроены разнообразные готовые к использованию инструменты отладки. Для исправления синтаксических ошибок в редакторе имеется функция instant alert, выделяющая текст красным цветом. Если нажать на ошибку, Eclipse выводит список возможных решений и помогает их реализовать.

Для исправления ошибок времени исполнения Eclipse позволяет устанавливать точки прерывания, отслеживать переменные, изменять их вручную и выполнять программу пошагово строка за строкой или метод за методом. Неотъемлемой частью всей этой функциональности является перспектива Debug.

В Eclipse имеется перспектива Debug, показанная на рисунке 4. В ней отображается большой объем информации по программе:

  • Представление Debug. Содержит стековые фреймы вызовов потоков и методов.
  • Представление Variables and Breakpoints. Отображает текущие локальные переменные и их значения, а также вкладку со всеми точками прерываний.
  • Editor (Редактор). Отображает код для текущего стекового фрейма, выделяя строку, которая будет выполнена следующей.
  • Представление Outline. Соответствует исходному коду в редакторе.
  • Представление Console. Консоль Eclipse.

Рисунок 4. Перспектива Debug в Eclipse
Перспектива Debug в Eclipse



В начало


Добавление точки прерывания

Чтобы перейти в перспективу Debug, сначала необходимо вставить в программу точку прерывания. В данной статье поместите точку прерывания рядом с началом метода retrieveBuddyNote() в классе BuddyNoteView, и вы увидите, как переменная String s меняет своё значение с null на выбранную в Списке контактов запись.

  1. Нажмите правой кнопкой мыши слева от номера строки File f = new File(spec).
  2. Выберите Toggle Breakpoint.
  3. После размещения точки прерывания вы увидите изображение, подобное показанному на рисунке 5.

Рисунок 5. Точка прерывания
Точка прерывания

  1. Нажмите правой кнопкой мыши на проект BuddyNote (sample.buddynote) и выберите Debug As - Debug для перехода в перспективу Debug.

    Откроется окно, практически идентичное диалоговому окну Run, однако вместо кнопки Run появится кнопка Debug, как показано на рисунке 6.

Рисунок 6. Диалоговое окно Debug
Диалоговое окно Debug

  1. Убедитесь, что на левой панели выбрано ST 751, а затем нажмите Debug для запуска Lotus Sametime в среде отладки.

ПРИМЕЧАНИЕ: Lotus Sametime должен открыться как обычно. В зависимости от того, активируется ли при запуске BuddyNote, вы можете немедленно получить (а можете и не получить) сообщение от Eclipse о переходе в перспективу Debug. Если вы не получите сообщения, показанного на рисунке 7, откройте окно представления BuddyNote и выберите ваш идентификатор пользователя в Списке контактов. В результате должно появиться сообщение, показанное на рисунке 7. Нажмите Yes.


Рисунок 7. Диалоговое окно с подтверждением о переключении перспективы
Диалоговое окно с подтверждением о переключении перспективы



В начало


Использование перспективы Debug

Теперь перед вами перспектива Debug Eclipse, а исполнение вашего плагина остановлено в установленной вами точке расширения. Заглянув в представление Variables, вы обнаружите, что строковая переменная s пуста (null). Выполните несколько строк, и вы увидите, как s меняет своё значение с null на запись плагина buddy note для вашего идентификатора пользователя (если вы её не добавили, как требовалось ранее, значение s изменяться не будет).


Рисунок 8. Перспектива Debug Eclipse – исполнение остановлено
Перспектива Debug Eclipse – исполнение остановлено

В верхней правой части представления Debug (расположенного в верхнем левом углу перспективы Debug) находится панель инструментов с кнопками управления пошаговым исполнением программы; см. рисунок 9.


Рисунок 9. Перспектива Debug Eclipse – панель инструментов
Перспектива Debug Eclipse – панель инструментов

Пятая кнопка справа, показанная на рисунке 9, выполняет шаг с заходом в процедуры (steps into the instruction). Это означает, что если инструкция вызывает другие методы, даже в других классах, а эти методы вызывают другие, и т. д., панель редактора переходит к соответствующему методу. Воспользовавшись этой кнопкой, вы увидите, что уже для простого исполнения retrieveBuddyNote() «за кулисами» используется множество классов и методов. Некоторые из этих классов недоступны и могут не отображаться в редакторе. Это ограничение не мешает их исполнению при следующем нажатии на кнопку; вы просто не видите код.

Выполните следующие операции:

  1. Для простоты не будем использовать кнопку step-into. Вместо этого нажмите на находящуюся справа от нее кнопку step-over, как показано на рисунке 9, которая пропускает вызовы скрытых методов и просто исполняет строку за строкой метод retrieveBuddyNote(). Нажмите эту кнопку примерно 10 раз, чтобы увидеть исполнение каждой строки после точки прерывания, пока значение s не изменится на значение сохранённой записи; см. рисунок 10.

Рисунок 10. Перспектива Debug Eclipse – представление Variables
Перспектива Debug Eclipse – представление Variables

  1. Нажмите на кнопку Resume, вторую слева, как показано на рисунке 9, чтобы возобновить стандартное исполнение плагина. Диалоговое окно Lotus Sametime снова станет доступно и останется доступным, пока вы не выберете другой контакт. Если это сделать, вы вновь попадете на точку прерывания, и исполнение перейдет в перспективу Debug.

Это была краткая демонстрация встроенных в Eclipse инструментов отладки. Поэкспериментируйте с перспективой Debug и средствами управления исполнением. Можно также менять значения переменных в представлении Variables, выделяя переменную правой кнопкой мыши и выбирая Change Value.

По окончании нажмите на кнопку Resume и выйдите из Lotus Sametime. Чтобы вернуться в перспективу Plug-In Development, выберите из списка Window – Open Perspective – Other, а затем - Plug-In Development.

Давайте теперь познакомимся с плагином EventLogger, помогающим при отладке и поиске ошибок.



В начало


Плагин EventLogger

В состав Lotus Sametime V7.5.1 SDK входит пример плагина под названием com.ibm.collaboration.realtime.sample.eventlogger_7.5.1.jar. Это плагин EventLogger, который может прослушивать все события Lotus Sametime и выводить информацию о них на консоль Eclipse. Помните, что этот плагин не включен в вашу конфигурацию исполнения; на самом деле его пока и не должно быть в вашем рабочем пространстве. Именно поэтому вы и не видели выводимых на консоль сообщений о событиях во время исполнения BuddyNote.

Чтобы добавить этот плагин и ознакомиться с его функциями, выполните следующие операции:

  1. Выберите File - Import, чтобы открыть диалоговое окно Import.
  2. Разверните Plug-in Development и выберите Plug-ins and Fragments.
  3. В пункте Import From снимите выделение с опции целевой платформы (target platform) и нажмите на кнопку Browse.
  4. Перейдите в каталог st751sdk\client\connect\samples Lotus Sametime V7.5.1 SDK.
  5. В пункте Import As выберите "Projects with source folders" и нажмите Next.
  6. Выберите com.ibm.collaboration.realtime.sample.eventlogger(7.5.1) из списка слева, а затем нажмите на кнопку Add. Нажмите Finish. Теперь плагин EventLogger загружен в рабочее пространство и отображается в представлении Package Explorer.
  7. Выберите Run - Run из меню Eclipse, чтобы вызвать конфигурацию ST 751, как показано на рисунке 11.

Рисунок 11. Диалоговое окно Run
Диалоговое окно Run

  1. Нажмите на вкладку Plug-ins и убедитесь, что плагин EventLogger выбран в списке Workspace Plug-ins.
  2. Нажмите Apply, а затем нажмите Run для запуска Lotus Sametime с плагинами BuddyNote и EventLogger.
  3. После открытия Lotus Sametime попробуйте выбрать контакт; в консольном окне Eclipse вы увидите информацию, показанную на рисунке 12.

Рисунок 12. Консольное окно Eclipse – сообщение EventLogger
Консольное окно Eclipse – сообщение EventLogger

Пример плагина EventLogger предназначен для создания среды отображения сообщений об интересующих вас событиях. При первом запуске плагина EventLogger его функциональность ограничена. Единственное сообщение, которое можно легко вызывать при выборе контакта - BuddySelectedMessage. Для просмотра информации, относящейся к более актуальным событиям, нужно немного изменить пример кода, приведённый в листинге 1.

Для просмотра информации о событиях необходимо изменить класс EventLoggerMessageHandler, расположенный в папке src плагина EventLogger. Откройте этот класс, и вы увидите, что он расширяет класс DefaultMessageHandler точно так же, как и BuddyNoteMessageHandler, созданный во второй части этой серии статей. Как и в случае BuddyNoteMessageHandler, можно задавать обработку множества сообщений о событиях, переопределяя соответствующие методы. Вот некоторые примеры:

  • handleMessage(ImChatWindowAdditionMessage)
  • handleMessage(ImChatWindowCloseWarningMessage)
  • handleMessage(ImChatWindowFlashWindowMessage)
  • handleMessage(ImChatWindowForceFocusMessage)
  • handleMessage(ImChatWindowToolbarRedrawMessage)
  • handleMessage(ImConnectedMessage)
  • handleMessage(ImConnectionStatusChangeMessage)
  • handleMessage(ImDisconnectedMessage)
  • handleMessage(ImTextConnectionClosedMessage)
  • handleMessage(ImTextConnectionOpenMessage)
  • handleMessage(ImTextReceivedMessage)
  • handleMessage(ImTextSendMessage)

Информацию о типах сообщений можно найти в имеющихся в SDK документах JavaDoc для com.ibm.collaboration.realtime.messages и com.ibm.collaboration.realtime.messages.im.

Получив сообщение о событии, можно просмотреть соответствующую информацию, добавив код из листинга 1 к классу EventLoggerMessageHandler.


Листинг 1. EventLoggerMessageHandler – пример handleMessage

public void handleMessage(MessageType message) {
		logEvent(message);
}

MessageType - имя класса для сообщений о событиях.

Метод logEvent - это метод в классе EventLoggerMessageHandler, извлекающий и отображающий информацию для сообщений о событиях.

EventLogger - ценный инструмент для отладки и отслеживания ошибок, предоставляющий полезную информацию о событиях Lotus Sametime, например, об экземплярах чата. Можно получить информацию об источнике, участниках, идентификаторах диалога и соединения, а также о том, зашифрован чат или нет. Эта информация может быть полезной, если вы написали плагин для окна чата, который не работает как надо или вообще не отображается. Например, можно сделать так, чтобы ваш код отображал используемый идентификатор диалога и выполнял проверку на соответствие результатам EventLogger, чтобы удостовериться, что код выполняется в контексте данного окна чата, если запущено несколько его экземпляров.

EventLogger облегчает поиск и устранение ошибок в плагинах Sametime, когда вам известны сообщения о событиях, с которыми взаимодействует ваш плагин. EventLogger позволяет переопределять соответствующие методы и может быть использован в сочетании с операторами состояния в вашем коде для проверки желаемой функциональности.



В начало


Заключение

Из этой статьи вы узнали о тестировании и отладке плагинов Lotus Sametime с помощью Eclipse. В статье были рассмотрены основные моменты, связанные с настройкой конфигурации исполнения для исполнения программы в среде разработки в целях тестирования плагинов; была продемонстрирована мощная перспектива Debug, позволяющая отслеживать в Eclipse ошибки при исполнении; также был затронут плагин EventLogger, являющийся частью Lotus Sametime 7.5.1 SDK и предоставляющий данные о событиях Lotus Sametime. Все вместе эти инструменты делают Eclipse универсальной средой разработки плагинов Lotus Sametime. Остался нерассмотренным один вопрос - развёртывание и инсталляция пользовательского плагина в Lotus Sametime. В Eclipse предусмотрено и это; мы рассмотрим эту проблему в части 4 данной серии - "Развёртывание плагинов".



Ресурсы

Научиться

Получить продукты и технологии

Обсудить


Об авторах

Дэн Кен (Dan Kehn) – старший разработчик ПО IBM в Research Triangle Park, Северная Каролина. У него есть большой опыт работы с разнообразным ПО. Он имел дело со средствами разработки, например Rational Application Developer, а также работал над увеличением производительности операционных систем, анализом памяти и проектировал пользовательские интерфейсы. Он также является соавтором получившей награды книги Руководство Java-разработчика по Eclipse (The Java Developer's Guide to Eclipse). В настоящее время он работает техническим специалистом по внедрению (Technical Enablement Specialist) и помогает партнёрам по бизнесу интегрировать их продукты в IBM Lotus Sametime Connect.


Лоренс Райт - студент и сотрудник Государственного университета Северной Каролины, имеющий степень бакалавра наук в области электротехники. В настоящее время он готовится к получению степени бакалавра по информатике.




Выскажите мнение об этой странице


Пожалуйста, найдите минутку и заполните форму, чтобы повысить уровень сервиса.



ДаНетНе знаю
 


 


12345
 


В начало


IBM обладает всеми авторскими правами касательно информации, расположенной на developerWorks. Использование информации приведенной на этом ресурсе без явного письменного разрешения от IBM или первоначального автора запрещены. Если Вы желаете использовать информацию с developerWorks, пожалуйста воспользуйтесь регистрационной формой для того, чтобы связаться с нами запрос на использование материалов developerWorks Россия.

    IBM в России Конфиденциальность Контакты