Интеграция Crystal Reports в Web-приложения при помощи Rational Application Developer, Часть 2: Встраивание отчетов Crystal Report

Сценарий примерной разработки

  1. Установите файл CRDB_JavaServer.ini
  2. Создайте новый Web-проект при помощи JavaServer Page (JSP), которая включает Crystal Reports
  3. Встройте Crystal Reports в JSP и запустите его на сервере
  4. Используйте JDBC-соединение в период проектирования и переключитесь на JNDI-соединение во время выполнения программы

Приведенный пример основан на Rational Application Developer V 6.0.1.1, с установленными по умолчанию функциями Crystal Reports V XI. У многих читателей есть доступ к среде тестирования IBM WebSphere V 6, среди которых есть пользователи пробной версии Rational Application Developer.
 
Это означает, что пример Web-приложения из этой статьи настроен для выполнения в среде WebSphere V 6.0.2.5, а не в среде тестирования V 5.1. Также может быть использована IBM DB2 Universal Database V 8.1, которая содержит модель базы данных, которой надо пользоваться, чтобы генерировать отчёты. Для получения информации по отдельным приложениям Crystal Reports, обратитесь к содержанию руководства по Rational Application Developer (Помощь при работе с Rational Application Developer). Информацию о том, где можно загрузить пробные версии этих продуктов см. в пробном ПО IBM в разделе Resources. Также можете воспользоваться ссылкой на часто задаваемые вопросы и ответы на них на сайте Crystal Reports на странице поддержки Rational Application Developer (см. Resources) по вопросам лицензирования, модернизации и др., касающихся инструмента Crystal Reports в Rational Application Developer.

Шаг 1: Установка файла CRDB_JavaServer.ini

Этот шаг — такой же, как и в первой части этой серии. Если вы уже прочли первую часть и установили указанную среду, далее вы можете приступать ко второму шагу. Чтобы установить этот файл, следуйте пошаговой инструкции:

  1. В рабочей области Rational Application Developer перейдите к представлению Data ( Window > Open Perspective > Data).
  2. Правой кнопкой мыши нажмите на представление Database Explorer, потом нажмите на New Connection (новое соединение).
  3. Нажмите на Choose a Database Manager and JDBC Driver (Выбрать Database Manager и драйвер JDBC) (см. Рисунок 1).
Рисунок 1. Диалоговое окно New Database Connection

 

4. Нажмите на Next (Далее).
5. В диалоговом окне New Database Connection введите значения, показанные на Рисунке 2, затем нажмите на Test Connection (проверить соединение).

Рисунок 2. Диалоговое окно Задать параметры соединения

 Рисунок 2. Диалоговое окно Задать параметры соединения

6. Если тестовое соединение работает, нажмите на OK (Рисунок 3).

Рисунок 3. Работающее тестовое соединение

 Рисунок 3. Работающее тестовое соединение

Если у вас возникнут проблемы с JDBC-соединением, то вы сможете найти решение следуя инструкции:

  • Просмотрите документацию вашей базы данных.
  • Найдите в разделе Resources ссылку на DB2 Infocenter (информационный центр).
  • Проверьте, сможете ли вы подключиться к базе данных, не используя перспективу Rational Application Developer Data при запуске Java-программы, которая проверяет соединяемость JDBC из командной строки. (См. JDBC Test в разделе Recources), который поможет в поиске и устранении неисправностей соединяемости JDBC в основных типах баз данных многих производителей.)
  • Выясните, поддерживает ли Business Objects вашу базовую платформу (то есть базу данных, операционную систему и т. д.) проверьте разделы Business Objects; Поддерживаемые платформы (Supported Platforms) в разделе Recources.

