簡體   English   中英

從PL / SQL調用java時出錯

[英]Error while calling java from PL/SQL

當我從PL / SQL調用JAVA類時,我得到以下錯誤

ORA-29532 Java call terminated by uncaught java exception

我已經提到了一個注意事項-Doc:1420943.1

這要求檢查值( show parameters shared_servers )並設置為零,如果它不為零。 但是價值已經是0。

請幫助我確定導致問題的原因。

- - - - - - - - - - - -更多信息 - - - - - - - - - - - - - ----------

我們使用loadjava -user apps/password - force -verbose -resolve java.class將java類加載到Oracle DB中。

數據庫版本12c。

PL / SQL:

l_retCode := initialize(para_1 => l_para1,
                        Para_2 => l_para2,
                        para_3 => l_para3);

初始化函數定義如下

function initialize(para_1 VARCHAR2, para_2 VARCHAR2, para_3 VARCHAR2)
return NUMBER as LANGUAGE JAVA NAME
'com.snlp.XXWClass.initialize(java.lang.string,java.lang.string,java.lang.string) return int'

Java代碼:

public static int initialize(s String, s1 String , s2 String){
  // logic goes here
}

1)在DB set serveroutput onexec dbms_java.set_output(10000000); 它允許在db中查看java堆棧跟蹤。

2)錯誤地發布java類。 字符大小很重要。 更改java.lang.string。 到java.lang.String。

得到了FIX

http://www.oracle.com/technetwork/database/enterprise-edition/calling-shell-commands-from-plsql-1-1-129519.pdf

我們需要在登錄后給予GRANTS作為APPS(請參閱鏈接以獲取更清晰的信息 - 無法復制粘貼這些命令,因此,我輸入 - 在下面的命令中可能會有一些拼寫錯誤)以下命令修復了我們JAVA中的許多問題來自Oracle的電話

 dbms_java.grant_permission( '<user_name>', 'SYS:java.util.PropertyPermission', '<property_name>', 'write' ); dbms_java.grant_permission( '<user_name>', 'SYS:java.util.RuntimePermission', 'writeFileDescriptor', '' ); dbms_java.grant_permission( '<user_name>', 'SYS:java.util.RuntimePermission', 'readFileDescriptor', '' ); exec DBMS_JAVA.Grant_Permission( '<user_name>', 'SYS:java.io.FilePermission','<<ALL FILES>>','read,write,execute,delete'); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM