Ошибка при вызове java из PL/SQL

Когда я вызываю класс JAVA из PL/SQL, я получаю следующую ошибку

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.

Версия базы данных 12c.

ПЛ/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
}

person TAT    schedule 23.05.2017    source источник
comment
Опубликуйте минимально воспроизводимый пример, включая код java и PL/SQL, который вы используете; метод, который вы используете для загрузки Java в базу данных; и пример того, как вы вызываете процедуру/функцию, которая генерирует ошибку.   -  person MT0    schedule 23.05.2017
comment
Если вы выполняете функцию Java (вне Oracle) с теми же входными параметрами, выдает ли она исключение?   -  person MT0    schedule 23.05.2017
comment
на самом деле этот код Package + Java вызывается с другой страницы форм оракула. С другой страницы, когда мы звоним, это работает... но мне нужно вызвать это с этими конкретными параметрами, что вызывает эту ошибку. Проверим это и сообщим   -  person TAT    schedule 23.05.2017
comment
Похоже, что новая комбинация параметров заставляет ваш метод Java бросаться. Итак, вам нужно отладить код Java.   -  person APC    schedule 23.05.2017
comment
Если это поможет, используйте ods.setURL("jdbc:default:connection"); для создания объекта подключения вместо подхода с именем класса драйвера. В приведенной выше строке используется среда подключения по умолчанию.   -  person aRise    schedule 05.06.2017


Ответы (2)


1) В БД set serveroutput on и exec dbms_java.set_output(10000000); позволяет видеть трассировку стека java в БД.

2) Неправильная публикация класса Java. Размер персонажа имеет значение. Измените java.lang.string. в java.lang.String.

person Arkadiusz Łukasiewicz    schedule 23.05.2017

Получил ИСПРАВЛЕНИЕ от

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

Нам нужно дать ГРАНТЫ, например, после входа в систему как APPS (пожалуйста, посмотрите ссылку для получения более четкой информации - не удалось скопировать и вставить эти команды, поэтому я набрал - в приведенных ниже командах могут быть некоторые опечатки) приведенные ниже команды исправили многие проблемы в нашей 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');

person TAT    schedule 11.10.2017