Примечание: ссылка на странице, посвященной поддержке Rational Application Developer в разделе Recources указывает, что платформы IBM z/OS и iSeries не поддерживаются Business Objects для Crystal Reports. Также вам будут предложены другие методы поддержки, с помощью которых вы сможете обойти ограничения при работе с этими платформами.
7. Не закрывая Мастер создания базы New Database Connection, откройте файл CRDB_JavaServer.ini который находится в C:\Program Files\Common Files\Crystal Decisions\2.5\bin\CRDB_JavaServer.ini.
8. Измените следующие значения файла CRDB_JavaServer.ini, как показано на Рисунке 4:
PATH: Укажите на директорию, которая содержит файл java.exe (предпочтительно из установки jdk1.4.2, например: c:\program files\IBM\Rational\SDP\6.0\runtimes\base_v6\java\bin).
CLASSPATH: Скопируйте местоположение класса (Class Location) из Мастера New Database Connection, и добавьте его к уже существующему CLASSPATH. Если есть свободное место в пути к месту расположения класса (как, например, Program Files), содержат путь Class Location для каждого файла.jar в кавычках (пример: “c:\program files\IBM\SQLLIB\java\db2jcc.jar”).
IORFileLocation: Предоставьте отдельный путь для каждой временной папки в вашей локальной файловой системе (* на это необходимо разрешение READ/WRITE).
JDBCURL: Скопируйте значение URL-соединения из мастера New Database Connection, а затем замените существующее значение на это новое.
JDBCUserName: Введите db2admin или имя пользователя вашей базы данных. Можете позже изменить его в мастере JDBC (JNDI) Connection Information (Рисунок 12).
JDBCDriverName: Скопируйте класс JDBC-драйвера из мастера New Database Connection, а затем замените существующее значение на это новое.

Рисунок 4. Файл CRDBJavaServer.ini с JDBC-соединением 
Рисунок 4. Файл CRDBJavaServer.ini с JDBC-соединением

Примечание: из всех редакторов текстовых файлов лучше использовать Microsoft Windows Notepad, так как другие редакторы вставляют некоторые невидимые знаки форматирования, которые могут привести к ошибке системы, как показано на Рисунке 11, даже когда соответствующие параметры содержат правильные значения.
9. Сохраните файл CRDB_JavaSever.ini и нажмите на Cancel (отмена) в мастере Database Connection.

Шаг 2: Создание нового Web-проекта с JSP, который содержит Crystal Reports

Этот шаг похож на шаг 2 в первой части, кроме того, что пример Web-проекта здесь использует тестовую среду WebShpere V 6.0, а не V 5.1. Позже, в шаге 4, вы снова обратитесь к под-шагу 5 этого шага (Шаг 2),чтобы запустить ваш отчет, используя JNDI во время выполнения программы. Сейчат только установите его, чтобы пользоваться JDBC как в период проектирования, так и во время выполнения программы.

Чтобы создать новый Web-проект, следуйте данной инструкции:
1. В рабочей области Rational Application Developer создайте новый динамичный Web-проект путем выбора File > New > Dynamic Web Project.
2. Выберите установки, показанные на Рисунке 5.

Примечание: для этого примера убедитесь, что вы выбрали 2.4 в качестве версии сервлета и WebSphere Application Server V 6.0 в качестве целевого сервера, как показано на Рисунке 5.

Рисунок 5. Диалоговое окно проекта New Dynamic Web Project

 Рисунок 5. Диалоговое окно проекта New Dynamic Web Project

3. Нажмите на Next, а затем на Crystal Reports features в диалоговом окне Features, как показано на Рисунке 6.

Рисунок 6. Диалоговое окно свойств Web Project Features

 Рисунок 6. Диалоговое окно свойств Web Project Features

4. Нажмите на Finish.
5. В вашем Web-проекте нажмите правой кнопкой мыши на папку WebContent, затем выберите New > Crystal Report.
6. Нажмите на установки, показанные на Рисунке 7 в мастере New Crystal Report.

Рисунок 7. Мастер отчетов New Crystal Report

 Рисунок 7. Мастер отчетов New Crystal Report

