Використання функції JSFTrace продукту IBM Rational Application Developer для виявлення помилок, HTML, XML, DHTML, Інтернет-технології, статті

Опис:Функція JSFTrace допомагає розробнику краще зрозуміти, як працює технологія JavaServer ™ Faces, а також швидше і ефективніше налагоджувати свої програми на базі технології JSF. Стаття описує функцію JSFTrace, введену у версії 7.5.4 продукту IBM ® Rational ® Application Developer, і розповідає, як сконфігурувати і використовувати цю функцію для виявлення помилок.

У додатку на базі технології JavaServer ™ Faces (JSF) кожен запит від браузера проходить складну послідовність кроків до моменту генерації ответа. Ця послідовність кроків (або фаз, як вони називаються в JSF) утворює т.зв. життєвий цикл JSF. Існує цілий ряд умов, які можуть впливати на те, які саме фази зазначеного життєвого циклу будуть виконуватися і, відповідно, що буде надсилатися назад в браузер у відповідь на його запит.


JSF-розробники часто стикаються з проблемами при створенні і налагодженні програм. Ці проблеми можуть бути обумовлені неадекватним розумінням життєвого циклу JSF або нездатністю побачити все те, що відбувається на сервері протягом життєвого циклу JSF.


Типовий приклад такої проблеми: розробник програми передбачає, що коли користувач клацне кнопкою на JSF-сторінці, цей додаток переключиться (перейде) на іншу сторінку, однак замість цього користувачеві повторно демонструється колишня сторінка. Причина відсутності переходу (тобто надання користувачу некоректної інформації на сторінці) полягає в тому, що JSF-технологія виявила помилки валідації або перетворення і через цих помилок пропустила фазу, що відповідає за перехід. Якщо розробник не взяв до уваги цю можливість і не додав до сторінки спеціальний тег для показу помилок (такий як <h:messages>), То користувач і розробник зіткнуться з труднощами при спробі з'ясувати, чому була повторно показана та ж сама сторінка.


У продукті IBM ® Rational ® Application Developer версії 7.5.4 з'явилася функція JSF Trace, яка дозволяє розробнику "непомітно" зазирнути у виконуючому JSF-додаток. Вона збирає інформацію про життєвий циклі JSF і в режимі реального часу представляє цю інформацію в доступній для розуміння формі.


Трасування інформації


Після того як ви додасте до свого додатком підтримку функції JSF Trace, в процесі обробки запиту вашого браузера буде здійснюватися збір та подання наступної інформація про життєвому циклі JSF (див. приклад на рис. 1):



Крім того, зібрана інформація трасування піддається певному "декорування" за допомогою кольорів, піктограм і перетворення шрифту. Це декорування вказує на найважливіші події в ході обробки запиту, такі як створення або зміна охоплених об'єктів (наприклад, об'єкти типу JSF managed bean), на атрибути компонентів або на компоненти, які взагалі не були відображені. Більш детальна інформація приведена в розділі "Умовні позначення".


Малюнок 1. Подання трасування JSF Trace



Необхідно розуміти, що трасування істотно відрізняється від реальної налагодження – вона представляє "ретроспективні" дані. Іншими словами, всі об'єкти, показані в поданні, існували в деякий минулий момент часу, в якому здійснювався збір інформації про ці об'єкти, однак вони не існують до того часу, коли вони демонструються в дереві. Таким чином, за допомогою використання подання JSF Trace неможливо інспектувати об'єкти так, як розробники звикли при налагодженні програм.


Функція JSF Trace надає деяку підтримку для реальної налагодження (більш детальна інформація наведена в розділі "Налагодження"), проте її не слід розглядати як інструмент налагодження і застосовувати в якості такого інструменту.


Технічна архітектура


Функція JSFTrace складається з двох частин:



Файл jsf-trace.jar встановлює в ваш додаток кілька JSF-артефактів (PhaseListener і NavigationHandler), які збирають інформацію в процесі виконання цієї програми на сервері. Потім зібрана інформація передається з мережевого з'єднання в уявлення JSF Trace інструменту Rational Application Developer, який інтерпретує цю інформацію і представляє її в зручній для розуміння формі. JAR-файл і представлення взаємодіють один з одним через настроюється мережевий сокет (host:port).


На додаток до подання JSF Trace є нова консоль JSF Trace, яка показує "сиру" інформацію, отриману з мережевого сокета від виконуючого програми (див. рис. 2).


