Oracle Jobs执行Java

时间:2010-10-22 19:19:09

标签: java oracle jdbc scheduled-tasks

是否可以在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'创建作业。似乎使用

设置了Arguments
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE (
   job_name                IN VARCHAR2,
   argument_position       IN PLS_INTEGER,
   argument_value          IN VARCHAR2);

但仍然无法解决向java应用程序提供连接凭据(用户名/密码)的问题。

1 个答案:

答案 0 :(得分:3)

您可以将Java IN放入数据库中。 Oracle 10.2 Java Dev Guide。这使用实际引用内部会话的特殊JDBC连接字符串。有一些特殊的考虑因素,即没有GUI渲染等。你也可以在pl / sql中调用和包装它。