Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к javaклассу из класса другого пользователя 
:(
    Опции темы
Appolina
Дата 14.7.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.1.2008

Репутация: нет
Всего: нет



Привет!

Кто-нибудь сталкивался с такой проблемой: необходимо использовать java-классы одного пользователя из под другого.
Классы загружаются с помощью pl/sql developer'а и появляются в списке user_object'ов, все ок. 
Класс пользователя supplier: 
Код

create or replace and compile java source named test_grant as
public class test_grant
{


      public static void method() 
    {
    int i;
    }
}

Использующий его класс пользователя consumer:
Код

create or replace and compile java source named test_consumer as
public class test_consumer
{
public static void test()
{
test_grant t = null;
// и так тоже пробовали: supplier.test_grant t = null;
}
}

Для того, чтобы разрешить ссылку на используемы класс из под пользователя supplier:
grant execute on "test_grant" to consumer;
А из под consumer по всякому пробовали:
alter java class "test_consumer" resolver ((* consumer)(* supplier)(* PUBLIC)) authid current_user;
alter java class "test_consumer" resolver ((* consumer)(* supplier)(* PUBLIC)) authid definer;

Несмотря на все эти ухищрения при компиляции класса test_consumer выдается ошибка cannot resolve symbol на строке "test_grant t = null;"
Если создать оба класса под одним пользователем, то все компилируется.
Oracle 10.2g
PM MAIL   Вверх
DimW
Дата 14.7.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



если я все правильно понимаю то при создании класса в схеме этот класс относится к пакету с названием схемы в которой он создан.
для того что бы его поюзать достаточно прописать импорт:
Код

create or replace and compile java source named test_consumer as
import supplier.*;
public class test_consumer
{
    public static void test()
    {
        test_grant t = null;
    }
}

но это теория, сам не проверял.
PM MAIL ICQ   Вверх
Appolina
Дата 14.7.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.1.2008

Репутация: нет
Всего: нет



Спасибо, но это, к сожалению не помогает. Вообще, какую бы чушь не написала после import, класс, не обращая на все это внимания компилируется. Проблема частично может быть решена загрузкой классов с помощью loadjava с обязательным ключом synonym.
Вот в таком виде у меня получилось:
Код

loadjava -user supplier/supplier -andresolve -grant consumer -synonym test_grant.java

Вроде бы это означало просто создание синонима, но, видимо происходит параллельно что-то еще тк отдельное создание аналогичного синонима без использоывания loadjava не помогло. 
PM MAIL   Вверх
LSD
Дата 14.7.2009, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



А grant на эти классы ты пользователю дала?


P.S. А имена классов остаются как есть, никаких префиксов схемы к ним не добавляется.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Appolina
Дата 15.7.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.1.2008

Репутация: нет
Всего: нет



Да, дала. Вот в таком виде:
Код

grant execute on "test_grant" to consumer;

из под пользователя supplier.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.