Рисунок 2. Консоль JSF Trace


Установка


Для того щоб активувати підтримку трасування в JSF-додатку, виконайте наступні кроки:



  1. Відкрийте подання JSF Trace (за замовчуванням, функція JSF Trace сконфигурирована на автоматичне відкриття при кожному запуску вашої JSF-сторінки на сервері). Подання JSF Trace покаже наступне інформаційне повідомлення (оскільки воно поки що не виявляє даних для відображення) (див. рис. 3).

  2. Натисніть на посилання Add Tracing support (Додати підтримку трасування).

  3. Необов'язково: Якщо у вашому робочому просторі є більше одного Web-проекту, вам буде запропоновано вибрати, до якого з проектів ви хочете додати трасування.

  4. 4. З'явиться інформаційне повідомлення, що містить відомості про потенційних недоліках, пов'язаних з трасуванням. Вам запропонують підтвердити, що ви дійсно хочете додати трасування до свого проекту. Після того як ви підтвердите свої наміри, файл jsf-trace.jar буде додано до папки проекту WEB-INF/lib.


Малюнок 3. Інформаційне повідомлення в поданні JSF Trace


Після відкриття подання JSF Trace і додати файл jsf-trace.jar до проекту опублікуйте цей проект на вибраному вами сервері, а потім запросите сторінку в браузері. Подання JSF Trace виявить надходження інформації від виконуючого програми і замінить показане вище інформаційне повідомлення реальними збираються даними (див. рис. 1).


Видалення раніше встановленої функції JSF Trace


Для того щоб деактивувати функцію JSF Trace в додатку, видаліть файл jsf-trace.jar з папки WEB-INF/lib проекту або надайте параметру контексту web.xml з ім'ям com.ibm.faces.trace.ENABLEDзначення "false"(Див. наступний розділ" Конфігурування програми "). Будь-який з цих варіантів призведе до припинення збору всякої трасування інформації.


Щоб деактивувати функцію JSF Trace в інструменті Rational Application Developer, закрийте уявлення JSF Trace. Після закриття цього подання інструмент Rational Application Developer не буде стежити за надходженням інформації від виконуються програм.


Конфігурування програми


Як показано в Таблиці 1, в доданому до проекту файлі jsf-trace.jar є декілька конфігураційних налаштувань, які можуть бути представлені у відповідному додатком файлі web.xml як параметри контексту:


Таблиця 1. Параметри 


























































Назва параметра

Значення за замовчуванням
(Якщо параметр контексту відсутній)

Опис

com.ibm.faces.trace.ENABLED

true ("істина")

Активує або деактивує збір та подання даних трасування.
Збір даних в процесі трасування породжує значні "непродуктивні витрати" при роботі програми, тому трасування категорично не рекомендується застосовувати в "виробничих" додатках.
Для деактивації трасування слід присвоїти цьому параметру значення false ("брехня").
Інший спосіб деактивації трасування полягає у видаленні файлу jsf-trace.jar з програми (див. розділ "Видалення раніше встановленої функції JSF Trace").

com.ibm.faces.trace.HOST

127.0.0.1

IP-адреса або ім'я машини, на якій виповнюється продукт Rational Application Developer. Якщо вказується ім'я хоста, воно повинно бути "вирішуваним" в DNS.
Технічно продукт Rational Application Developer і JSF-додаток можуть виконуватися на різних машинах зі збереженням можливості обміну інформацією один з одним. Однак брандмауери можуть заблокувати таку можливість.

com.ibm.faces.trace.PORT

4444

IP-порт, через який встановлюються комунікації з Rational Application Developer. Ця установка повинна відповідати аналогічній налаштуванні подання JSF Trace в інструменті Rational Application Developer (див. розділ "Параметри Preferences").

com.ibm.faces.trace.MAX_NESTING

3

Визначає глибину дослідження властивостей охоплених об'єктів.
Чим більше це число, тим більше часу потрібно на те, щоб зібрати інформацію, передати її на інструмент Rational Application Developer і відобразити в поданні.
Проявляйте обачність при збільшенні цього числа.

com.ibm.faces.trace.IGNORE

Значення за замовчуванням не передбачено.

Рекомендоване значення:
com.ibm.,com.sun.,
javax.,org.,/

Примітка. Символ "/" призначений для більш ранніх JSF-реалізацій, в яких стану подання до сесії містилися в ключах / jspname.