7. Нажмите на Finish.
8. В диалоговом окне Crystal Reports Gallery выберите опцию Report Wizard (Рисунок .

Рисунок 8. Диалоговое окно Crystal Reports Gallery

 Рисунок 8. Диалоговое окно Crystal Reports Gallery

9. нажмите на OK.
10. В диалоговом окне Standard Report Creation Wizard (мастер создания стандартных отчетов), нажмите на Create New Connection > JDBC (JNDI) (Рисунок 9).

Рисунок 9. Мастер создания стандартных отчетов Standard Report Creation Wizard

 Рисунок 9. Мастер создания стандартных отчетов Standard Report Creation Wizard

11. Если установка файла CRDB_JavaServer.ini проведена правильно, появиться диалоговое окно установок JDBC (JNDI)-соединений (Рисунок 10). URL-соединение и Database Classname должны быть уже заполнены правильными значениями из файла CRDB_JavaServer.ini.
12. Нажмите на Next.

Рисунок 10. Диалоговое окно установки JDBC (JNDI)-соединения

 Рисунок 10. Диалоговое окно установки JDBC (JNDI)-соединения

Примечание: Если вместо диалогового окна установки JDBC (JNDI)-соединения, появляется ошибка, как показано на Рисунке 11, см. пункт Resolve Java Server startup failure error (Исправление ошибки при запуске Java-сервера) в разделе Resources.

Рисунок 11: Диалоговое окно установки JDBC (JNDI)-соединения с ошибкой

 Рисунок 11. Диалоговое окно установки JDBC (JNDI)-соединения с ошибкой

Примечание: для более детальной инструкции по установке файла CRDB_JavaServer.in[i]CRDB_JavaServer.ini settings guide [/b]в разделе link=http://www.ibm.com/developerworks/ru/library/1017_bajaj/index.html#resources]Resources[/link].
Затем введите имя пользователя DB2 и пароль в диалоговом окне Connection Information (Рисунок 12).

Рисунок 12. Диалоговое окно Connection Information

 Рисунок 12. Диалоговое окно Connection Information

Примечание: это диалоговое окно берет имя пользователя из файла CRDB_JavaServer.ini (см. Рисунок 4). вы можете изменить это имя на любое другое имя базы данных.

14. Нажмите на Finish.
15. В диалоговом окне Data, показанном на Рисунке 13, выберите ту таблицу из схемы, которую вы хотите использовать для генерирования отчета. Для этого примера, выберите таблицу Department.

Рисунок 13. Диалоговое окно Data

 Рисунок 13. Диалоговое окно Data

16. Нажмите на Next.
17. В диалоговом окне Fields (Рисунок 14), выберите те поля из таблицы, которые вы хотите вывести на экран.

Рисунок 14. Диалоговое окно Data

 Рисунок 14. Диалоговое окно Data

18. Нажмите на Next.
19. В диалоговом окне Grouping (Рисунок 15) выберите предпочтительное образование групп (для этого примера, примите значение по умолчанию).

Рисунок 15. Диалоговое окно Grouping

 Рисунок 15. Диалоговое окно Grouping

20. Нажмите на Next.
21. В диалоговом окне Record Selection (Рисунок 16) выберите предпочтительный тип записи (для этого примера, примите значение по умолчанию).

Рисунок 16. Диалоговое окно Record Selection

 Рисунок 16. Диалоговое окно Record Selection

22. Нажмите на Next.
23. В диалоговом окне Report Style (Рисунок 17) выберите предпочтительный стиль отчета (для этого примера, примите значение по умолчанию).

Рисунок 17. Диалоговое окно Report Style

 Рисунок 17. Диалоговое окно Report Style

24. Нажмите на Finish и сохраните изменения в файле отчета (выберите File > Save).

Шаг 3: Встраивание Crystal Reports в JSP и запуск его на сервере

Этот шаг такой же, как и шаг 3 в первой части этой серии.

Чтобы встроить Crystal Report, следуйте пошаговой инструкции:
1. создайте новый JSP в вашем Web-проекте.
2. Встройте Crystal Report, который вы только что создали в JSP путем переноса компонента Report Page Viewer из Palette view в перспективу Web, как показано на Рисунке 18.

Рисунок 18. Перенос компонента Report Page Viewer в JSP

 Рисунок 18. Перенос компонента Report Page Viewer component в JSP

Это откроет диалоговое окно New Crystal Report Page Viewer (Рисунок 19).

Рисунок 19. Диалоговое окно New Crystal Report Page Viewer

 Рисунок 19. Диалоговое окно New Crystal Report Page Viewer

3. Нажмите на Browse, затем выберите .rpt file (файл отчета) в вашем Web-проекте в папке WebContent.
4. Нажмите на Finish.
5. Сохраните изменения в JSP ( File > Save).
6. Для запуска страницы в тестовой среде WebSphere V 6.0.2.5 правой кнопкой мыши нажмите на JSP в представлении Project Explorer, затем выберите Run > Run on Server, чтобы увидеть JSP, который содержит Crystal Report. Рисунок 20 показывает отчет в режиме просмотра.

Рисунок 20. Просмотр JSP, содержащий Crystal Report

 Рисунок 20. Просмотр JSP, содержащий Crystal ReportИсключения, возникающие во время выполнения программы, и как их обрабатывать

Во время выполнения программы могут возникнуть некоторые исключения. Методы их обработки показаны ниже.

  • Если во время выполнения программы возникает ошибка JDBC driver runtime (Рисунок 21), скопируйте файлы DB2 Universal JDBC driver.jar (db2jcc.jar, db2jcc_license_cu.jar и db2jcc_license_cisuz.jar) из директории < DB2-Install-directory >\SQLLIB\java в свою директорию <WebSphere-Application-Serverv6.0.x-Install-directory > \lib\ext.
Рисунок 21. Ошибка в работе драйвера JDBC

 Рисунок 21. Ошибка в работе драйвера JDBC

Примечание: Если вы используете тестовую среду WebSphere V 6.0.x, а не автономный IBM® WebSphere® Application Server V 6.0.x (< WebSphere-Application-Serverv6.0.x-Install-directory> = < RAD-install-directory>\runtimes\base_v6.):

  1. После того, как вы скопировали файлы.jar, перезагрузите сервер путем нажатия правой кнопкой мыши на сервер в представлении Servers.
  2. Затем нажмите на Restart > Start.

Если появляется страница Database Logon (Вход в базу данных) (Рисунок 22), введите Ваше имя пользователя DB2 и пароль, затем нажмите на OK.

Рисунок 22. Страница Database Logon

 Рисунок 22. Страница Database Logon

Если у вас ошибка сообщения log4j в представлении Console, см. How to resolve log4j errors (Как исправить ошибки log4j) в разделе Resources:
[2/14/06 17:38:36:435 EST] 00000031 SystemErr
R log4j:ERROR setFile(null,true) call failed.
[2/14/06 17:38:36:435 EST] 00000031 SystemErr
R java.io.FileNotFoundException: C:\Documents and Settings\Administrator\crystal\jpe.log
(The system cannot find the path specified)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.init(FileOutputStream.java:199)
at java.io.FileOutputStream.init(FileOutputStream.java:124)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:272)
at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:156)

