You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Activate Java Code in Oracle

1. Java-Source: SOSSchedulerCommand.java

vor der Klassendefinition bitte einfügen

  create or replace and compile java source named
    SOSSchedulerCommand
  as

und hinter der letzten Klammer ein Semikolon ((wink)

> Quell-Code mit SQL Worksheet in DB übergeben

2. Java-Quelle: DocumentFactorySchedulerCommand.java

vor der Klassendefinition bitte einfügen

  create or replace and compile java source named
    DocumentFactorySchedulerCommand
  as

und hinter der letzten Klammer ein Semikolon ((wink)> Quell-Code mit SQL Worksheet in DB übergeben

3. Wrapper Procedure: Scheduler_Add_Order.sql

   PL/SQL-Prozedur mit folgendem Inhalt erzeugen:
   create or replace procedure SCHEDULER_ADD_ORDER(host varchar2, port number, letter number, status number, model number, job_chain varchar2)
   as language java
   name 'DocumentFactorySchedulerCommand.addOrder(java.lang.String, int, int, int, int, java.lang.String)';

4. Ausführungsberechtigungen für TCP/UDP-Verbindungen

a) Bei Verwendung von TCP:

   call dbms_java.grant_permission( 'FACTORY', 'SYS:java.net.SocketPermission', 'localhost', 'resolve' );
   call dbms_java.grant_permission( 'FACTORY', 'SYS:java.net.SocketPermission', '127.0.0.1:4363', 'connect,resolve' );

b) Bei Verwendung von UDP (default):

   call dbms_java.grant_permission( 'FACTORY', 'SYS:java.net.SocketPermission', 'localhost:1024-', 'listen,resolve' );
   call dbms_java.grant_permission( 'FACTORY', 'SYS:java.net.SocketPermission', '127.0.0.1:4363', 'accept,resolve' );

A. Aufruftest mittels SQL Worksheet:

a) Prozedur

   /* host, port, letter, status, model, job_queue */
   CALL SCHEDULER_ADD_ORDER( 'localhost', 4363, 4711, 0, 2, 'factory_print' );

b) Debugging

   set serveroutput on size 5000
   call dbms_java.set_output(5000);

B. Zugriff via JDBC-Treiber muss getauscht werden

Sollen DB-Zugriffe erfolgen, dann muss der JDBC-Treiber mit einer Oracle-internen Connection verwendet werden

/** Oracle Version */

 /**  Datenbankverbindung herstellen */
   public void db_connect() throws SQLException\{
      try \{
         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
         conn =  DriverManager.getConnection("jdbc:default:connection:");  errState = 1;
      \} catch(SQLException e) \{
         throw new SQLException ("DB connect failed" + e);
      \}
   \}

/** Java Version */
/** Datenbankverbindung herstellen */

   public void db_connect() throws SQLException\{
      try \{
         DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
         conn =  DriverManager.getConnection("jdbc:oracle:thin:@sag:1521:sag","sosdev","sosdev");
      \} catch(SQLException e) \{
         throw new SQLException ("DB connect failed" + e);
      \}
   \}
  • No labels