Розділений комами список рядків. Якщо ім'я охопленого об'єкта починається з кожної з рядків у цьому списку, такий об'єкт буде проігноровано. Інформація про цей об'єкт не буде збиратися і не передаватиметься до подання JSF Trace.
При виконанні JSF-додатки існує досить багато об'єктів у різних областях, які належать не реальному додатком, а швидше JSF-реалізації або серверному контейнеру. Ці об'єкти рідко змінюються і рідко становлять інтерес для розробників додатків. Тому ви цілком можете виключити їх з трасування, щоб поліпшити продуктивність збору даних і зменшити обсяг мережевого трафіку.

com.ibm.faces.trace.IGNORE_APPLICATION_SCOPE

false ("брехня")

У разі присвоєння цьому параметру значення true ("істина") усі охоплені додатком об'єкти виключаються з трасування.
Може використовуватися для підвищення продуктивності (чим менше інформації необхідно збирати, тим швидше буде працювати трасування).

com.ibm.faces.trace.IGNORE_SESSION_SCOPE

false

У разі присвоєння цьому параметру значення true ("істина") усі охоплені сесією об'єкти виключаються з трасування.
Може використовуватися для підвищення продуктивності (чим менше інформації необхідно збирати, тим швидше буде працювати трасування).

com.ibm.faces.trace.IGNORE_REQUEST_SCOPE

false

У разі присвоєння цьому параметру значення true ("істина") усі охоплені запитом об'єкти виключаються з трасування
Може використовуватися для підвищення продуктивності (чим менше інформації необхідно збирати, тим швидше буде працювати трасування).

com.ibm.faces.trace.IGNORE_VIEW_ATTRIBUTES

false

У разі присвоєння цьому параметру значення true ("істина") усі атрибути подання виключаються з трасування.
Може використовуватися для підвищення продуктивності (чим менше інформації необхідно збирати, тим швидше буде працювати трасування).

com.ibm.faces.trace.IGNORE_VIEW_TREE

false

У разі присвоєння цьому параметру значення true ("істина") все дерево подання (всі компоненти) виключається з трасування.
Може використовуватися для підвищення продуктивності (чим менше інформації необхідно збирати, тим швидше буде працювати трасування).

com.ibm.faces.trace.IGNORE_COMPONENT_VALUES

false

У разі присвоєння цьому параметру значення true ("істина") трасування не буде "питати" у компонентів їх значення.
Опитування значень компонентів може породжувати непередбачувані побічні ефекти, оскільки зв'язування значень буде оцінюватися в неналежній точці нормального життєвого циклу JSF. У свою чергу, це може приводити до створення непередбаченого об'єкта типу managed bean.

com.ibm.faces.trace.TRACE_UIDATA

false

У разі присвоєння цьому параметру значення true ("істина") трасування компонентів UI Data в дереві буде здійснюватись за допомогою ітеративного проходження по моделі даних, при цьому буде здійснюватися збір інформації про компоненти в кожному рядку (аж до максимального числа рядків).
У разі присвоєння цьому параметру значення false ("брехня") трасування компонентів UI Data буде включати тільки один примірник кожного компонента в UI Data.

com.ibm.faces.trace.MAX_UIDATA_ROWS

10

У разі присвоєння параметру com.ibm.faces.trace.TRACE_UIDATA значення true ("істина") він обмежить кількість рядків UI Data, включених до трасування. Чим більше це число, тим більше часу потрібно на те, щоб зібрати інформацію, передати її на інструмент Rational Application Developer і відобразити в поданні.
Проявляйте обачність при збільшенні цього числа.


 


Конфігурування подання JSF Trace


Параметри Preferences


Подання JSF Trace має декілька конфігураційних налаштувань, розташованих в зоні Preferences (Переваги) інструменту Rational Application Developer (див. рис. 4). Для того, щоб дістатися до цих налаштувань, виберіть у меню пункт подання Customize (Налаштувати) або використовуйте звичайний шлях до опції Preferences: Window > Preferences > JSF Tools > Trace.


Малюнок 4. Екран Preferen ces


Установки зони Preferences і необхідні відомості про ці налаштуваннях:



Фільтрація


