是否可以在Oracle(10g)数据库中运行java jar文件?更具体地说,我希望使用
安排oracle工作dbms_scheduler.create_job(...)
运行时,作业将调用Java应用程序,该应用程序执行一个过程,该过程涉及通过HTTP,某些业务逻辑与另一个应用程序通信,然后使用JDBC对数据库执行存储过程。
通常,执行此操作的chron作业可以正常工作,但java应用程序需要作为给定的Schema Owner与数据库通信。出于各种隐私原因,我无法将用户凭据作为纯文本存储在应用程序配置中。
简而言之,我想知道是否有办法安排作业执行jar,传递安排作业的用户的凭据。
我不熟悉Oracle作业的调度和从Oracle数据库运行Java代码,因此任何指向正确方向的指针都会很棒。虽然我确信它必须存在,但我还没有找到任何适合我正在尝试做的文档。
编辑:发现了一些文档,看起来我可以做像这样的事情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'创建作业。似乎使用
设置了ArgumentsDBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
job_name IN VARCHAR2,
argument_position IN PLS_INTEGER,
argument_value IN VARCHAR2);
但仍然无法解决向java应用程序提供连接凭据(用户名/密码)的问题。
答案 0 :(得分:3)
您可以将Java IN放入数据库中。 Oracle 10.2 Java Dev Guide。这使用实际引用内部会话的特殊JDBC连接字符串。有一些特殊的考虑因素,即没有GUI渲染等。你也可以在pl / sql中调用和包装它。