Шаг 4: Использование JDBC-соединения в период проектирования и переключение на JNDI-соединение во время выполнения программы

В предыдущих трех шагах вы научились встраивать Crystal Reports в Ваши Web-приложения, которые используют JDBC-соединения в период проектирования и во время выполнения программы. В этом шаге вы узнаете, как использовать JDBC в период проектирования и переключиться на JNDI во время выполнения программы. Чтобы использовать JNDI во время выполнения программы, вам нужно создать источник данных. Затем снова обратитесь к мастеру Standard Report Creation под-шаг 9 шага 2, чтобы использовать этот источник данных для создания JNDI-соединения во время выполнения программы. Так как ваш проект предназначен для среды тестирования WebSphere V 6.0.2.5, вы можете использовать редактор Rational Application Developer Enhanced EAR editor для создания этого источника данных.

Примечание: Этот источник данных будет создан в области применения Application. Если вам нужно создать этот источник данных в области применения Node, Cell или Server, создайте его в консоли администратора для тестовой среды WebSphere V 6.0.2.5. Дополнительную информацию по назначению источника данных в консоли администратора WebSphere, нажмите на Creating Data sources в информационном центре WebSphere Application Server (см. раздел Resources).

Чтобы создать источник данных, следуйте пошаговой инструкции:
1. В представлении Project Explorer, дважды нажмите на Application Deployment Descriptor Вашего проекта приложения (application.xml).
2. В редакторе Application Deployment Descriptor нажмите на закладку Deployment (см. Рисунок 23).

