Вызов через java (Oracle JVM) исполняемого файла под HP-UX

Irenicus
Дата: 17.11.2008 13:42:40
Никак не могу запустить на выполнение программу на сервере БД через СУБД Oracle, используя java-функцию (т.е., через Java Virtual Machine).
Подскажите, пожалуйста - возможно, требуется подкрутить настройки Oracle Server на HP-UX?

Версия СУБД Oracle: 10.2.0.4
Версия ОС HP-UX: 11.23

Что интересно, на Windows XP с той же версией Oracle все работает.

Подробнее о моих действиях:
1. Создал java-код в схеме TEST_USER (Runtime.getRuntime().exec(cmd); result=process.waitFor();)
2. Выдал требуемые права на java:
dbms_java.grant_permission('TEST_USER','SYS:java.io.FilePermission', '<<ALL FILES>>','execute');
dbms_java.grant_permission('TEST_USER','SYS:java.lang.RuntimePermission', 'readFileDescriptor', '*');
dbms_java.grant_permission('TEST_USER','SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '*');
3. Выдал GRANT JAVAUSERPRIV TO TEST_USER.
4. Вызываю функцию:
DBMS_OUTPUT.PUT_LINE(javaTest_f('/bin/sh – c ls >/tmp/javaTest.txt'));
5. Все завершается корректно и мгновенно, но на сервере ничего не происходит (ls не запускается, файл не создается.). Пробовал запускать другие программы, не срабатывают.


Сам java-класс, на случай, если я что-то делаю не так:
CREATE OR REPLACE JAVA SOURCE NAMED "DWH_RM" AS
import java.io.*;
public class javaTest
{
  public static int start(String cmd)
  {
      int result=0;
      try
      {
         Process process = Runtime.getRuntime().exec(cmd);
         result=process.waitFor();

      }
      catch (Exception e)
      {
         e.printStackTrace();
      } 
              return result;
  }
};
Timm
Дата: 17.11.2008 14:21:26
Попробуй выполнить
/bin/sh – c ls >/tmp/javaTest.txt
в консоли. Увидишь, что ось сругнется. Т.к. способ запуска внешнего приложения кривой (не вычитывается error/output stream), вызов "виснет". Правильный способ запуска внешнего приложения.