Сервер переехал на новый сайт http://www.oraclegis.com/blog. Здесь идет ретрансляция

среда, 16 июля 2008 г.

Инсталляция Oracle Mapviewer 10.1.3.1 на Oracle BEWeblogic 10A

Oracle Mapviewer представляет собой стандартный пакет EAR, который можно разворачивать на любом J2EE-совместимом сервере приложений, а не только на Oracle Application Server (OAS).

К сожалению, даже J2EE-сервера имеют некоторые различия в реализации. Так, к примеру, OAS поддерживает разворачивание EAR архивов. При этом он распаковывает war архивы.
Oracle Weblogic не распаковывает архив. Запуск приложения происходит непосредственно из war архива. При этом у Weblogic - это поведение по умолчанию.

Для того, чтобы поведение было аналогично поведению OAS необходимо вручную распаковать архив и осуществлять развертывание в режиме exploded. Связано это с некорректной работой функции servletconfig.getServletContext().getRealPath("/"); Для приложений развернутых в виде war-архива эта функция возвращает NULL.

Ниже я привожу пошаговую инструкцию по инсталляции Oracle Mapviewer на Oracle Weblogic 10.

1. Скачиваем Oracle Weblogic 10 MP1.
2. Скачиваем Oracle Mapviewer 10.1.3.1 из ноты 7195504 на metalink
3. Инсталлируем Oracle Weblogic 10 с настройками по-умолчанию.
4.1 Запускаем Oracle Weblogic: $BEA_HOME/wlserver_10.0/server/bin/startWLS.sh.
4.2 Отвечаем на вопросы. Ждем пока появится сообщение 5.1 Копируем на сервер файл mapviewer.ear из пакета Oracle Mapviewer в любой каталог. И переименовываем его в mapviewer1.ear
5.2 Распаковываем mapviewer1.ear в каталог mapviewer.ear
5.3 Внутри каталога есть файл web.war. Переименовываем его в web1.war. Распаковываем его в каталог web.war
5.4 В поставке Oracle Weblogic 10 отсутствует библиотека xmlparserv2.jar. Ее можно взять из поставки OC4J и скопировать в каталог mapviewer.ear/web.war/WEB-INF/lib/
6.1 В новом терминальном окне идем, в каталог, куда распаковали mapviewer.ear
6.2 Запускаем настройку среды для WebLogic: ". $BEA_HOME/wlserver_10.0/server/bin/setWLSEnv.sh"
6.3 Разверачиваем приложение командой: java weblogic.Deployer -user system -password weblogic -deploy /home/oracle/mapviewer.ear
Читать далее...

четверг, 3 июля 2008 г.

При вот такой ошибке
javax.servlet.ServletException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified



Проблемы не с драйвером, а с самой XE.
Я, наверно, все возможные варианты перепробывал, и драйверов, и локалей, и параметров ОС.

Jdbc с XE работает только с англицкой локалью, это известная трабла, и во многих постах и статьях отмечена.

Вопрос был скорее в том, почему сервлеты BPEL-а не цепляют локаль из системы, если поставить языковые параметры ОС на английские. Ведь все jdbc-приложения (SQLDeveloper, Enterprise Manager 10g, irca - скрипты создания схем) в этом случае нормально работают с XE. И где, раз так, задать параметры локали для java вручную.

Нашел - в %ORACLE_HOME%\opmn\conf\opmn.xml (и ещё в opmn.xml.BPM и opmn.xml.ESB), есть параметры запуска инстансов сервера приложений. Туда и добавил параметры "-Duser.language=en -Duser.region=us". Если запуск осуществляется вручную, то те же самые параметры добавляем к вызову java-машины, например 

java -Duser.language=e -Duser.region=us myjavaclass 


Читать далее...
Oracle+SSO
Доступ к пространственным данным должен осуществляться после авторизации пользователя. Oracle Mapviewer как составная часть платформы Oracle Application Server предоставляет возможность интеграции системы аутенфикации.
Благодаря этому возможно:
1. Аутенфицировать пользователя на доступ к пространственным данным в Mapviewer
2. Авторизовать пользователя только на доступ к ограниченному объему данных в зависимости от привилегий.

Инструкция.
1. Инсталлируем базу данных Oracle, заливаем тестовую схему MVDEMO
2. Инсталлируем OC4J
3. Инсталлируем Mapviewer
4. Настраиваем аутенфикацию через SSO
4.1 Создаем пользователей через EM или через пакет jazn.jar, добавляем пользователей в роль users:
java -jar jazn.jar -user oc4jadmin -password oracle -adduser jazn.com max max
java -jar jazn.jar -user oc4jadmin -password oracle -adduser jazn.com george george
java -jar jazn.jar -user oc4jadmin -password oracle -adduser jazn.com stacy stacy
java -jar jazn.jar -user oc4jadmin -password oracle -adduser jazn.com alex alex

