Oracle DB, Oracle APEX, Linux etc.

воскресенье, 19 октября 2014 г.

JasperReports Integration + GlassFish

Делюсь инструкцией по установке сервлета, позволяющего использовать JasperReports из APEX. В качестве контейнера используется GlassFish. По ходу описания я расскажу, как обновить в сервлете JasperReports Library и настроить соединение с Oracle в GlassFish.

Потребуются:
  • установленный APEX (4.2.6);
  • установленный GlassFish (4.1), каталог установки в инструкции обозначен как GLASSFISH_ROOT;
  • JasperReports Library (5.6.0), далее JRL;
  • JasperReports Integration (2.1.0), далее JRI.

Установка и настройка:

  1. Распаковать JRI в какой-либо пустой каталог (далее $JRI_ROOT).
  2. Переписать файлы *.jar из папки $JRI_ROOT/lib в каталог $GLASSFISH_ROOT/glassfish/domains/domain1/lib:
    cp $JRI_ROOT/lib/*.jar $GLASSFISH_ROOT/glassfish/domains/domain1/lib
  3. Извлечь из веб-приложения JRI файл web.xml для указания каталога, в котором будут расположены каталог конфигурационных файлов, каталог отчётов, каталог файлов протокола работы приложения:
    cd $JRI_ROOT
    java -jar bin/truezip.jar cp webapp/JasperReportsIntegration.war/WEB-INF/web.xml web.xml
  4. Изменить в файле web.xml параметр oc.jasper.config.home (тег param-value):
    
      oc.jasper.config.home/path/to/jasperreports/config/dir
    

    Каталог в настройке (далее $JRI_CONF_HOME) должен давать права на чтение и запись пользователю ОС, под которым запускается GlassFish.
  5. Обновить файл web.xml в архиве веб-приложения:
    cd $JRI_ROOT
    java -jar bin/truezip.jar cp web.xml webapp/JasperReportsIntegration.war/WEB-INF/web.xml
  6. Создать каталог $JRI_CONF_HOME, если он ещё не создан, настроить права.
  7. Переписать в этот каталог $JRI_CONF_HOME папки $JRI_ROOT/{conf,logs,reports}.
  8. Зайти в веб-консоль GlassFish и установить приложение: Applications→Deploy. Выбрать архив с обновлённым web.xml.
    Context Root=/jri
  9. Создать JDBC Connection Pool с произвольным именем (далее $POOL_NAME). JDBC→JDBC Connection Pools→New:
    Resource Type: javax.sql.DataSource
    Datasource Classname: oracle.jdbc.pool.OracleDataSource
    Properties→User: DB_USER
    Properties→Password: db_password
    Properties→URL: jdbc:oracle:thin:@your.db.host:1521:oracle_sid
    
  10. Проверить пул, выбрав его и нажав Ping.
  11. Создать JDBC Resource, с которым будет работать приложение. JDBC→JDBC Resource→New:
    JNDI Name: Строка из букв и чисел с префиксом, отделённым косой чертой (например, jdbc/default, jdbc/mydbuser1)
    Pool Name: $POOL_NAME
  12. В файле $JRI_CONF_HOME/conf/application.properties настроить JNDI-префикс и подключения:
    ...
    jndiPrefix=jdbc/
    ...
    [datasource:default]
    type=jndi
    name=default
    # Для ресурса JNDI убирается префикс и указывается оставшаяся строка
    
  13. Распаковать JasperReports Library в какой-либо каталог (далее $JRL_ROOT);
  14. Остановить домен GlassFish в консоли:
    asadmin stop-domain domain1
  15. Обновить библиотеку JasperReports в составе JRI. Для этого перейти в $GLASSFISH_ROOT/glassfish/domains/domain1/applications/JasperReportsIntegration/WEB-INF/lib и выполнить для удаления старой библиотеки:
    chmod u+x _jasper-reports-delete-libs-5.1.0.sh
    ./_jasper-reports-delete-libs-5.1.0.sh
  16. Переписать в $GLASSFISH_ROOT/glassfish/domains/domain1/applications/JasperReportsIntegration/WEB-INF/lib все файлы из каталога $JRL_ROOT/lib и файл $JRL_ROOT/dist/jasperreports-5.6.0.jar.
    cp $JRL_ROOT/lib/* $JRL_ROOT/dist/jasperreports-5.6.0.jar $GLASSFISH_ROOT/glassfish/domains/domain1/applications/JasperReportsIntegration/WEB-INF/lib
  17. Запустить домен GlassFish в консоли:
    asadmin start-domain domain1
  18. Выполнить скрипт $JRI_ROOT/sql/sys_install.sql. Потребуется указать схему БД, в которой будет размещаться API для формирования отчётов из PL/SQL.
  19. Выполнить скрипт $JRI_ROOT/sql/sys_install_acl.sql. Потребуется указать схему БД, в которой будет размещаться API для формирования отчётов из PL/SQL.
  20. Выполнить скрипт $JRI_ROOT/sql/user_install.sql от имени пользователя, в схеме которого будет размещаться API для формирования отчётов из PL/SQL.
  21. Для проверки работоспособности веб-приложения открыть http://<сервер с GlassFish>:<настроенный для приложений порт>/
  22. Для проверки обращений и примера использования JRI из APEX установить приложение из $JRI_ROOT/apex.

Читать далее