Рисунок 23. Закладка Deployment

 Рисунок 23. Закладка Deployment

3. На закладке Deployment откройте раздел Authentication (Аутентификация) (Рисунок 24).

Рисунок 24. Добавление записи Authentication

 Рисунок 24. Добавление записи Authentication

4. Нажмите на Add, рядом с таблицей JAAS Authentication List (Рисунок 25), чтобы открыть диалоговое окно Add JAAS Authentication Entry (Добавить запись аутенитификации JAAS).

Рисунок 25. Диалоговое окно Add JAAS Authentication Entry

 Рисунок 25. Диалоговое окно Add JAAS Authentication Entry

5. Создайте запись JAAS Authentication Entry с установками, показанными на Рисунке 26, и нажмите на OK.

Примечание: Введите имя пользователя базы данных и пароль в полях User ID и Password.

Рисунок 26. Установки в JAAS Authentication Entry

 Рисунок 26. Установки в JAAS Authentication Entry

6. Теперь нажмите на Add (рядом с таблицей JDBC Provider List), потом выберите установки, показанные на Рисунке 27 в диалоговом окне Create a JDBC Provider.
7. Затем нажмите на Next.

Рисунок 27. Создание JDBC-провайдера (1 из 2)

Рисунок 27. Создание JDBC-провайдера (1 из 2)

8. Создайте robinJDBCProvider с установками, показанными на Рисунке 28.
9. Нажмите на Finish.

Рисунок 28. Создание JDBC-провайдера (2 из 2)

 Рисунок 28. Создание JDBC-провайдера (2 из 2)

Примечание: Чтобы добавить верные JAR в раздел Class path диалогового окна, показанный на Рисунке 28, сначала нажмите на Remove, чтобы удалить записи переменных среды. Затем нажмите на Add External Jars, чтобы перейти к файловой системе и выбрать место расположения Ваших DB2 Universal JDBC-драйверов. Место расположения по умолчанию – это директория \Program Files\SQLLIB\java.
10. Затем выберите robinJDBCProvider в JDBC Provider List (списке JDBC-провайдеров) и нажмите на Add (рядом с таблицей Data Source), чтобы создать новый источник данных, который называется robinDatasource с установками, показанными на Рисунке 29 и Рисунке 30:

Рисунок 29. Создание источника данных (1 из 2)

 Рисунок 29. Создание источника данных (1 из 2)

Рисунок 30. Создание источника данных (2 из 2)

 Рисунок 30. Создание источника данных (2 из 2)

Примечание: обратите особое внимание на значения, приведенные в полях Name и JNDI Name.
11. Чтобы указать следующие свойства в таблице Resource Properties (прямо под таблицей Resource Properties), нажмите Edit и введите соответственно следующие значения:

  • Database Name (Имя БД): sample
  • Server Name (Имя сервера): servername.domainname.com
  • Port Number (Номер порта): 50000

12. Сохраните изменения в Enhanced EAR-редакторе (File > Save).

Примечание: Если вы пользуетесь сервером SQL и базой данных Oracle, а не DB2:

  • Нажмите на каждое свойство ресурса в таблице Resource Properties одно за другим.
  • Если появившееся диалоговое окно редактирования свойств Edit a Resource Property показывает, что выбрана опция Required, нажмите на Edit.
  • Убедитесь, что вы вводите правильное значение для этого свойства ресурса. Дополнительную информацию можно получить в разделе Vendor-specific datasource settings (Установки источника данных, определяемые поставщиком) (ссылка в разделе Resources). Например, для Oracle вы должны определить свойство URL-ресурса со значением jdbc:oracle:thin:@ server_name :1521: database_name. Для получения дополнительной информации обратитесь к поставщику вашей базы данных.

