Страницы

Поиск по вопросам

понедельник, 10 июня 2019 г.

Отправка пользователю сообщения посредством MSG вызваным из JAVA

Имеется следующий JAVA код созданый и скомпилированый в БД Oracle.
create or replace and compile java source named windowserrors as public class OpenWindows { public static void ErrorText() { try { Process proc = Runtime.getRuntime().exec("Msg * ошибка"); while (true) { try { proc.waitFor(); break; } catch (Exception t) { t.getMessage(); } } } catch(Exception e) { e.getMessage(); } } }
Этот код должен запускать рассылку сообщений (для примера всем пользователям), о том, что совершена ошибка. Написана простая процедура, которая должна его запускать на выполнение, а так же, собственно, сам вызов процедуры.
PROCEDURE Rise_error AS LANGUAGE JAVA NAME 'OpenWindows.ErrorText()';
BEGIN p_oms_patreg.Rise_error; END;
Но, при вызове процедуры ORACLE отрабатывает, но не выводится окно с сообщением. Хотя если запустить данный код на исполнение, например, в Eclipse - появляется соответствующее окно.
Перерыв достаточно много информации, так и не нашел подобный вариант реализации.


Ответ

Проверил, код выполняется нормально.
Убрал проглатывание ошибок:
create or replace and compile java source named windowserrors as public class OpenWindows { public static void ErrorText() throws Exception { Process proc = Runtime.getRuntime().exec("Msg * ошибка"); proc.waitFor(); } }
Создал процедуру:
CREATE OR REPLACE PROCEDURE Rise_error AS LANGUAGE JAVA NAME 'OpenWindows.ErrorText()';
Вызвал ее:
begin rise_error(); end;
Первый раз, вылезло ORA-29532 с сообщением о нехватке привилегий. Выдал привилегии, создал новое подключение к БД и выполнил заново. На сервере БД появилось сообщение (из-за кодировки поехала кириллица, но это уже другой вопрос).
Убедитесь, что:
отключен перехват ошибок в Java (смотрите код выше); выполняется именно нужная процедура (нет ли здесь путаницы: p_oms_patreg.Rise_error;); наличие сообщений проверяется на сервере БД, на котором выполняется код.

Комментариев нет:

Отправить комментарий