Как установить класс Java в Oracle на Solaris - PullRequest
2 голосов
/ 17 июня 2009

У меня есть простой класс Java, который вычисляет SHA1, и я хочу использовать его из процедур PLSQL в Oracle. Следующие советы от: SHA1, SHA256, SHA512 в Oracle бесплатно без использования DBMS_CRYPTO (в моем простом случае используется unly SHA1, не требуются никакие jar-файлы и состоит только из sha1.class, который импортирует java.security и java.io)

Я скомпилировал sha1.java с:

javac -target 1.2 -source 1.2 sha1.java

и установил этот sha1.class в моей тестовой среде Windows:

Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

К сожалению, я должен установить его на Solaris с:

Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production

Я пытался, но эти попытки заканчивались неудачей:

c:\test>loadjava -thin -user ***** -resolve sha1.class
Error while creating class sha1
    ORA-29545: badly formed class:: User has attempted to load a class (sha1) into a restricted package. Permission can be granted using  dbms_java
.grant_permission(<user>, LoadClassInPackage...

The following operations failed
    class sha1: creation
exiting  : Failures occurred during processing

EDITED

Я попытался использовать источник .java вместо .class и получил (в переводе с польского) ::

c:\mn>loadjava -thin -user ****** -resolve sha1.java
Error while creating sha1
    ORA-06576: not a valid function or procedure name

Error while computing shortname of sha1
    ORA-06550: line 1, column 13:
PLS-00201: must be declared 'DBMS_JAVA.SHORTNAME' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

The following operations failed
    source sha1: creation
exiting  : Failures occurred during processing

Что я должен сделать, чтобы загрузить этот класс или источник в Oracle на Solaris?

Ответы [ 2 ]

1 голос
/ 18 июня 2009

Если у вас есть разрешения, я догадываюсь, что вам нужно либо иметь свой класс в пакете java, либо имя класса в нижнем регистре сбивает с толку верификатор в Solaris (чувствительная к регистру среда, в которой имена классов должны начинаться с заглавной буквы) письмо).

Вместо

public class shai{

}

Попробуйте это с пакетом и допустимым именем класса.

package com.company.Util
public class Shai{

}
1 голос
/ 17 июня 2009

Вы должны запустить пакет DBMS_JAVA.grant_permission (подробности должны быть в вашем сообщении об ошибке, а в некоторых случаях также отображаться в файле трассировки в файловой системе сервера базы данных).

Подключиться как SYS и из интерфейса SQL:

begin
 dbms_java.grant_permission(........);
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...