Разработка приложений в Lotus Domino 7

Диагностирование и отладка приложения ITSO Electronics

Разбить на страницы
Показывать лекцию целиком

В Lotus Domino Designer 7 появились новые улучшенные средства диагностирования и отладки. Это профилирование кода, продвинутая отладка LotusScript и удаленная отладка Java. Благодаря этим нововведениям и дополнениям можно улучшить производительность приложений Lotus Domino. Взяв в качестве примера приложение ITSO Electronics, мы займемся исследованием некоторых компонентов из инструментария Lotus Domino Designer. Среди них:

  • профилирование кода: оптимизация производительности в приложении ITSO Electronics;
  • отладка LotusScript: применение улучшенных инструментов отладки LotusScript в приложении ITSO Electronics;
  • отладка Java: удаленная отладка приложения ITSO Electronics.
  • 5.1 Профилирование кода в приложении ITSO Electronics

    В Lotus Domino Designer 7 включен мощный оптимизатор кода, Profiler – инструмент, профилирующий код и позволяющий разработчику приложения измерять время, требуемое для выполнения методов в агентах, Web-сервисах и библиотеках скриптов в приложениях Lotus Notes и Domino. Измерение производительности методов в приложениях Lotus Domino позволяет разработчикам определить недостатки кода и сфокусироваться на оптимизации тех его фрагментов, выполнение которых отнимает больше всего времени, что отражается на производительности. В этом разделе мы рассмотрим, как с помощью профилирования кода достичь максимальной производительности и эффективности приложения ITSO Electronics.

    Profiler исследует и оценивает методы как в Java, так и в LotusScript, включая операции над объектами Lotus Domino, такими как база данных Lotus Domino. Можно включить поддержку профилирования в агенте или в Web-сервисе, для чего следует открыть закладку ) профилирование агента будет производиться, начиная со следующего запуска агента.

    (рис 5.1) Окно свойств Agent

    Агент может быть профилирован вне зависимости от того, запущен он как агент, работающий по расписанию, Web-агент или вручную через меню Action. Профилирующая информация хранится в профильном документе в базе данных, связанной с этим агентом. Для просмотра профилирующей информации выберите профилируемый агент, после чего щелкните Agent => View Profile Results (Агент $$\Rightarrow$$ Просмотреть результаты профилирования). В верхней части каждого профильного документа записано название агента и время профилирования. Общее затраченное время равно общему количеству времени, в течение которого работал агент. За ним следует полное измеренное время, которое обычно несколько меньше из-за того, что значения времени округляются в меньшую сторону. Например, значения меньше одной миллисекунды в профильном документе округляются до нуля. В профилирующей таблице содержится строка для каждого вызванного метода Domino Objects, а также 5 столбцов:

  • Class (Класс): название класса Domino Objects, используя стандартные имена, такие как Session, Database, Document.
  • Method (Метод): названия метода или свойства Domino Objects, записанные с помощью стандартных имен, таких как CurrentDatabase, AppendItemValue и Save.
  • Operation (Операция): для свойств, тип операции, либо Get, либо Set.
  • Calls (Вызовы): количество вызовов метода или свойства.
  • Time (Длительность): количество времени, затраченного на выполнение вызова в миллисекундах. Символ "<" означает, что времени для вычисления было недостаточно.
  • Информация в профилирующей таблице упорядочена по убыванию, то есть сначала показаны методы, на выполнение которых ушло больше всего времени. Из профилирующей таблицы этого примера, представленной на рис 5.2, видно, что метод UpdateFTIndex оказался той частью агента, которая отнимает максимальное количество времени.

    (рис 5.2) Результаты профилирования кода

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

    5.2 Отладка LotusScript в приложении ITSO Electronics

    В Lotus Domino Designer 7 усилены возможности отладки LotusScript за счет большей наглядности средств отладки. В дополнение к запуску отладки через системное меню разработчики приложений теперь могут начинать и прекращать отладку с помощью иконки. Сообщение, указывающее на начало или прекращение отладки LotusScript, располагается на панели состояния, а не в окне сообщений. В этом разделе мы продемонстрируем новые средства диагностики на примере приложения ITSO Electronics.

    Для отладки LotusScript-приложения ITSO Electronics с использованием новых возможностей и средств отладки выполните следующие действия:

  • Чтобы включить отладчик, щелкните по кнопке ).(рис 5.3) Запуск отладчика LotusScript
  • Чтобы отключить отладчик, снова щелкните по иконке ).(рис 5.4) Остановка отладчика LotusScript
  • 5.3 Отладка Java в приложении ITSO Electronics

    Пожалуй, самое интересное дополнение к инструментарию отладчика в Lotus Domino Designer 7 – это удаленная отладка Java. Удаленная отладка Java позволяет разработчику приложения в среде Lotus Domino отладить агенты Java, предварительные просмотры в Web и библиотеки скриптов, работающие под управлением клиента Lotus Notes в Java Virtual Machine (JVM) с отладчиком, поддерживающим Java Platform Debugger Architecture (JPDA), таким как Rational Application Developer, основанном на технологии Eclipse. И хотя вы не можете отладить код Java, работающий на сервере Lotus Domino, JPDA предлагает богатый набор функций, когда дело касается локальной отладки кода Java. В этом разделе мы продемонстрируем удаленную отладку Java в приложении ITSO Electronics, используя Rational Application Developer.

    5.3.1 Включение отладки Java в клиенте Lotus Notes

    Клиент Lotus Notes поддерживает отладку Java в представленных ниже контекстах. В каждом контексте есть свой собственный JVM. Код Java из библиотеки скриптов выполняется в контексте вызывающего кода. Отладку в каждом контексте может производить единовременно лишь один пользователь.

  • Foreground (Передний план): код Java, который интерактивно выполняется в клиенте Lotus Notes, например агент, запускаемый из меню Actions.
  • Background (Задний план): код Java, который выполняется в клиенте Lotus Notes под управлением загрузчика заданий, например локальный агент, работающий по расписанию.
  • Web preview (Предварительный просмотр Web): код Java, просматриваемый в браузере через Lotus Domino Designer, например апплет на форме.
  • Для включения отладки Java в приложении ITSO Electronics из клиента Lotus Notes выполните следующее:

  • Выберите .(рис 5.5) Окно свойств Java Debugging
  • Для включения отладки переднего плана (foreground debugging) выберите ). Очистите это поле, если хотите отключить данную функцию.(рис 5.6) Окно свойств Java Debugging с выбранным типом агента Client Agents/Applets
  • Для включения отладки предпросмотра в Web (Web preview debugging), выберите Http Preview (Просмотр в протоколе Http ) и определите номер порта, по которому могли бы подключаться компьютеры, на которых запущен клиент Lotus Notes.

    Очистите это поле, если не хотите использовать данную функцию. Выберите номер свободного порта. Чтобы узнать, какие порты используются на данном компьютере, работающем под управлением операционной системы Windows, выполните в командной строке команду

    > netstat –a
    (для вызова командной строки щелкните Пуск => Выполнить (Start => Run), после чего введите с клавиатуры cmd и нажмите на клавишу Enter ). По умолчанию отладка Java выключена.
  • Если вы выполняете изменения в параметрах переднего плана ( foreground ) и заднего плана ( background ), Lotus Notes необходимо перезапустить. Если вы выполните изменения в параметрах предварительного просмотра Web (Web preview), необходимо будет произвести перезапуск предварительного просмотра.

    5.3.2 Включение отладки Java в агенте, Web-сервисе или библиотеке скриптов

    Чтобы включить отладку Java, перейдите к закладке ).

    (рис 5.7) Compile Java code with debugging information

    При компилировании кода Java, который будет отлаживаться вне Lotus Domino Designer, компилируйте его с параметром –g. После модификации агента или Web-сервиса экспортируйте исходный код в доступный для отладчика файл.

    Для получения дополнительной информации о JPDA см.: http://java.sun.com/products/jpda

    5.3.3 Подключение отладчика к JVM

    При выполнении приведенных ниже инструкций необходимо использовать Rational Application Developer, основанный на технологии Eclipse. При использовании другого отладчика действия могут отличаться.

  • Запустите клиент Lotus Notes и откройте приложение ITSO Electronics, содержащее агент или Web-сервис, который необходимо отладить с помощью включенного отладчика Java.
  • Запустите отладчик.
  • Создайте проект Java и переключитесь на перспективу Java (Java perspective), так же как на рис 5.8. Выберите (рис 5.8) Просмотр перспективы Java
  • Чтобы вставить исходные файлы Java, сделайте щелчок правой кнопкой мыши по папке проекта, находящейся в левой панели, и выберите из контекстного меню ).(рис 5.9) Импортирование в перспективу Java
  • Выберите тип файлов, который необходимо импортировать, а затем с помощью функции ).(рис 5.10) Перспектива Java и окно Important
  • Щелкните по кнопке ).(рис 5.11) Импортированный исходный код Java
  • В Lotus Notes запустите агент или Web-сервис, который необходимо отладить.
  • В Rational Application Developer выберите ). Перейдите к закладке (рис 5.12) Установка параметров подключения отладчика
  • После присоединения отладчика вы увидите поток выполняемых задач JVM. Поток агента выглядит следующим образом:

    Thread(AgentThread: JavaAgent)(Running)

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

    Агент Java должен работать достаточно долго, чтобы можно было присоединить отладчик к JVM. Вы можете отложить выполнение в начале процедуры, например вставив цикл с предписаниями ожидания.

    Если Lotus Notes и отладчик находятся на разных компьютерах и вы получили сообщение "Failed to connect to remote VM" ("Не удалось подключиться к удаленной VM"), то это, вероятнее всего, свидетельствует о том, что выбранный порт используется другим процессом. Попробуйте определить другой номер порта и перезапустить Lotus Notes.

    Для получения более подробной информации об удаленной отладке Java обратитесь к Lotus Domino Designer 7 Help по адресу: http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf

    5.3.4 Рассуждения о безопасности

    Отладка Java по сети небезопасна. Вам следует перезапустить Lotus Notes или предварительный просмотр в Web без включенной отладки Java, когда вы не отлаживаете Java-код. Чтобы отключить отладку Java, перейдите к п. 5.3.1, ";Включение отладки Java в клиенте Lotus Notes".

    Страницы:

    В Lotus Domino Designer 7 появились новые улучшенные средства диагностирования и отладки. Это профилирование кода, продвинутая отладка LotusScript и удаленная отладка Java. Благодаря этим нововведениям и дополнениям можно улучшить производительность приложений Lotus Domino. Взяв в качестве примера приложение ITSO Electronics, мы займемся исследованием некоторых компонентов из инструментария Lotus Domino Designer. Среди них:

  • профилирование кода: оптимизация производительности в приложении ITSO Electronics;
  • отладка LotusScript: применение улучшенных инструментов отладки LotusScript в приложении ITSO Electronics;
  • отладка Java: удаленная отладка приложения ITSO Electronics.
  • 5.1 Профилирование кода в приложении ITSO Electronics

    В Lotus Domino Designer 7 включен мощный оптимизатор кода, Profiler – инструмент, профилирующий код и позволяющий разработчику приложения измерять время, требуемое для выполнения методов в агентах, Web-сервисах и библиотеках скриптов в приложениях Lotus Notes и Domino. Измерение производительности методов в приложениях Lotus Domino позволяет разработчикам определить недостатки кода и сфокусироваться на оптимизации тех его фрагментов, выполнение которых отнимает больше всего времени, что отражается на производительности. В этом разделе мы рассмотрим, как с помощью профилирования кода достичь максимальной производительности и эффективности приложения ITSO Electronics.

    Profiler исследует и оценивает методы как в Java, так и в LotusScript, включая операции над объектами Lotus Domino, такими как база данных Lotus Domino. Можно включить поддержку профилирования в агенте или в Web-сервисе, для чего следует открыть закладку ) профилирование агента будет производиться, начиная со следующего запуска агента.

    (рис 5.1) Окно свойств Agent

    Агент может быть профилирован вне зависимости от того, запущен он как агент, работающий по расписанию, Web-агент или вручную через меню Action. Профилирующая информация хранится в профильном документе в базе данных, связанной с этим агентом. Для просмотра профилирующей информации выберите профилируемый агент, после чего щелкните Agent => View Profile Results (Агент $$\Rightarrow$$ Просмотреть результаты профилирования). В верхней части каждого профильного документа записано название агента и время профилирования. Общее затраченное время равно общему количеству времени, в течение которого работал агент. За ним следует полное измеренное время, которое обычно несколько меньше из-за того, что значения времени округляются в меньшую сторону. Например, значения меньше одной миллисекунды в профильном документе округляются до нуля. В профилирующей таблице содержится строка для каждого вызванного метода Domino Objects, а также 5 столбцов:

  • Class (Класс): название класса Domino Objects, используя стандартные имена, такие как Session, Database, Document.
  • Method (Метод): названия метода или свойства Domino Objects, записанные с помощью стандартных имен, таких как CurrentDatabase, AppendItemValue и Save.
  • Operation (Операция): для свойств, тип операции, либо Get, либо Set.
  • Calls (Вызовы): количество вызовов метода или свойства.
  • Time (Длительность): количество времени, затраченного на выполнение вызова в миллисекундах. Символ "<" означает, что времени для вычисления было недостаточно.
  • Информация в профилирующей таблице упорядочена по убыванию, то есть сначала показаны методы, на выполнение которых ушло больше всего времени. Из профилирующей таблицы этого примера, представленной на рис 5.2, видно, что метод UpdateFTIndex оказался той частью агента, которая отнимает максимальное количество времени.

    (рис 5.2) Результаты профилирования кода

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

    5.2 Отладка LotusScript в приложении ITSO Electronics

    В Lotus Domino Designer 7 усилены возможности отладки LotusScript за счет большей наглядности средств отладки. В дополнение к запуску отладки через системное меню разработчики приложений теперь могут начинать и прекращать отладку с помощью иконки. Сообщение, указывающее на начало или прекращение отладки LotusScript, располагается на панели состояния, а не в окне сообщений. В этом разделе мы продемонстрируем новые средства диагностики на примере приложения ITSO Electronics.

    Для отладки LotusScript-приложения ITSO Electronics с использованием новых возможностей и средств отладки выполните следующие действия:

  • Чтобы включить отладчик, щелкните по кнопке ).(рис 5.3) Запуск отладчика LotusScript
  • Чтобы отключить отладчик, снова щелкните по иконке ).(рис 5.4) Остановка отладчика LotusScript
  • 5.3 Отладка Java в приложении ITSO Electronics

    Пожалуй, самое интересное дополнение к инструментарию отладчика в Lotus Domino Designer 7 – это удаленная отладка Java. Удаленная отладка Java позволяет разработчику приложения в среде Lotus Domino отладить агенты Java, предварительные просмотры в Web и библиотеки скриптов, работающие под управлением клиента Lotus Notes в Java Virtual Machine (JVM) с отладчиком, поддерживающим Java Platform Debugger Architecture (JPDA), таким как Rational Application Developer, основанном на технологии Eclipse. И хотя вы не можете отладить код Java, работающий на сервере Lotus Domino, JPDA предлагает богатый набор функций, когда дело касается локальной отладки кода Java. В этом разделе мы продемонстрируем удаленную отладку Java в приложении ITSO Electronics, используя Rational Application Developer.

    5.3.1 Включение отладки Java в клиенте Lotus Notes

    Клиент Lotus Notes поддерживает отладку Java в представленных ниже контекстах. В каждом контексте есть свой собственный JVM. Код Java из библиотеки скриптов выполняется в контексте вызывающего кода. Отладку в каждом контексте может производить единовременно лишь один пользователь.

  • Foreground (Передний план): код Java, который интерактивно выполняется в клиенте Lotus Notes, например агент, запускаемый из меню Actions.
  • Background (Задний план): код Java, который выполняется в клиенте Lotus Notes под управлением загрузчика заданий, например локальный агент, работающий по расписанию.
  • Web preview (Предварительный просмотр Web): код Java, просматриваемый в браузере через Lotus Domino Designer, например апплет на форме.
  • Для включения отладки Java в приложении ITSO Electronics из клиента Lotus Notes выполните следующее:

  • Выберите .(рис 5.5) Окно свойств Java Debugging
  • Для включения отладки переднего плана (foreground debugging) выберите ). Очистите это поле, если хотите отключить данную функцию.(рис 5.6) Окно свойств Java Debugging с выбранным типом агента Client Agents/Applets
  • Для включения отладки предпросмотра в Web (Web preview debugging), выберите Http Preview (Просмотр в протоколе Http ) и определите номер порта, по которому могли бы подключаться компьютеры, на которых запущен клиент Lotus Notes.

    Очистите это поле, если не хотите использовать данную функцию. Выберите номер свободного порта. Чтобы узнать, какие порты используются на данном компьютере, работающем под управлением операционной системы Windows, выполните в командной строке команду

    > netstat –a
    (для вызова командной строки щелкните Пуск => Выполнить (Start => Run), после чего введите с клавиатуры cmd и нажмите на клавишу Enter ). По умолчанию отладка Java выключена.
  • Если вы выполняете изменения в параметрах переднего плана ( foreground ) и заднего плана ( background ), Lotus Notes необходимо перезапустить. Если вы выполните изменения в параметрах предварительного просмотра Web (Web preview), необходимо будет произвести перезапуск предварительного просмотра.

    5.3.2 Включение отладки Java в агенте, Web-сервисе или библиотеке скриптов

    Чтобы включить отладку Java, перейдите к закладке ).

    (рис 5.7) Compile Java code with debugging information

    При компилировании кода Java, который будет отлаживаться вне Lotus Domino Designer, компилируйте его с параметром –g. После модификации агента или Web-сервиса экспортируйте исходный код в доступный для отладчика файл.

    Для получения дополнительной информации о JPDA см.: http://java.sun.com/products/jpda

    5.3.3 Подключение отладчика к JVM

    При выполнении приведенных ниже инструкций необходимо использовать Rational Application Developer, основанный на технологии Eclipse. При использовании другого отладчика действия могут отличаться.

  • Запустите клиент Lotus Notes и откройте приложение ITSO Electronics, содержащее агент или Web-сервис, который необходимо отладить с помощью включенного отладчика Java.
  • Запустите отладчик.
  • Создайте проект Java и переключитесь на перспективу Java (Java perspective), так же как на рис 5.8. Выберите (рис 5.8) Просмотр перспективы Java
  • Чтобы вставить исходные файлы Java, сделайте щелчок правой кнопкой мыши по папке проекта, находящейся в левой панели, и выберите из контекстного меню ).(рис 5.9) Импортирование в перспективу Java
  • Выберите тип файлов, который необходимо импортировать, а затем с помощью функции ).(рис 5.10) Перспектива Java и окно Important
  • Щелкните по кнопке ).(рис 5.11) Импортированный исходный код Java
  • В Lotus Notes запустите агент или Web-сервис, который необходимо отладить.
  • В Rational Application Developer выберите ). Перейдите к закладке (рис 5.12) Установка параметров подключения отладчика
  • После присоединения отладчика вы увидите поток выполняемых задач JVM. Поток агента выглядит следующим образом:

    Thread(AgentThread: JavaAgent)(Running)

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

    Агент Java должен работать достаточно долго, чтобы можно было присоединить отладчик к JVM. Вы можете отложить выполнение в начале процедуры, например вставив цикл с предписаниями ожидания.

    Если Lotus Notes и отладчик находятся на разных компьютерах и вы получили сообщение "Failed to connect to remote VM" ("Не удалось подключиться к удаленной VM"), то это, вероятнее всего, свидетельствует о том, что выбранный порт используется другим процессом. Попробуйте определить другой номер порта и перезапустить Lotus Notes.

    Для получения более подробной информации об удаленной отладке Java обратитесь к Lotus Domino Designer 7 Help по адресу: http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf

    5.3.4 Рассуждения о безопасности

    Отладка Java по сети небезопасна. Вам следует перезапустить Lotus Notes или предварительный просмотр в Web без включенной отладки Java, когда вы не отлаживаете Java-код. Чтобы отключить отладку Java, перейдите к п. 5.3.1, ";Включение отладки Java в клиенте Lotus Notes".

    Вернуться к учебному плану