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-машины, например
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
Данный блог является моим личным мнением и никак не связан с моим работодателем: " The views expressed on this blog are my own and do not necessarily reflect the views of Oracle."