SQLJ.DB2_INSTALL_JAR stored procedure

SQLJ.DB2_INSTALL_JAR creates a new definition of a JAR file in the local DB2® catalog or in a remote DB2 catalog.

To install a JAR file at a remote location, you need to execute a CONNECT statement to connect to that location before you call SQLJ.DB2_INSTALL_JAR.

SQLJ.DB2_INSTALL_JAR authorization

Privilege set: If the CALL statement is embedded in an application program, the privilege set consists of the privileges that are held by the authorization ID of the owner of the plan or package. If the statement is dynamically prepared, the privilege set consists of the privileges that are held by the authorization IDs of the process.

For calling SQLJ.DB2_INSTALL_JAR, the privilege set must include at least one of the following items:
  • EXECUTE privilege on SQLJ.DB2_INSTALL_JAR
  • Ownership of SQLJ.DB2_INSTALL_JAR
  • SYSADM authority
The privilege set must also include the authority to install a JAR, which consists of at least one of the following items:
  • CREATEIN privilege on the schema of the JAR

    The authorization ID that matches the schema name implicitly has the CREATEIN privilege on the schema.

  • SYSADM or SYSCTRL authority

SQLJ.DB2_INSTALL_JAR syntax

>>-CALL--SQLJ.DB2_INSTALL_JAR----------------------------------->

>--(--Jar-locator,--JAR-name,--deploy--)-----------------------><

SQLJ.DB2_INSTALL_JAR parameters

JAR-locator
A BLOB locator input parameter that points to the JAR file that is to be installed in the DB2 catalog.
JAR-name
A VARCHAR(257) input parameter that contains the DB2 name of the JAR, in the form schema.JAR-id or JAR-id. JAR-name is the name that you use when you refer to the JAR in SQL statements. If you omit schema, DB2 uses the SQL authorization ID that is in the CURRENT SCHEMA special register. The owner of the JAR is the authorization ID in the CURRENT SQLID special register.
deploy
An INTEGER input parameter that indicates whether additional actions are to be performed after the JAR file is installed. Additional actions are not supported, so this value is 0.

SQLJ.DB2_INSTALL_JAR example

Suppose that you want to install the JAR file that is in path /u/db2inst3/apps/BUILDPLAN/BUILDPLAN.jar. You want to refer to the JAR file as DB2INST3.BUILDPLAN in SQL statements. The following Java program installs that JAR file.

import java.sql.*; // JDBC classes
import java.io.IOException;
import java.io.File;
import java.io.FileInputStream;
class SimpleInstallJar
{
  public static void main (String argv[])
  {
    String url = "jdbc:db2://sysmvs1.stl.ibm.com:5021";
    String jarname = "DB2INST3.BUILDPLAN";
    String jarfile = 
      "/u/db2inst3/apps/BUILDPLAN/BUILDPLAN.jar";
    try
    {
      Class.forName ("com.ibm.db2.jcc.DB2Driver").newInstance ();
      Connection con = 
        DriverManager.getConnection(url, "MYID", "MYPW");
      File aFile = new File(jarfile);
      FileInputStream inputStream = new FileInputStream(aFile);
      CallableStatement stmt;
      String sql = "Call SQLJ.DB2_INSTALL_JAR(?, ?, ?)";
      stmt = con.prepareCall(sql);
      stmt.setBinaryStream(1, inputStream, (int)aFile.length());
      stmt.setString(2, jarname);
      stmt.setInt(3, 0);
      boolean isrs = stmt.execute();
      stmt.close();
      System.out.println("Installation of JAR succeeded");
      con.commit();
      con.close();
    }
    catch (Exception e)
    {
      System.out.println("Installation of JAR failed");
      e.printStackTrace ();
    }
  }
}