2010-10-22 38 views
0

是否可以從Oracle(10g)數據庫中運行java jar文件?更具體地說,我期待計劃使用Oracle作業正在執行Java

dbms_scheduler.create_job(...) 

的Oracle作業運行時,作業將調用執行涉及通過HTTP,一些業務邏輯說話到另一個應用程序的過程的Java應用程序,然後執行存儲過程針對使用JDBC的數據庫。

通常情況下,做這件事的時間工作可以正常工作,但是java應用程序需要作爲給定的架構所有者與數據庫交談。出於各種隱私原因,我無法將用戶憑據作爲純文本存儲在應用程序配置中。

總之,我想知道是否有辦法安排一個工作來執行一個罐子,傳遞安排工作的用戶的憑據。

我不熟悉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」創建工作。好像參數使用

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 2010-10-28 14:08:25