Это 3 статья серии из пяти частей, которая должна дать практические навыки по внедрению отчетов Crystal Reports в веб-приложения с помощью инструментария IBM Rational Application Developer. В частях 1 и 2 рассматривалось, как настраивать программное обеспечение для разработки отчетов Crystal Reports, а затем были разработаны образцы отчетов Crystal Reports с помощью внедренного приложения Crystal Report Designer. Затем эти отчеты внедрялись в страницы JSP перетаскиванием компонента Report Page Viewer из секции Crystal Reports JSP Tags области Palette. В данном руководстве разъясняется альтернативный и гораздо более эффективный способ программного внедрения предварительно разработанных отчетов с помощью кода Java Reporting Component, которым также обеспечиваются дополнительные возможности, например, настройка параметров для хранимых процедур баз данных, передачи учетных данных для входа в базу данных и печати или экспорта отчетов. Если необходимы не просто элементарные отчеты Crystal Reports, с указанными выше дополнительными функциями, данное руководство будет очень полезным.
Образец сценария разработки
В данном руководстве рассматриваются:
- Конфигурирование файла CRDB_JavaServer.ini.
- Создание нового веб-проекта с помощью технологии JavaServer Pages (JSP) с включением отчетов Crystal Reports.
- Программное внедрение отчетов Crystal Reports в страницу JSP с помощью кода Java Reporting Component (JRC) с последующим ее выполнением на сервере.
В рассматриваемом примере используется приложение IBM Rational Application Developer v6.0.1.1 с установленными по умолчанию функциями приложения Crystal Reports Version XI. Большинство читателей имеют доступ к среде тестирования IBM WebSphere Version 6, включая пользователей пробной версии Rational Application Developer. Поэтому в данной статье образец веб-приложения настраивается для выполнения в среде тестирования WebSphere V6.0.2.5, а не V5.1. В нем также используется приложение IBM DB2 Universal Database v8.1, содержащее образец базы данных, используемый в данном руководстве для создания отчетов.
Дополнительную информацию о сценариях использования отчетов Crystal Reports можно найти в справке приложения Application Developer (Help > Help Contents > Developing Web Applications > Crystal Reports > Creating Reports). Выяснить, где можно загрузить пробные версии данных продуктов, можно в подразделе IBM trial software раздела Resources. Можно воспользоваться ссылкой Crystal Reports FAQs на странице поддержки Rational Application Developer Support (см. Resources), чтобы найти ответы на любые вопросы по лицензированию, обновлению или по другим темам, относящимся к инструментарию Crystal Reports в приложении Rational Application Developer.
Шаг 1.Конфигурированиефайла CRDB_JavaServer.ini
Аналогично описанному в шаге 1 части 1 данной серии статей. Если на данном шаге среда уже настроена в соответствии с частью 1, можно перейти к шагу 2. В противном случае, для конфигурирования данного файла выполните следующие действия.
- В рабочей области Rational Application Developer перейдите к области Data (Window > Open Perspective > Data).
- Щелкните правой кнопкой мыши в области Database Explorer и выберите затем New Connection.
- Выберите Choose a Database Manager and JDBC Driver (см. рис. 1).
Рис. 1.Диалоговоеокно New Database Connection
- Щелкните Next.
- В диалоговом окне New Database Connection введите значения, показанные на рис. 2, затем щелкните Test Connection.
Рис 2. Диалоговое окно указания параметров соединения
- Если тестовое соединение успешно, щелкните OK (рис. 3).
Рис 3. Успешное тестовое соединение
В случае каких-либо проблем с подключением Java Database Connectivity API (JDBC), чтобы найти необходимую справку, следует:
- просмотреть документацию поставщика по базе данных;
- просмотреть раздел Resources по ссылке DB2 Infocenter;
- проверить, можно ли подключаться к базе данных без помощи области Data приложения Rational Application Developer, выполнив вместо этого программу Java™, предназначенную для проверки подключения JDBC, из командной строки. (По ссылке JDBC Test в разделе Resources можно найти справку по устранению неполадок с подключением JDBC для большинства поставщиков баз данных;)
- выяснить, поддерживается ли компанией Business Objects используемая среда разработки (то есть, база данных, операционная система и т.д.), просмотрев подраздел Business Objects' Supported Platforms в разделе Resources.
Примечание. На странице по ссылке Application Developer support page в разделе Resources упоминается, что отчетами Crystal Reports компании Business Objects не поддерживаются платформы IBM z/OS и IBM iSeries. Однако так же предлагаются поддерживаемые методы для обхода данного ограничения на этих платформах.
- Оставив открытым окно мастера New Database Connection, откройте затем файл CRDB_JavaServer.ini по следующему пути: C:\Program Files\Common Files\Crystal Decisions\2.5\bin\CRDB_JavaServer.ini.
- Измените следующие значения в файле 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), заключите в кавычки путь к каждому файлу .jar (например: "c:\program files\IBM\SQLLIB\java\db2jcc.jar").
- IORFileLocation: Укажите полный путь для каждой временной папки в своей локальной файловой системе. (Необходимо иметь полномочия на чтение и запись.)
- JDBCURL: Скопируйте значение параметра Connection URL из окна мастера New Database Connection и затем замените им существующее значение.
- JDBCUserName: Введите db2admin или свое имя пользователя базы данных. Позже его можно будет изменить в мастере информации о подключении jdbc(jndi) (см. рис. 12).
- JDBCDriverName: Скопируйте значение параметра JDBC driver class из окна мастера New Database Connection и затем замените им существующее значение.
Рис. 4.
Файл CRDBJavaServer.ini с настройками подключения JDBC
Примечание. Лучше использовать редактор Notepad, чем любой другой редактора текстовых файлов, так как другие редакторы могут вставлять невидимые символы форматирования, которые могут приводить к ошибкам, как показано на рис. 11, даже если для соответствующих параметров указаны правильные значения.
- Сохраните файл CRDB_JavaSever.ini, а затем щелкните Cancel в окне мастера New Database Connection.
Шаг 2. Создание нового веб-проекта с помощью технологии JSP с включением отчетов Crystal Reports
Данный шаг аналогичен шагу 2 в части 1, за исключением того, что здесь для образца веб-проекта используется среда тестирования WebSphere V6.0, а не V 5.1. Далее, в шаге 4, придется вернуться к подшагу 5 этого шага (шага 2), чтобы запускать свой отчет с помощью интерфейса JNDI во время выполнения. Пока, однако, будет описана настройка для использования технология JDBC и во время проектирования, и во время выполнения.
Для создания нового веб-проекта выполните следующие шаги.
Для создания нового веб-проекта выполните следующие шаги.
- В рабочей области приложения Rational Application Developer создайте новый динамический веб-проект, выбрав File > New > Dynamic Web Project.
- Выберите настройки, показанные на рис. 5.
Примечание. Для данного примера необходимо выбрать для параметра Servlet version значение 2.4 и указать WebSphere Application Server V6.0 как значение для Target Server, как показано на рис. 5.
Рис. 5.Диалоговоеокно New Dynamic Web Project
- Щелкните Next, а затем выберите Crystal Reports features в диалоговом окне Features , как показано на рис. 6.
Рис. 6.Диалоговоеокно Web Project features
- Щелкните Finish.
- В своем веб-проекте щелкните правой кнопкой мыши папку WebContent и затем выберите New > Crystal Report.
- Выберите настройки, показанные на рис. 7 в окне New Crystal Report Wizard.
Рис. 7.Окно New Crystal Report Wizard
- Щелкните Finish.
- В диалоговом окне Crystal Reports Gallery выберите параметр Report Wizard (рис. 8).
Рис. 8.Диалоговоеокно Crystal Reports Gallery
- Щелкните OK.
- В диалоговом окне Standard Report Creation Wizard щелкните Create New Connection > JDBC(JNDI) (рис. 9).
Рис. 9.Окно Standard Report Creation Wizard
- При правильной конфигурации настроек в файле CRDB_JavaServer.ini появится диалоговое окно настроек подключения JDBC(JNDI) (рис. 10). Поля Connection URL и Database Classname уже должны быть заполнены правильными значениями из файла CRDB_JavaServer.ini file.
- Щелкните Next.
Рис. 10.
Диалоговое окно настроек подключения JDBC(JNDI)
Примечание. Если вместо окна настроек подключения JDBC(JNDI) появляется сообщение об ошибке, показанное на рис 11, см. подраздел Resolve Java Server startup failure error в разделе Resources.
Рис. 11.
Диалоговое окно настроек подключения JDBC(JNDI) с отображаемым сообщением об ошибке
Примечание. Более подробное руководство по настройке файла CRDB_JavaServer.ini можно найти в подразделе CRDB_JavaServer.ini settings guide раздела Resources.
- Введите свои значения User ID и Password для DB2 в диалоговом окне Connection Information (рис. 12).
Рис. 12. Диалоговоеокно Connection Information
Примечание. В данное диалоговое окно автоматически вводится имя пользователя, введенное в файле CRDB_JavaServer.ini (см. рис. 4). При необходимости его можно изменить здесь на любое другое имя пользователя базы данных.
- Щелкните Finish.
- В диалоговом окне Data, показанном на рис. 13, выберите таблицу, для которой необходимо создать отчет, из таблиц, доступных в логической структуре. В данном примере выберите таблицу Department.
Рис. 13. Диалоговое окно Data
- Щелкните Next.
- В диалоговом окне Fields (рис. 14) выберите из таблицы поля, которые необходимо отобразить в отчете.
Рис. 14. Диалоговое окно Fields
- Щелкните Next.
- В диалоговом окне Grouping (рис. 15) выберите необходимые параметры группирования (в данном примере примите значения по умолчанию).
Рис. 15.
Диалоговое окно Grouping
- Щелкните Next.
- В диалоговом окне Record Selection (рис. 16) выберите необходимые параметры выбора для записи (в данном примере примите значения по умолчанию).
Рис. 16. Диалоговоеокно Record Selection
- Щелкните Next.
- В диалоговом окне Report Style (рис 17) выберите необходимые параметры стиля отчета (в данном примере примите значения по умолчанию).
Рис. 17.
Диалоговое окно Report Style
- Щелкните Finish и затем сохраните изменения в файле отчета (выберите File > Save).
Шаг 3. Программное внедрение отчетов Crystal Reports в страницу JSP с помощью кода JRC с последующим ее выполнением на сервере
- Загрузите для данной статьи начальный код образца с веб-узла BusinessObjects support site, щелкнув ссылку Sample applications for the Crystal Reports XI Java Reporting Component. Извлеките содержимое из скачанного файла .zip по пути c:\crxi_jrc_jsp_samples в своей файловой системе.
- Из папки c:\crxi_jrc_jsp_samples\jrc_begin_here импортируйте эти два файла в папку WebContent своего веб-проекта.
- jrc_begin_here.jsp: этот файл содержит информацию для установки и инициализирует объекты JRC (Java Reporting Component) с файлом отчета Crystal Report.
- CrystalReportViewer.jsp: этот файл содержит программный код программы просмотра, используемый для отображения отчета на веб-странице.
- Теперь измените файл jrc_begin_here.jsp, чтобы он работал с отчетом Crystal Report (Untitled.rpt), созданным в шаге 2.
- Измените значение переменной reportName, чтобы указать на отчет Crystal Report. Так как файл Untitled.rpt был создан в папке WebContent, значение переменной reportName должно быть Untitled.rpt, как показано в отрывке программного кода Распечатка 1.
Распечатка 1. Значение переменной reportName
String reportName = "Untitled.rpt";
|
- В отрывке программного кода в распечатке 2 из файла jrc_begin_here.jsp используется интерфейс API приложения BusinessObjects Java Reporting Component для создания объекта ReportClientDocument с последующим указанием для него файла Untitled.rpt.
Распечатка 2. Программный код, которым создается объект oReportClientDocument
//---------- Создание объекта ReportClientDocument -------------
ReportClientDocument oReportClientDocument =
new ReportClientDocument();
//---------- Указание пути к местоположению источника отчета
------------- //Открытие отчета.
oReportClientDocument.open(reportName, 0); |
- В отрывке программного кода в распечатке 3 из объекта oReportClientDocument получается объект reportSource, который затем помещается в область сеанса.
Распечатка 3. Программный код, которым извлекается объект reportSource
//Извлечение объекта reportSource и его помещение в область сеанса
reportSource = oReportClientDocument.getReportSource();
session.setAttribute("reportSource", reportSource);
|
- Далее, в отрывке программного кода в распечатке 4 показывается перенаправление обозревателя на файл CrystalReportViewer.jsp.
Распечатка 4. Программный код, которым браузер перенаправляется на файл CrystalReportViewer.jsp
response.sendRedirect("CrystalReportViewer.jsp");
|
В распечатке 5 показывается измененное содержимое файла jrc_begin_here.jsp. Чтобы ознакомиться с полной распечаткой программного кода, необходимо загрузить файл SampleWebApplication.zip из раздела Resources и просмотреть файл jrc_begin_here.jsp.
Распечатка 5. Измененное содержимое файла jrc_begin_here.jsp
//Используется относительный путь к отчету; физический или полный адрес
URL использовать // нельзя.
String reportName = "Untitled.rpt";
try
{
//проверка, существует ли уже источник для отчета
Object reportSource = session.getAttribute("reportSource");
//если источник для отчета не был открыт
if (reportSource == null)
{
//---------- Создание объекта ReportClientDocument -------------
ReportClientDocument oReportClientDocument =
new ReportClientDocument();
//---------- Указание пути к местоположению источника отчета
-------------
//Открытие отчета.
oReportClientDocument.open(reportName, 0);
//Извлечение источника для отчета
reportSource =
oReportClientDocument.getReportSource();
//Кеширование источника для отчета.
//Это будет использоваться программой просмотра для отображения
необходимого отчета.
session.setAttribute("reportSource", reportSource);
}
response.sendRedirect("CrystalReportViewer.jsp");
}
catch(ReportSDKException e)
{
out.print(e);
} |
Основные сведения о программном коде файла CrystalReportViewer.jsp
Рассмотрим теперь программный код файла CrystalReportViewer.jsp.
Программным кодом в распечатке 6 выполняются следующие функции:
- извлечение из сеанса объекта reportSource;
- создание экземпляра объекта CrystalReportViewer для создания объекта оCrystalReportViewer;
- установка источника для отчета данного объекта oCrystalReportViewer для извлечения из сеанса объекта reportSource.
Распечатка 6. Программный код файла CrystalReportViewer.jsp
//Извлечение из сеанса объекта IReportSource и передача его программе просмотра
IReportSource reportSource = (IReportSource)session.getAttribute
("reportSource");
//---------- Создание программы просмотра и отображение отчета -------------
//создание объекта CrystalReportViewer -------------
CrystalReportViewer oCrystalReportViewer =
new CrystalReportViewer();
//установка свойства reportsource для программы просмотра
oCrystalReportViewer.setReportSource(reportSource);
|
В следующих трех отрывках программного кода устанавливаются атрибуты программы просмотра (объект oCrystalReportViewer).
- В распечатке 7 указывается, становится ли программа просмотра владельцем страницы. Установка для параметра setOwnPage значения true обеспечивает некоторые преимущества, позволяя программе просмотра полностью обрабатывать содержимое, включающее объекты HTML. Это уменьшает объем программного кода, который необходимо добавить в страницу JSP, и позволяет программе просмотра автоматически определять некоторые настройки.
Распечатка 7. Настройка программы просмотра для обработки содержимого, включающего объекты HTML
oCrystalReportViewer.setOwnPage(true);
|
- В распечатке 8 указывается, становится ли программа просмотра владельцем формы. Если управление сервером является владельцем формы, можно извлекать и устанавливать значения для формы. В частности, если программа просмотра - владелец формы, то она может кешировать свое состояние на стороне клиента.
Распечатка 8. Указание, становится ли программа просмотра владельцем формы
oCrystalReportViewer.setOwnForm(true);
|
- В отрывке программного кода в распечатке 9 указывается, использовать ли для печати режим печати PDF или ActiveX, когда пользователь нажимает кнопку печати. В режиме печати PDF отображается документ PDF, что позволяет потом его распечатать. В режиме печати ActiveX на компьютер клиента загружается элемент управления ActiveX для выполнения задания печати. Если режим печати ActiveX выбирается в системе, которая не поддерживает элементы управления ActiveX, по умолчанию устанавливается режим печати PDF.
Распечатка 9. Указание, используется ли при печати режим печати PDF или ActiveX
oCrystalReportViewer.setPrintMode(CrPrintMode.PDF);
// другим режимом печати является CrPrintMode.ACTIVEX
|
Примечание.
- Дополнительную информацию об упомянутых атрибутах и других доступных атрибутах CrystalReportViewer можно найти в справке приложения Rational Application Developer (Help > Help Contents > Developing Web Applications > Crystal Reports > API Reference > Viewer Java Classes > Crystal Report Viewer).
- В случае возникновения каких-либо проблем при печати или экспорте отчетов Crystal Reports (особенно исключения, показанного в распечатке 10) необходимо просмотреть подразделы WebSphere server throws runtime errors while exporting or printing the Crystal Reports и How to resolve the runtime errors while printing or exporting Crystal Reports раздела Resources, чтобы получить справку по их разрешению.
Распечатка 10. Исключение, с которым можно столкнуться при печати или экспорте отчетов Crystal Reports
java.lang.IllegalStateException: SRVE0199E:
OutputStream already obtained
|
- Программным кодом третьего отрывка, показанным в распечатке 11, обрабатывается и отображается отчет на веб-странице.
Распечатка 11. Распечатка образца кода при максимальной ширине
oCrystalReportViewer.processHttpRequest(request, response,
getServletConfig().getServletContext(), null);
|
Чтобы выполнить страницу на сервере IBM WebSphere:
- Щелкните правой кнопкой мыши файл jrc_begin_here.jsp в области Project Explorer и выберите Run > Run on Server, чтобы просмотреть страницу JSP, содержащую отчет Crystal Report. (См. рис. 18.)
Примечание.
Если открылась страница Database Logon (рис. 19), введите свое имя пользователя IBM® DB2 и пароль, а затем щелкните OK.
Рис. 19. Страница Database Logon
Можно пропустить эту страницу Database logon, с помощью одной из следующих альтернатив:
- Использовать шаг 4 второй статьи данной серии, "Интеграция отчетов Crystal Reports в веб-приложения с помощью приложения Rational Application Developer" (см. раздел Resources), для создания отчета, который переключался бы на интерфейс JNDI во время выполнения. Если связать файл jrc_begin_here.jsp с этим отчетом (как в предыдущем подшаге 4), учетные данные для входа будут передаваться автоматически во время выполнения и не будет появляться страница Database logon. Такой подход позволяет использовать все лучшее из обеих технологий, позволяя писать программный код JRC и использовать отчеты на основе технологии JNDI. Этими отчетами проверка подлинности выполняется автоматически. Кроме того, учитывая, что JRC представляет собой тщательно разработанный интерфейс API, он предоставляет гораздо больше возможностей управления отчетами, чем элемент Report Viewer Control из области Palette.
- Вторая альтернатива - удалить комментарии из двух следующих отрывков программного кода в файлах jrc_begin_here.jsp и CrystalReportViewer.jsp соответственно. Отрывком программного кода в распечатке 12 создается объект oConnectionInfos, который инициализируется со значениями имени пользователя и пароля, а затем помещается в область сеанса. Отрывком программного кода в распечатке 13 из области сеанса извлекается объект ConnectionInfos и связывается с объектом oCrystalReportViewer как значение атрибута DatabaseLogonInfos .
Распечатка 12. Программный код для объекта oConnectionInfos
//Имя пользователя базы данных и пароль
String userName = "devtech";
String password = "devtech";
//Создание нового объекта ConnectionInfos и ConnectionInfo;
Объект ConnectionInfo
// будет добавлен в совокупность ConnectionInfos после
установки // свойств. Совокупность может быть совокупностью одного
или нескольких объектов.
ConnectionInfos oConnectionInfos = new ConnectionInfos();
ConnectionInfo oConnectionInfo = new ConnectionInfo();
//Установка имени пользователя и пароля для базы данных отчетов
oConnectionInfo.setUserName(userName);
oConnectionInfo.setPassword(password);
//Добавление объекта в коллекцию
oConnectionInfos.add(oConnectionInfo);
session.setAttribute("oConnectionInfos", oConnectionInfos); |
Распечатка 13.Программныйкоддлясвязиобъекта ConnectionInfos собъектом oCrystalReportViewer какзначенияатрибута DatabaseLogonInfos
// извлечение из сеанса объекта ConnectionInfos
ConnectionInfos connectionInfos =
(ConnectionInfos)session.getAttribute("oConnectionInfos");
//установка объекта connectionInfos
oCrystalReportViewer.setDatabaseLogonInfos(connectionInfos); |
Примечания:
- Так как программным кодом файла jrc_begin_here.jsp обозреватель перенаправляется на файл CrystalReportViewer.jsp, пользователи веб-узла обычно не могут видеть такие имя пользователя базы данных и пароль, просматривая исходный код веб-страницы в своих веб-обозревателях.
- Хотя можно использовать обе альтернативы, стоит упомянуть, что первая альтернатива, которой предлагается использовать отчет, переключающийся на интерфейс JNDI во время выполнения, более безопасна, потому что проверка подлинности выполняется модулем Java™ Authentication and Authorization Service (JAAS), указанным в настройках источника данных JNDI. Кроме того, при этом исключается необходимость шифрования учетных данных для входа в файле jrc_begin_here.jsp.
Обработка исключений, которые могут происходить во время выполнения
Во время выполнения данного процесса могут происходить некоторые исключения. Ниже описывается, как обрабатывать эти исключения.
- Если во время данного процесса выводится сообщение об ошибке выполнения драйвера JDBC (рис. 20), скопируйте файлы .jar универсального драйвера JDBC для DB2 ( db2jcc.jar, db2jcc_license_cu.jar и db2jcc_license_cisuz.jar) из каталога <Каталог-установки-DB2>\SQLLIB\java в свой каталог <Каталог-установки WebSphere-Application-Serverv6.0.x>\lib\ext. (Примечание. Если используется среда тестирования WebSphere V6.0, а не автономный сервер IBM® WebSphere® Application Server V6.0, <Каталог установки WebSphere-Application-Serverv6.0.x> = <Каталог установки RAD>\runtimes\base_v6.) После копирования файлов .jar перезапустите сервер, щелкнув правой кнопкой мыши его обозначение в области Servers и выбрав Restart > Start.
Рис. 20. Ошибка выполнения драйвера JDBC
Распечатка 14. Программный код для связи объекта ConnectionInfos с объектом oCrystalReportViewer как значения атрибута DatabaseLogonInfos
[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) |
Ограничение использования апплет-сценариев в программном коде JRC
Следует заметить, что в файле jrc_begin_here.jsp используются в основном апплет-сценарии JSP. Если необходимо избежать использования слишком большого количества апплет-сценариев, можно использовать директивы taglib в интерфейсе JRC API компании BusinessObjects. В отрывке программного кода в распечатке 15 показано, что все атрибуты, сконфигурированные выше, и использующие апплет-сценарии, можно сконфигурировать с помощью тега <crviewer>. Чтобы ознакомиться с полной распечаткой программного кода, необходимо загрузить файл SampleWebApplication.zip из раздела Resources и просмотреть файл jrc_begin_here_taglib.jsp.
Распечатка 15. Конфигурирование атрибутов с помощью тега <crviewer> вместо апплет-сценариев
<%@ taglib uri="/crystal-tags-reportviewer.tld"
prefix="crviewer" %>
<html>
<body>
<!-- Создание тега, открывающего программу просмотра, для указания имени программы просмотра
и типа источника для отчета.
При использовании Java Reporting Component значение параметра reportSourceType
будет reportingComponent
Этот тег программы просмотра также имеет несколько наборов свойств программы просмотра.
Они могут устанавливаться в средах IDE, поставляемых с JRC, или вручную.-->
<crviewer:viewer viewerName="CrystalViewer"
reportSourceType="reportingComponent"
displayGroupTree="false"
isOwnPage="true"
displayToolbarExportButton="true"
displayToolbarPrintButton="true"
displayToolbarRefreshButton="true"
displayToolbarToggleTreeButton="false"
displayToolbarCrystalLogo="true">
<!-- Создание обязательного тега отчета для указания отображаемого отчета
и переменной сеанса для кеширования источника для отчета. -->
<crviewer:report reportName="Untitled.rpt"/>
</crviewer:viewer>
</body>
</html> |
- Если при выполнении файла jrc_begin_here_taglib.jsp возникает исключение, показанное в распечатке 16, необходимо проверить правильность пути, введенного в отчет Crystal Report (файл .rpt), как показано в отрывке программного кода в распечатке 15.
Распечатка 16. Распечатка образца кода при максимальной ширине
com.crystaldecisions.sdk.occa.report.lib.ReportSDKException:
Report file
/C:/RSA_workspaces/dWArticle2_3/SampleWeb/WebContent/
jrc_view_tag_library_basic/jrc_view_tag_library_basic.rpt not found
---- Error code:-2147467259 Error code name:failed
at com.crystaldecisions.reports.reportengineinterface.
JPEReportSource.a
(Unknown Source)
at com.crystaldecisions.reports.reportengineinterface.
JPEReportSourceFactory.createReportSource
(Unknown Source)
at com.crystaldecisions.report.web.a.a.M(Unknown Source)
at com.crystaldecisions.report.web.event.aa.a(Unknown Source)
at com.crystaldecisions.report.web.event.aa.a(Unknown Source)
at com.crystaldecisions.report.web.event.bx.a(Unknown Source)
at com.crystaldecisions.report.web.event.b1.broadcast
(Unknown Source)
at com.crystaldecisions.report.web.event.as.a(Unknown Source)
at com.crystaldecisions.report.web.WorkflowController.if
(Unknown Source)
at com.crystaldecisions.report.web.
WorkflowController.doLifecycle
(Unknown Source)
at com.crystaldecisions.report.web.ServerControl.a
(Unknown Source) |
Содержание остальных частей данной серии статей
На этом завершается часть 3 серии статей из 5 частей о внедрении отчетов Crystal Reports в веб-приложения. В данной статье рассмотрена более эффективная альтернатива использованию элемента управления Report Page Viewer для внедрения отчетов в технологию JSP. Вместо этого можно вставлять программный код Java Reporting Component в страницу JSP для указания на предварительно разработанные отчеты Crystal Reports. Так как JRC представляет собой гораздо более эффективный и проработанный интерфейс API, он позволяет гораздо более полно и эффективно управлять характеристиками отчетов во время выполнения.
В части 4 данной серии статей описывается использование дополнительных функций JRC, таких как создание отчетов из данных во время выполнения и данных XML при помощи интерфейса JRC. Как упоминалось в данной статье, использование приложения Embedded Crystal Report Designer для выполнения, во время проектирования, подключений JDBC к платформам IBM z/OS и iSeries не поддерживается. Однако в частях 4 и 5 также объясняются методики, которые помогают разработчикам обходить это ограничение.
Ссылки по теме