Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
Есть класс, который сканирует определенный каталог и информацию о найденных файлов записывает в таблицу.

У меня на машине все работает, на другом сервере уже не работает с ошибкой:
ORA-29532: вызов Java прерван неустановленным исключением Java: java.security.AccessControlException: the Permission (java.io.FilePermission /home/oracle11/dir read) has not been granted to USER_NAME. The PL/SQL to grant this is dbms_java.grant_permission( 'USER_NAME', 'SYS:java.io.FilePermission', '/home/oracle11/dir', 'read' )

Какие вообще необходимы гранты для загрузки и отработки данного класса.

Загружаю через скрипт
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED

Спасибо
28 янв 14, 17:59    [15483994]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
-2-
Member

Откуда:
Сообщений: 15330
kasik
ORA-29532: вызов Java прерван неустановленным исключением Java: java.security.AccessControlException: the Permission (java.io.FilePermission /home/oracle11/dir read) has not been granted to USER_NAME. The PL/SQL to grant this is dbms_java.grant_permission( 'USER_NAME', 'SYS:java.io.FilePermission', '/home/oracle11/dir', 'read' )

Какие вообще необходимы гранты для загрузки и отработки данного класса.
глаза-то разуй, не первый день на форуме.
28 янв 14, 18:10    [15484059]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
Конечно же это я вижу, я могу просто дать права на чтение всех файлов от куда угодно:
dbms_java.grant_permission( 'USERNAME', 'SYS:java.io.FilePermission', '<<ALL FILES>>', 'read');

Интересует что вообще пользователю необходимо что бы начать работать с процедурой, использующей java-класс, который в свою очередь использует возможность доступа к ФС сервера?

PS: По поводу последнего решение выше, а что касается остального....
30 янв 14, 17:29    [15496106]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
Как и думалось на чистом стенде возникли ошибки с грантами на скрине.

К сообщению приложен файл. Размер - 8Kb
4 фев 14, 15:00    [15516908]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
Из книги Тома Кайта нашел следующее:
автор
Дело в том, что для успешного сопоставления типов данных должны указываться полные (fully qualified) имена типов. Хотя класс java.lang неявно импортируется в Java-программах, он не импортируется на уровне языка SQL. Получив это сообщение об ошибке, необходимо проверить сопоставление типов данных и убедиться, что используются полные имена типов данных Java и что они в точности совпадают с именами имеющихся типов данных. Соответствующий Java-метод определяется по сигнатуре, а сигнатура создается на основе используемых типов данных. Минимальное различие в типах входных данных, результатов или регистре символов в имени приведет к несовпадению сигнатур, и сервер Oracle не найдет соответствующий код.


Но у меня используются как раз полное описание типов:
CREATE OR REPLACE PROCEDURE get_dirlist(p_directory in varchar2, p_directory1 in varchar2, f_del in number) 
AS LANGUAGE JAVA NAME 'AV_DirList.GetList(java.lang.String, java.lang.String, java.lang.Byte)';
/


что еще может давать данный эксепшн?
4 фев 14, 15:10    [15517020]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
Это такой сложный вопрос? или очень легкий...

Не нашел по поводу данной ошибки ничего...

Может хоть какие нибудь соображения у кого есть?
4 фев 14, 18:47    [15518742]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
MazoHist
Guest
автор
Какие вообще необходимы гранты для загрузки и отработки данного класса

Права нужны не на загрузку данного класса, а на доступ к ФС по указанному пути пользователю, использующему данный класс. У Кайта это должно быть описано где-то рядом. А оператор для выдачи прав приведен в тексте ошибки.
4 фев 14, 18:59    [15518822]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
я написал еще в 15496106 что права на чтение всех файлов из ФС дал. Но теперь вот ошибка с нуллпоинтер.
4 фев 14, 19:03    [15518852]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
MazoHist
Guest
nullPointerException - это необработанная runtime ошибка в самом java-классе.
4 фев 14, 19:09    [15518880]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
то есть вы говорите что не в грантах дело а в джава классе? но на другой машине он отрабатывает без ошибок
4 фев 14, 19:13    [15518913]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
eev
Member

Откуда: -
Сообщений: 1156
kasik
то есть вы говорите что не в грантах дело а в джава классе? но на другой машине он отрабатывает без ошибок

елки, что скрин с микроскопом - ладно.
но если вы работаете с каталогами, вы уверены что другая бд видит эти каталоги? мало того что "видит", ещё права на уровне ОС должны быть.
вот даже если просто код джавовский натравить на несуществующий каталог - трудно догадаться с какой ошибкой вылетит :).
4 фев 14, 21:43    [15519479]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
вывод значит - дело в классе, там надо вставить обработчик исключений?
4 фев 14, 21:47    [15519489]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
Репродуцировал я данную ошибку!

Переименовав каталог. Но на тестовом стенде, где не работает этот каталог присутствует, значит остается одно - не может получить доступ на уровне операционной системы.

Поэтому вопрос от какого пользователя работает java-машина оракла, какому мне надо дать права на чтение данного каталога? Работа с файлами идет и через plsql и там все нормально читает.