13. Теперь вы установили источник данных, который можно использовать во время выполнения программы, и можете снова следовать Шагу 2, начиная с под-шага 5, чтобы создать новый Crystal Report в том же Web-проекте, с помощью того же мастера Crystal Report. (см. Рисунок 7.) Единственное отличие – в диалоговом окне установок JDBC (JNDI) в под-шаге 12 (Рисунок 10), где нужно привести дополнительное значение имени JNDI-соединения, как показано на Рисунке 31.

Рисунок 31. Диалоговое окно JDBC (JNDI) с дополнительной информацией по источнику данных

 Рисунок 31. Диалоговое окно JDBC (JNDI) с дополнительной информацией по источнику данных

Для сравнения, когда вы раньше следовали инструкциям второго шага, поле имени JNDI-соединения в этом диалоговом окне было пусто (как ранее показано на Рисунке 1 Диалоговое окно установок JDBC (JNDI)). Рисунок 32 показывает, как это выглядит теперь.

Рисунок 32. Диалоговое окно установок JDBC (JNDI)

 Рисунок 32. Диалоговое окно установок JDBC (JNDI)

Вы можете следовать дальнейшим указания мастера, используя те же установки, что были показаны ранее в шаге 2. Также обратитесь к шагу 2, чтобы исправить любые возникающие ошибки.
Теперь снова следуйте шагу 3 для создания нового JSP, чтобы встроить в него созданный Crystal Report, и чтобы запустить этот JSP на сервере. Если вы правильно провели установку, то результат должен быть как на Рисунке 33.

Рисунок 33. JSP, содержащий Crystal Report в браузере

 Рисунок 33. JSP, содержащий Crystal Report в браузере

Так как вы привели значение имени JNDI-соединения для этого Crystal Report, JDBC будет использовано только в период проектирования. Значения диалоговых окон мастера Standard Report Creation и самого отчета будут использовать JDBC-соединение для поиска данных из таблиц базы данных.

Во время выполнения программы Crystal Reports будет автоматически переключаться на JNDI и искать этот robinDatasource, используя имя JNDI для поиска данных из таблиц базы данных.

Отличия и преимущества переключения на JNDI во время выполнения программы

На данном этапе возникает вопрос: Каковы отличия использования JNDI, а не JDBC во время выполнения программы, и каковы преимущества? Вот ответ на эти вопросы.

Следующее сравнение выходных данных в представлении Console сервера в Rational Application Developer поможет вам определить, что было использовано во время выполнения программы для поиска данных из таблиц буфера: JDBC или JNDI. Когда встроенный в JSP Crystal Report использует JDBC во время выполнения программы, представление Console сервера показывает следующий результат. (Оно показывает, что JSP выполняется сервером. То же сообщение вы можете получить при запуске любого стандартного JSP).

Однако когда вы используете JNDI во время выполнения программы (во время запуска сервера), происходят три изменения:

  • Во-первых, вы заметите, что ваш источник данных, robinDatasource, оказывается привязанным к имени JNDI как jdbc/robinDatasource.

[8/20/06 0:52:36:469 EDT] 0000001c ResourceMgrIm I
WSVR0049I: Binding robinDatasource_CF as eis/jdbc/robinDatasource_CMP
[8/20/06 0:52:36:891 EDT] 0000001c ResourceMgrIm I
WSVR0049I: Binding robinDatasource as jdbc/robinDatasource
…..

.

  • Во-вторых, когда вы запускаете JSP на сервере, вы увидите Datasource Configuration (Настройка источника данных) и сообщения, связанные с Вашим JDBC-провайдером в представлении Console сервера

.
…..

.
[8/20/06 21:07:18:016 EDT] 0000001e ServletWrappe A
SRVE0242I: [SampleWebEAR] [/SampleWeb] [/sampleJSP.jsp]: Initialization successful.
[8/20/06 21:07:23:141 EDT] 0000001e ConnectionFac W
J2CA0294W: Deprecated usage of direct JNDI lookup of resource robinDatasource.
The following default values are used: [Resource-ref settings]

