понедельник, 9 июля 2012 г.

Named LOV в Oracle Apex

Оказывает в Oracle APEX 4.1.1.00.23, если для какого-то столбца отчёта указано использовать «text based on named LOV», то APEX выполняет этот LOV столько раз, сколько строк отчёта выводится на экран. И так для каждого столбца.
Соответственно, при просмотре Debug'а для страницы выдавалось по 50-100 исполнений такого когда:
BEGIN
  BEGIN
    SELECT
        /*+ cardinality(t 5) */
        disp, val bulk collect
      INTO wwv_flow_utilities.g_display,wwv_flow_utilities.g_value
      FROM TABLE(wwv_flow_utilities.get_temp_lov_data(1)) t
      ORDER BY disp;
  END;
END

У нас из-за такой обработки подвисала система, когда несколько пользователей открывали тяжёлые отчёты.
Сейчас исправили, вроде больше не подвисает.

четверг, 15 апреля 2010 г.

Как сделать приложение APEX страницей по умолчанию в xdb

Пусть установлен Oracle APEX, который настроен через xdb.
Нужно сделать, так, чтобы при вводе адреса, например http://127.0.0.1, пользователь перенаправлялся на приложение http://127.0.0.1/apex/f?p=104:101

Делается это так:

В конфигурации xdb прописаны два файла, которые выводятся по умолчанию — index.html и index.htm. Именно в таком порядке. Причём, index.htm есть, а index.html — нет. При заходе на http://127.0.0.1 xdb пробует загрузить index.html, не находит его и оторбражает index.htm.

Нужно создать файл index.html и написать в нём

<meta http-equiv="refresh" content="0;url=/apex/f?p=104:101" />
Это делается следующим вызовом:
declare 
  rpb boolean;
begin
  rpb := dbms_xdb.CreateResource('/index.html',
  '<html><meta http-equiv="refresh" content="0;url=/apex/f?p=104:101" /></html>');
end;

Всё, теперь при заходе на http://127.0.0.1 пользователь будет перенаправляться на http://127.0.0.1/apex/f?p=104:101

воскресенье, 6 декабря 2009 г.

Как убрать java.lang.NullPointerException при сохранении java файла в eclipse

При сохранении класса Demo.java eclipse 3.4 стал выдавать сообщение «Save failed» и пояснение: «java.lang.NullPointerException».
Error log был более подробным и указывал на ошибку в org.eclipse.jdt.internal.debug.ui.BreakpointMarkerUpdater.updateMarker(BreakpointMarkerUpdater.java:107)

Действительно, в файле Demo.java стоял маркер breakpoint, который, как выяснилось, не хотел убираться.

Проблему удалось побороть удалением файла
%ECLIPSE_WORKSPACE%\.metadata\.plugins\org.eclipse.core.resources\.projects\%PROJECT_NAME%\.markers

Отметка breakpoint убралась. Файл стал сохраняться нормально.

P.S. Чтобы восстановить маркеры warnings и error в проекте, достаточно в Window->Preferences->Java->Compiler->Error/Warnings поменять значение любой настройки и нажать Apply. Eclipse пересмотрит проект и расставит маркеры заново.
Остальные маркеры при удалении .markers пропадут.

вторник, 3 марта 2009 г.

Как в xdb сделать открытый read-only доступ

Нужно установить параметр allow-repository-anonymous-access в true.
Вот прога(нашёл на оракловском форуме):
DECLARE
configxml SYS.XMLType;
BEGIN
-- Modify the configuration
SELECT INSERTCHILDXML(xdburitype('/xdbconfig.xml').getXML(),
'/xdbconfig/sysconfig/protocolconfig/httpconfig',
'allow-repository-anonymous-access',
XMLType('<allow-repository-anonymous-access xmlns="http://xmlns.oracle.com/xdb/xdbconfig.xsd">true</allow-repository-anonymous-access>'),
'xmlns="http://xmlns.oracle.com/xdb/xdbconfig.xsd"')
INTO configxml
FROM DUAL;
-- Update the configuration to use the modified version
DBMS_XDB.cfg_update(configxml);
END;

среда, 12 ноября 2008 г.

Как перевести просмотрщик отчётов Birt на русский язык

1. Находим файл tomcat\webapps\birt-report\WEB-INF\lib\viewservlets.jar\org\eclipse\birt\report\resource\Messages.properties.
2. Открываем, переводим на русский язык.
3. Теперь все русские слова кодируем Unicode-кодами, например:
Программа - \u041F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0430.
Здесь буква u должна быть маленькой, а шестнадцатеричные буквы большими. (Я скачал модуль для perl Unicode::Escape, и написал программу в 20 строк.)
4. Результат сохраняем как ANSI (без юникодовского знака в начале) и кладём обратно в архив.
5. Всё перезапускаем приложение в tomcat. Должно работать.
P.S. Делал на версии 2.3.1
P.P.S. С программой на перле я проделал дурную работу, потому что в jdk идёт программа native2ascii.exe, которая и переводит файл в такой формат.

среда, 22 октября 2008 г.

Права csp-приложения в Cache'

  1. Создаём ресурс APP_RIGHTS, этот ресурс будет необходим пользователям, чтобы пользоваться нашим приложением. Общедоступных прав у него нет.
  2. Создаём приложение /csp/user/rights/. [Домашняя страница]>[Управление безопасностью]> [CSP приложения]. Выбираем ресурс, необходимый для запуска приложения, APP_RIGHTS. Убираем не аутентифицированный вход, включаем аутентификацию по паролю. Пишем путь к файлам csp : Путь до Cache: c:\cachesys\csp\user\rights.
  3. Создаём роль APP_RIGHTS_USER. Добавляем ресурс APP_RIGHTS. Ставим галочку в «право на использование».
  4. Создаём пользователя demor (не забудьте указать пароль), добавляем ему роль APP_RIGHTS_USER. Всё, теперь у этого пользователя есть право на использование приложения /csp/user/rights.
  5. В студии создаём страничку demo.csp

    <html><body>
    Congratulations!
    </body></html>

    Сохраняем в папку /csp/user/rights.
  6. Нашему «приложению», состоящему из одной страницы, для успешной работы нужно право чтения базы USER. Поэтому,
  7. создаём роль APP_RIGHTS_USER, добавляем право чтения на ресурс %DB_USER.
  8. Добавляем эту роль к приложению /csp/user/rights (закладка «роли приложения»).
  9. Всё! Заходим по адресу 127.0.0.1:57772/csp/user/rights/demo.csp. Вводим имя пользователя demor и заданный пароль и смотрим поздравления — мы только что прочитали информацию из базы USER, хотя прав у пользователя demor на это не было.
Замечания, исправления привествуются.