2010-10-22 4 views
0

Возможно ли запустить java-файл jar из базы данных Oracle (10g)? Более конкретно, я ищу, чтобы запланировать работу оракула, используяOracle Jobs выполняет Java

dbms_scheduler.create_job(...) 

При запуске задания будет вызывать приложения Java, который выполняет процесс, включающий разговор с другим приложением через HTTP, некоторые бизнес-логики, то выполнение хранимой процедуры против базы данных с использованием JDBC.

Как правило, работа с хроном для этого будет работать нормально, но приложению java необходимо поговорить с базой данных в качестве данного владельца схемы. Я не могу хранить учетные данные пользователя как обычный текст в конфигурации приложения по различным причинам конфиденциальности.

Вкратце, мне интересно, есть ли способ запланировать задание выполнить банку, передав учетные данные пользователя, который назначил задание.

Я не знаком с планированием Oracle Jobs и запуском Java-кода из базы данных Oracle, поэтому любые указатели в правильном направлении были бы замечательными. Я действительно не смог найти достойную документацию для того, что я пытаюсь сделать, хотя я уверен, что она должна существовать.

EDIT: нашел в документации, и это похоже, что я мог бы сделать что-то вроде

DBMS_SCHEDULER.create_program (
    program_name  => 'recurring_java_task', 
    program_type  => 'EXECUTABLE', 
    program_action  => 'java -jar /path/to/recurring-task.jar', 
    number_of_arguments => 2, 
    enabled    => TRUE, 
    comments   => 'Program to perform cleanup'); 

, а затем использовать dbms_scheduler.create_job (...)

создать задание для 'recurring_java_task' , Похоже, что аргументы задаются с помощью

DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
    job_name    IN VARCHAR2, 
    argument_position  IN PLS_INTEGER, 
    argument_value   IN VARCHAR2); 

Это еще не решает вопрос о поставке учетных данных подключения (имя пользователя/пароль) для приложения Java, хотя.

ответ

3

Вы можете поместить Java IN в базу данных. Oracle 10.2 Java Dev Guide. Это использует специальную строку соединения JDBC, которая фактически ссылается на внутренний сеанс. Существуют специальные соображения, то есть нет визуализации GUI и т. Д. Вы также можете вызвать и обернуть это в pl/sql.

+0

Это то, что в конечном итоге стало единственным реальным решением, которое я нашел с отсутствием полномочий на авторизацию с передачей учетных данных. Спасибо за ссылку! – BuffaloBuffalo