JAVA file permissions

From: CenturionX <darwinbaldrich_at_gmail.com>
Date: Tue, 7 Jul 2009 08:07:14 -0700 (PDT)
Message-ID: <facc3fd1-3df9-4c55-a520-150294252641_at_d36g2000prb.googlegroups.com>



Hello,

I'm working with ORACLE 10.2.0.4.0 on windows server 2003 R2.

I need to execute a DOS batch file. I used some code i found in the web (see the code below).

When i try to give permission to execut ethe file:

   EXEC DBMS_JAVA.grant_permission('CMS', 'SYS.java.io.FilePermission', 'K:\Mesr\DBP_EXEC_FROM_ORA\', 'read ,write, execute');

I get this error:

ORA-29532: Java call terminated by uncaught Java exception: java.lang.ClassNotFoundException: sys/java/io/filepermission ORA-06512: at "SYS.DBMS_JAVA", line 313
ORA-06512: at line 1

Somebody has a good idea on this.

THANKS. CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "Host" AS import java.io.*;
public class Host {
  public static void executeCommand(String command) {     try {

      String[] finalCommand;
      if (isWindows()) {
        finalCommand = new String[4];
        // Use the appropriate path for your windows version.
        finalCommand[0] = "C:\\windows\\system32\\cmd.exe";  //
Windows XP/2003
        //finalCommand[0] = "C:\\winnt\\system32\\cmd.exe";  //
Windows NT/2000
        finalCommand[1] = "/y";
        finalCommand[2] = "/c";
        finalCommand[3] = command;
      }
      else {
        finalCommand = new String[3];
        finalCommand[0] = "/bin/sh";
        finalCommand[1] = "-c";
        finalCommand[2] = command;
      }

      final Process pr = Runtime.getRuntime().exec(finalCommand);
      pr.waitFor();

      new Thread(new Runnable(){
        public void run() {
          BufferedReader br_in = null;
          try {
            br_in = new BufferedReader(new InputStreamReader
(pr.getInputStream()));
            String buff = null;
            while ((buff = br_in.readLine()) != null) {
              System.out.println("Process out :" + buff);
              try {Thread.sleep(100); } catch(Exception e) {}
            }
            br_in.close();

}
catch (IOException ioe) { System.out.println("Exception caught printing process output."); ioe.printStackTrace();
}
finally { try { br_in.close(); } catch (Exception ex) {}
}
} }).start(); new Thread(new Runnable(){ public void run() { BufferedReader br_err = null; try { br_err = new BufferedReader(new InputStreamReader (pr.getErrorStream())); String buff = null; while ((buff = br_err.readLine()) != null) { System.out.println("Process err :" + buff); try {Thread.sleep(100); } catch(Exception e) {} } br_err.close();
}
catch (IOException ioe) { System.out.println("Exception caught printing process error."); ioe.printStackTrace();
}
finally { try { br_err.close(); } catch (Exception ex) {}
}
} }).start();

    }
    catch (Exception ex) {
      System.out.println(ex.getLocalizedMessage());     }
  }

  public static boolean isWindows() {
    if (System.getProperty("os.name").toLowerCase().indexOf ("windows") != -1)

      return true;
    else
      return false;
  }

};
/
show errors java source "Host"

CREATE OR REPLACE PROCEDURE host_command (p_command IN VARCHAR2) AS LANGUAGE JAVA
NAME 'Host.executeCommand (java.lang.String)'; /
show errors

EXEC DBMS_JAVA.grant_permission('CMS', 'SYS.java.io.FilePermission', 'K:\Mesr\DBP_EXEC_FROM_ORA\', 'read ,write, execute');

EXEC Dbms_Java.Grant_Permission('CMS',
'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '');
EXEC Dbms_Java.Grant_Permission('CMS',
'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '');
Received on Tue Jul 07 2009 - 10:07:14 CDT

Original text of this message