res-auth: 1 (APPLICATION)
res-isolation-level: 0 (TRANSACTION_NONE)
res-sharing-scope: true (SHAREABLE)
loginConfigurationName: null
loginConfigProperties: null
[Other attributes]

res-resolution-control: 999 (undefined)
res ref or CMP bean name: null
Database pool properties: null
primeID: 0
isCMP1_x: false (not CMP1.x)
isJMS: false (not JMS)

[8/20/06 21:07:23:891 EDT] 0000001e InternalGener I
DSRA8203I: Database product name : DB2/NT
[8/20/06 21:07:23:906 EDT] 0000001e InternalGener I
DSRA8204I: Database product version : SQL08026
[8/20/06 21:07:23:906 EDT] 0000001e InternalGener I
DSRA8205I: JDBC driver name : IBM DB2 JDBC Universal Driver Architecture
[8/20/06 21:07:23:906 EDT] 0000001e InternalGener I
DSRA8206I: JDBC driver version : 2.10.27
[8/20/06 21:07:23:906 EDT] 0000001e WSRdbDataSour I
DSRA8208I: JDBC driver type : 4

  • В-третьих, еще одно отличие использования JNDI во время выполнения программы, а также и преимущество, когда вы используете JDBC во время выполнения программы, Ваши конечные пользователи будут иметь дело с Web-страницей Database Logon (как показано на Рисунке 34) каждый раз при доступе к JSP, содержащем встроенный отчет. Но когда вы используете JNDI во время выполнения программы, Вашим конечным пользователям не придется каждый раз вводить имя пользователя базы данных и пароли. Это происходит потому, что источник данных уже установил имя пользователя и пароль для вашей базы данных с помощью редактора Enhanced EAR. Во время выполнения программы источник данных передает вам имя пользователя базы данных и пароль. Кроме того, теперь вы можете извлечь выгоду от организации пула соединений и других функциональных возможностей сервера приложений.
Рисунок 34. Страница Database logon

 Рисунок 34. Страница Database logon

Исключения, возникающие во время выполнения программы, и как их исправить

В ходе выполнения программы могут возникнуть некоторые исключения. Следующая инструкция поможет вам их исправить.

Примечание: эти исключения характерны для использования JNDI во время выполнения программы. Если появляются сообщения об ошибках при использовании JDBC во время выполнения программы, еще раз просмотрите материал, касающийся исключений, приведенный в конце шага 3.

Если у вас появилась ошибка, как показано на Рисунке 35), ошибка Unexpected Query Engine, см. в разделе Resources ссылку на Resolve Unexpected Query Engine error на сайте поддержки Rational Application Developer. Однако, если вы пользуетесь Rational Application Developer V 6.0.1.1 или последней версией, у Вас, скорее всего, такой ошибки не возникнет. (IBM Technote сообщает, что такие ошибки возможны при работе с Rational Application Developer V 6.0 и V 6.0.0.1).

Рисунок 35. Ошибка Unexpected Query Engine

 Рисунок 35. Ошибка Unexpected Query Engine

Просто для справки: вдобавок к этой ошибке в браузере у вас также появляться следующие сообщение об исключении в представлении Console сервера:
…..

.
[8/20/06 0:53:59:828 EDT] 00000033 SystemOut O 2006-08-20 24:53:59
com.crystaldecisions.sdk.occa.report.lib.ReportSDKException:
Unexpected Query Engine error—- Error code:-2147467259 Error code name:failed
at com.crystaldecisions.sdk.occa.report.lib.ReportSDKException
.throwReportSDKException(Unknown Source)
at com.crystaldecisions.reports.reportengineinterface
.JPEReportSource.getPage(Unknown Source)
at com.crystaldecisions.report.web.event.aa.a(Unknown Source)
at com.crystaldecisions.report.web.event.aa.a(Unknown Source)
…..

