从 PL/SQL 调用 java 时出错
Error while calling java from PL/SQL
当我从 PL/SQL 调用 JAVA class 时,出现以下错误
ORA-29532 Java call terminated by uncaught java exception
我已经提到了 metalink 注释 -Doc : 1420943.1
这要求检查值 (show parameters shared_servers
),如果不为零则设置为零。
但该值已经是 0.
请帮我确定是什么导致了这个问题。
--------------------更多信息-------------------- --------------
我们使用 loadjava -user apps/password - force -verbose -resolve java.class
将 java class 加载到 Oracle 数据库中。
数据库版本 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) 在数据库中 set serveroutput on
和 exec dbms_java.set_output(10000000);
它允许在数据库中查看 java 堆栈跟踪。
2) 发布java class 错误。字符大小很重要。改变java.lang.string。至 java.lang.String.
从
获得了 FIX
我们需要在登录为 APPS 后给予 GRANTS(请参阅 link 以获得更清晰的信息 - 无法复制粘贴这些命令,所以我输入 - 以下命令中可能有一些拼写错误)以下命令修复了我们从 Oracle
调用 JAVA 中的许多问题
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');
当我从 PL/SQL 调用 JAVA class 时,出现以下错误
ORA-29532 Java call terminated by uncaught java exception
我已经提到了 metalink 注释 -Doc : 1420943.1
这要求检查值 (show parameters shared_servers
),如果不为零则设置为零。
但该值已经是 0.
请帮我确定是什么导致了这个问题。
--------------------更多信息-------------------- --------------
我们使用 loadjava -user apps/password - force -verbose -resolve java.class
将 java class 加载到 Oracle 数据库中。
数据库版本 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) 在数据库中 set serveroutput on
和 exec dbms_java.set_output(10000000);
它允许在数据库中查看 java 堆栈跟踪。
2) 发布java class 错误。字符大小很重要。改变java.lang.string。至 java.lang.String.
从
获得了 FIX我们需要在登录为 APPS 后给予 GRANTS(请参阅 link 以获得更清晰的信息 - 无法复制粘贴这些命令,所以我输入 - 以下命令中可能有一些拼写错误)以下命令修复了我们从 Oracle
调用 JAVA 中的许多问题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');