Інформація, демонстрована в поданні JSF Trace, може бути прихована за допомогою відповідного налаштування фільтра. У меню подання виберіть пункт Filters (Фільтри), щоб побачити список доступних фільтрів і включити / відключити окремі фільтри (див. рис. 5). Наприклад, фільтри Hide application scope (Закрити область додатки), Hide session scope (Закрити область сесії) і Hide request scope (Закрити область запиту) приховують від вистави всі об'єкти у відповідній області, а фільтр Hide system objects приховує об'єкти, які в зоні Preferences були налаштовані як "системні" (див. розділ "Параметри Preferences").


Зазначені фільтри можна ефективно використовувати для зменшення інформаційного навантаження на представлення за допомогою приховування об'єктів, що не представляють інтересу. Наприклад, об'єкти, охоплені програмою, змінюються рідко, що дозволяє вам повністю приховати їх від подання.


Можлива одночасна активація кількох фільтрів.


Малюнок 5. Фільтри


Умовні позначення


Трасувань інформація, яка відображається у поданні, "декорується" з використанням квітів, піктограм і виділення шрифту. Доступні наступні елементи декорування:



Налагодження


Всі описані вище функції трасування не вимагали, щоб сервер знаходився в режимі налагодження. Використання опції JSF Trace дозволяє побачити масу типовою "налагоджувальної" інформації (значення різних об'єктів, шляху виконання), уникнувши при цьому труднощів реальної налагодження.


Тим не менш у вас як і раніше може виникати необхідність налагодження програми. У таких випадках, коли сервер працює в режимі налагодження, функція JSF Trace надає дві додаткові можливості, орієнтовані саме на налагодження:



Контрольні точки


При використанні подання JSF Trace до або після кожної з фаз життєвого циклу JSF можна встановлювати контрольні точки.


Щоб встановити контрольну точку, натисніть правою кнопкою миші на вузол дерева, що передує потрібної фазі (або слідує за нею), або скористайтесь пунктом Breakpoints (Контрольні точки) в меню подання (Див. рис. 6). Після того, як контрольна крапка буде встановлена, на піктограмі відповідної фази з'являється невелика додаткова піктограма, яка вказує на присутність контрольної точки. Видалення контрольних точок проводиться таким же способом.


Коли додаток досягає контрольної точки, його виконання припиняється, після чого розробнику стають доступні всі звичайні засоби налагодження. Наприклад, до подання Variables (Змінні) буде автоматично включено об'єкт FacesContext в його поточному стані. FacesContext – Це кореневий вузол всієї інформації про стан JSF; тому ви зможете переглянути всі аспекти припиненого програми, розкриваючи різні вузли об'єкта FacesContext.


Малюнок 6. Меню Breakpoints (Контрольні точки)


Вирази спостереження (watch)


Одна з найпоширеніших завдань, що виконуються з призупиненим додатком, полягає в перевірці стану одного з об'єктів типу JSF-managed bean. Хоча всі об'єкти типу managed bean (та інші охоплені об'єкти) можна відшукати за допомогою перегляду об'єкту FacesContext, Доступного в поданні Variables, цей спосіб відшукання потрібних об'єктів може виявитися важким і тривалим. Для зручності вирішення цього завдання уявлення JSF Trace дозволяє створювати т.зв. вираження спостереження (watch) для охоплених об'єктів і атрибутів подання. Після того як такий вислів буде створено, у поданні Expressions (Вирази) автоматично з'являється відповідний об'єкт.


Примітка.
Вирази типу Watch Expression оцінюються тільки в тому випадку, якщо виконання коду програми призупинено (в класах, що знаходяться в папці JavaSource проекту, наприклад, у ваших власних компонентах managed bean). Вирази не оцінюються, коли досягається контрольна крапка в базовому коді JSF або у файлі jsf-trace.jar.


Для створення виразу спостереження для будь-якого об'єкта натисніть правою кнопкою миші в поданні і з появи спадаючого меню виберіть Add Watch Expression (Додати вираз Watch Expression) або скористайтесь пунктом Watches в меню подання (див. рис. 7).


Малюнок 7. Меню Watches (Вирази спостереження)


Змінювати і видаляти існуючі вираження спостереження можна за допомогою представлення Expressions.


На рис. 8 показано уявлення Expressions (Вирази) з виразом спостереження, доданим для охопленого запитом bean-об'єкта з ім'ям "person", а також подання Variables (Змінні), в якому демонструється поточний стан об'єкта FacesContext.


Малюнок 8. Подання Expressions (Вирази) і подання Variables (Змінні)
 


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*