java -jar jazn.jar -user oc4jadmin -password oracle -grantrole users jazn.com max
java -jar jazn.jar -user oc4jadmin -password oracle -grantrole users jazn.com george
java -jar jazn.jar -user oc4jadmin -password oracle -grantrole users jazn.com stacy
java -jar jazn.jar -user oc4jadmin -password oracle -grantrole users jazn.com alex
4.2 Далее для простоты введем поле account_mgr и в него поместим имя менеджера для этого клиента. Разбиваем по фамилии клиента: если с буквы A и до G, то менеджер alex, с G и до M - george, и т.д.

alter table customers add (account_mgr varchar2(64));
update customers set account_mgr='alex' where substr(name,1,1)>='A' and substr(name,1,1) <'G'; update customers set account_mgr='george' where substr(name,1,1)>='G' and substr(name,1,1) <'M'; update customers set account_mgr='max' where substr(name,1,1)>='M' and substr(name,1,1) <'S'; update customers set account_mgr='stacy' where substr(name,1,1)>='S';

4.3 Создаем пакет, который в обязательно порядке имеет процедуру SET_USER и CLEAR_USER. При каждом обращении будет вызываться процедура SET_USER, а по завершению запроса CLEAR_USER. Пакет запоминает имя пользователя. Это имя в дальнейшем будет использовано для ограничения видимости клиентов.

CREATE OR REPLACE PACKAGE web_user_info
AS
PROCEDURE set_user (p_name IN VARCHAR2);
PROCEDURE clear_user;
FUNCTION get_user
RETURN VARCHAR2;
END;
/

CREATE OR REPLACE PACKAGE BODY web_user_info
AS
w_name VARCHAR2 (32767);

PROCEDURE set_user (p_name IN VARCHAR2)
AS
BEGIN
w_name := LOWER (p_name);
END;

PROCEDURE clear_user
AS
BEGIN
w_name := null;
END;

FUNCTION get_user
RETURN VARCHAR2
AS
BEGIN
RETURN w_name;
END;
END;
/

4.4 Создаем представление, которое будет отбирать данные по имени пользователя.

CREATE OR REPLACE VIEW customers_view
AS
SELECT * FROM customers
WHERE account_mgr = web_user_info.get_user;

4.5 Записываем метаданные для созданного представления (представление будет не видно в MapBuilder, поэтому создаем метаданные вручную)

insert into user_sdo_geom_metadata
select 'CUSTOMERS_VIEW', column_name, diminfo, srid
from user_sdo_geom_metadata where table_name='CUSTOMERS';

insert into user_sdo_themes values('MYCUSTOMERS',NULL,'CUSTOMERS_VIEW','LOCATION',
'











');

4.6 Также необходимо добавить новый безопасный источник данных. Делается это в файле
$OC4J_HOME\j2ee\home\applications\mapviewer\web\WEB-INF\conf\mapViewerConfig.xml. После изменения необходимо перегрузить OC4J.
Источник данных должен выглядеть примерное вот так



4.7 Возьмем теперь один из примеров Oracle Maps приложения (пусть будет $OC4J_HOME\j2ee\home\applications\mapviewer\web\fsmc\tutorial\samples\themeBasedFOIVisible.html). Переименуем в themeBasedFOIVisibleSec.html. Отредактируем строчку

var themebasedfoi2 = new MVThemeBasedFOI('themebasedfoi2','mvdemo.customers');

чтобы было вот так

var themebasedfoi2 = new MVThemeBasedFOI('themebasedfoi2','mvdemo_sec.mycustomers');

4.8 Теперь необходимо прописать, что при доступе к этой странице должна осуществляться аутенфикация пользователя. Делается это в файле
$OC4J_HOME\j2ee\home\applications\mapviewer\web\WEB-INF\web.xml

Добавляем сразу за

Secure mapping demo page
MapViewer secure map rendering demo
/demo/secure-mapping.html

наш страницу

Secure mapping demo page
MapViewer secure map rendering demo
/fsmc/tutorial/samples/themeBasedFOIVisibleSec.html


4.9 Перезапускаем OC4J и заходим по адресу
http://server:8888/mapviewer/fsmc/tutorial/samples/themeBasedFOIVisibleSec.html

4.10 На экран будет попадать только информация о заказчиках, вошедшего в систему пользователя.

Читать далее...