Est-il possible d'exécuter un fichier java jar à partir d'une base de données Oracle (10g)? Plus précisément, je suis à la recherche de planifier un travail d'Oracle à l'aideOracle Jobs exécutant Java
dbms_scheduler.create_job(...)
Lors de l'exécution, la tâche appellerait une application Java qui exécute un processus impliquant parler à une autre application via HTTP, une logique métier, puis en exécutant une procédure stockée contre la base de données en utilisant JDBC.
Normalement, un travail de chron pour faire ceci fonctionnerait bien, mais l'application de Java doit parler à la base de données en tant que propriétaire de schéma donné. Je ne peux pas stocker les informations d'identification de l'utilisateur en tant que texte brut dans la configuration de l'application pour diverses raisons de confidentialité. En bref, je me demande s'il existe un moyen de planifier un travail pour exécuter un jar, en passant les informations d'identification de l'utilisateur qui a planifié le travail. Je ne suis pas familier avec la planification des Jobs Oracle et l'exécution de Java Code à partir d'une base de données Oracle afin que tous les pointeurs dans la bonne direction seraient géniaux. Je n'ai pas vraiment été capable de trouver des documents décents pour ce que j'essaie de faire non plus, bien que je sois sûr qu'il doit exister.
EDIT: trouvé de la documentation et il semble que je pouvais faire quelque chose comme
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');
puis utilisez dbms_scheduler.create_job (...)
pour créer un emploi pour le 'recurring_java_task' . Il semble que Les arguments sont définis à l'aide
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name IN VARCHAR2,
argument_position IN PLS_INTEGER,
argument_value IN VARCHAR2);
Cela ne résout pas le problème de fournir des informations d'identification de connexion (nom d'utilisateur/mot de passe) à l'application java, cependant.
C'est ce qui a fini par être la seule vraie solution que j'ai trouvé sans avoir les problèmes d'autorisation avec la transmission des informations d'identification. Merci pour la référence! – BuffaloBuffalo