.

Если у вас в браузере появляется сообщение Error finding JNDI Name (robinDatasource) (Рисунок 36), убедитесь, что вы ввели имя JNDI-источника данных, а не само имя источника данных в диалоговое окно Connection мастера Crystal Report (см. под-шаг 9 из шаг 4, чтобы проверить свои установки).

Рисунок 36. Ошибка Error finding JNDI Name

 Рисунок 36. Ошибка Error finding JNDI Name

Если вам нужно подтвердить значение имени JNDI-соединения в диалоговом окне Connection мастера Crystal Reports, правой кнопкой мыши нажмите на пустое место, затем > Database > Set Datasource Location, а потом правой кнопкой нажмите на JDBC-соединение в появившемся диалоговом окне Set Datasource Location, как показано на Рисунке 37), затем нажмите на Properties, чтобы проверить свойства JDBC-соединения (Рисунок 38).

Рисунок 37. Установка размещения источника данных

 Рисунок 37. Установка размещения источника данных

Рисунок 38. Свойства JDBC-соединения

 Рисунок 38. Свойства JDBC-соединения

Если у вас ошибка JNDI name not found, то, возможно, вы указали неправильное имя источника данных (robinDatasource), а не имя JNDI-соединения (jdbc/robinDatasource) в поле JNDI connection name мастера Crystal Report. Чтобы исправить эту ошибку, выполните следующие шаги:
1. Правой кнопкой мыши опять нажмите на пустое пространство, затем > Database > Log On or Off Server. (см. Рисунок 39.)

Рисунок 39. Log On or Off Server

 Рисунок 39. Log On or Off Server

2. Затем, в диалоговом окне Data Explorer, под узлом Current Connections (Текущие соединения), нажмите на JDBC connection, а затем нажмите на Log off> > Close. (см. Рисунок 40.)

Рисунок 40. Data Explorer

 Рисунок 40. Data Explorer

3. Затем правой кнопкой мыши опять нажмите на поле окна Database Expert, затем опять нажмите на узел JDBC (JNDI) на левой панели, и следуйте инструкции под-шага 9 из шага 4, чтобы установить отчет с правильным именем JNDI-соединения.
4. Теперь сохраните изменения в вашем отчете ( File > Save), а потом правой кнопкой мыши нажмите на WebSphere Test Environment WebSphere V 6.0.2.5 в представлении Servers и правой кнопкой мыши выберите Restart Project, чтобы перезапустить EAR-проект на сервере.
5. Затем опять запустите JSP на сервере. На этот раз в JSP должен появиться правильный отчет, не содержащий ошибок.

Примечание: если что-то напутано с именем JNDI, введите то же значение (например, robinDatasource) в поля Datasource Name и JNDI Name в диалоговом окне Modify Data Source (см. под-шаг 7 в шаге 4), а затем введите то же значение (robinDatasource) в поле JNDI Connection Name в диалоговом окне JDBC (JNDI) (под-шаг 9 в шаге 4).

Что дальше

Это конец второй части из пяти данной серии, посвященной встраиванию Crystal Reports в Web-приложения. В этой статье, вы научились встраивать Crystal Reports, который использует JDBC в период проектирования и переключается на JNDI во время выполнения программы. В первой и второй частях серии, вы визуально переносили компонент Report Page Viewer из секции Crystal Reports JSP Tags в представление Palette, чтобы встроить спроектированный Crystal Reports в JSP.

Третья часть показывает, как программным способом встроить спроектированный Crystal Reports в JSP с помощью кода Java™ Reporting Component (JRC). JRC предоставляет много дополнительных свойств, например задание параметров для хранимых процедур базы данных, передача имени пользователя и пароля базы данных, печать отчетов, экспорт отчетов (в форматы PDF, RTF, или RPT) и многие другие. Если Ваши Crystal Reports – не просто стандартные отчеты, и к ним предъявляются особые требования, обратитесь к следующим статьям этой серии.

Источник: http://www.interface.ru/home.asp?artId=8989

Comments are closed.