Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Using Java Blocks Can Anyone Help?

Re: Using Java Blocks Can Anyone Help?

From: Bunyamin K. Karadeniz <bunyamink_at_havelsan.com.tr>
Date: Mon, 28 Jan 2002 06:03:11 -0800
Message-ID: <F001.003FCE6A.20020128050025@fatcity.com>

Jay ,
You need a java class loaded into database Which runs OS Commands (or .bat file) . For this look at below... ... Hope this helps . (But I could not manage to run OS commands deleting files from network altough shared.But locally it works fine.)
 

Bunyamin K.
Karadeniz           Oracle
DBA / DeveloperCivilian IT DepartmentHavelsan A.S. Eskisehir yolu 7.km Ankara TurkeyPhone: +90 312 2873565 / 1217
 

Step1. compile the java code

javac program_name.java

This operation is used to generate related class. Do not need to recompile java code, if the related class is exists. Step2. Load generated class into the Database loadjava &#8211;u user_name/password_at_connection_name program_name.class

Example : Call an OS command from a Java stored procedure (JSP)<FONT face="Courier New" size=2>

-------------------code begins here------------------------------------ 
import java.lang.Runtime; 
import java.lang.Process; 

import java.io.IOException;
import java.lang.InterruptedException;
class ExecuteCmd {
public static void main(String args[]) { System.out.println("In main");
try {
/* Execute the command using the Runtime object and get the Process which controls this command */
Process p = Runtime.getRuntime().exec(args[0]); /* Use the following code to wait for the process to finish and check the return code from the process */ try {
p.waitFor();
/* Handle exceptions for waitFor() */
} catch (InterruptedException intexc) { System.out.println("Interrupted Exception on waitFor: " + intexc.getMessage());
}
System.out.println("Return code from process"+ p.exitValue()); System.out.println("Done executing");
/* Handle the exceptions for exec() */
} catch (IOException e) {
System.out.println("IO Exception from exec : " + e.getMessage());
e.printStackTrace();
}
}
} 
-----------------code ends 
here------------------------------------------
You can write this code with any editor and save it as "executecmd.java ". Then compile this code.
If you do not have any java editor, you can also compile this program using "command prompt" as follows :
  define the path where the necessary classes and packages are hold

set PATH=%PATH%; path_name

  compile the program

javac program_name.java
After compile operation you can load this codes into the database and execute it as described above.

NOTE : Some permissions are necessary to execute java codes into the database, this operations can be made as follows : - connect database with system manager (conn sys/password_at_connectionname )
- set serveroutput on
- call dbms_java.grand_permission(username,permissionname, filename, permissions)
call
dbms_java.grand_permission(&#8216;user&#8217;,&#8217;java.io.filePermission&#8217;,&#8217;*&#8217;,&#8217;read,write,execute&#8217;) call
dbms_java.grand_permission(&#8216;user&#8217;,&#8217;java.lang.runtimePermission&#8217;,&#8217;*&#8217;,writeFileDescriptor&#8217;) &#8230;..
- commit
- log of and reconnect as the specified user You can also give all permissions to the specified user with this command :
grant JAVASYSPRIV to username
if no permissions are given to the user, the procedure are not executed correctly.
 
 
 
 
 
 

<BLOCKQUOTE
style="BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">

  To: <A href="mailto:ORACLE-L_at_fatcity.com"   title=ORACLE-L_at_fatcity.com>Multiple recipients of list ORACLE-L   Sent: Monday, January 28, 2002 1:55
  PM
  Subject: OT: Using Java Blocks Can Anyone   Help?      

  <FONT face="Times New Roman"
  size=3>hello: Can you run a Java Store Procedure as an anonymous   block?  I'm trying to do as suggested and use Java to delete an   operating system file (Win2k/NT). The only issue is that this must be   executed in script format without storing any objects or references   in the database.  Since I am using 8.1.6I figured that I   might be able to do it all as a sql file with anonymous   Java blocks.  Can this be done?  If do does anyone have an   example of the syntax that would be needed to delete a file from a   passed parameter?  I'vestarted experimenting with the below   but so far have been unsuccessful, in getting the block to   execute.  Unfortunately I know very little Java so any help   or directory would be greatly
  appreciated. Begin       
  public class Hello

  {                             

  /* Pure Java
  Code*/                 

  static public String Msg(String tail)
  {                         

  return "Hello " +
  tail;                 

  }         } Thanks in
  advance, Jay Received on Mon Jan 28 2002 - 08:03:11 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US