Спасибо
5 фев 14, 12:58    [15521992]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
На одном серсере все отлично работает на другом вот данная ошибка - nullPointerException.

Что именно мне сравнить на том и на другом сервере? Не хочется другой метод реализовывать, если с этим все работает.
6 фев 14, 11:50    [15527315]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1640
Неясно, что надо изменить, потому что неясна причина ексепшена.

Жава хороша тем, что в большинстве случаев байт-код можно декомпилировать и вставить сколь угодно подробный дебаг.

Копайте.
6 фев 14, 11:56    [15527355]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "jDirList" AS
import java.io.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class AV_DirList {
 
  public static void GetList(String directory, String directory_rdms, Byte f_del) throws SQLException {
    File path = new File(directory);
    File[] list = path.listFiles();
    String element;
    String fname;
    String ext;
    String dt;
    int ind;

	if (f_del == 1)
	{
		#sql { delete from DIR_LIST};
	};
	
    for(int i = 0; i < list.length; i++) 
    {
      element = list[i].getName();
  	
      dt = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss").format( new Date(list[i].lastModified()) );
    	
      ind = element.lastIndexOf('.');
        
      if (ind>0)
    	{
    		fname = element.substring(0, ind);
    		ext = element.substring(ind+1, element.length());
    	}
        else 
    	{
    		ext = "";
    		fname = element;
    	};
      
      #sql { INSERT INTO DIR_LIST (FILENAME, NAME, EXTENTION, DT, DIR_FULL, DIR_RDMS) VALUES (:element, :fname, :ext, :dt, :directory, :directory_rdms)};
   };
   #sql { COMMIT };
  }
};
/


Я с java не оч подскажите пожалуйста куда и какие вставить обработчики эксепшнов?

Спасибо
6 фев 14, 12:00    [15527384]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1640
Для начала замените

throws SQLException


на

throws Exception


и в коде, вызывающем этот класс, сделайте
try { вызов } catch (Exception e) e.printStackTrace();


Как вариант, весь код внутри этого класса обернуть в такой try-catch, показывающий вид эксепшена и место его возникновения.

Далее, если ясно не станет, можете добавлять промежуточный дебаг, пока не дойдете до места возникновения проблемы.

Вот только с SQLJ я вообще не работал, не знаю особенностей.

Поэтому мои советы для чистой Java.
6 фев 14, 12:10    [15527463]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
eev
Member

Откуда: -
Сообщений: 1156
kasik
На одном серсере все отлично работает на другом вот данная ошибка - nullPointerException.

Что именно мне сравнить на том и на другом сервере? Не хочется другой метод реализовывать, если с этим все работает.

какая ОС на том и другом (вида? ищи гранты на кадалоги под винду, то что выше ты якобы дал - это не на уровне ОС)? какая версия БД? используются ли сетевые папки?
6 фев 14, 12:16    [15527525]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
dba123
Member

Откуда:
Сообщений: 1054
kasik,

У Вас ошибка в коде, покажите
desc dir_list
6 фев 14, 12:19    [15527567]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
dba123
Member

Откуда:
Сообщений: 1054
dba123,

точнее ddl
6 фев 14, 12:20    [15527578]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
CREATE TABLE DIR_LIST (
  DIR_RDMS  VARCHAR2(100 BYTE),
  DIR_FULL  VARCHAR2(1000 BYTE),
  FILENAME  VARCHAR2(4000 BYTE),
  NAME      VARCHAR2(512 BYTE),
  EXTENTION VARCHAR2(10 BYTE),
  DT        VARCHAR2(50 BYTE)
)
6 фев 14, 12:36    [15527726]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
eev
какая ОС на том и другом (вида? ищи гранты на кадалоги под винду, то что выше ты якобы дал - это не на уровне ОС)? какая версия БД? используются ли сетевые папки?


Ось и там и там HP Unix
oracle 11
сетевые папки не используются, они локальные для сервера
6 фев 14, 12:38    [15527739]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
Если бы ошибка была в sql то вылетело бы с oracle.jdbc.driver.OracleSQLException
6 фев 14, 12:51    [15527863]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
dba123
Member

Откуда:
Сообщений: 1054
kasik
CREATE TABLE DIR_LIST (
  DIR_RDMS  VARCHAR2(100 BYTE),
  DIR_FULL  VARCHAR2(1000 BYTE),
  FILENAME  VARCHAR2(4000 BYTE),
  NAME      VARCHAR2(512 BYTE),
  EXTENTION VARCHAR2(10 BYTE),
  DT        VARCHAR2(50 BYTE)
)
шутник :)
я просил с другого сервера ddl
оригинальный dir_list Кайта с asktom.oracle.com работает?
6 фев 14, 13:11    [15528063]     Ответить | Цитировать Сообщить модератору
 Re: Какие нужны grant'ы для работы с файлами из java-класса...  [new]
kasik
Member

Откуда:
Сообщений: 2142
dmdmdm,

Вставил я
	try { 
 } 
   catch (Exception e) {e.printStackTrace();}


и он просто проглатил ошибочный файл, то есть в результатирующей таблице его нет, и ошибка не вылетела все отработало, как сделать что бы был вывод ошибки?
6 фев 14, 13:15    [15528092]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить