Ошибка -4304 при вызове хранимой процедуры Java в DB2 - PullRequest
0 голосов
/ 07 февраля 2012

Вот пример класса Java, который я написал

public class Sleeper  {

    public static void Sleep(int seconds){

        try {
            Thread.sleep(seconds * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } 
    }
}

, и я хочу назвать его хранимой процедурой следующим образом:

DROP PROCEDURE DEM.SLEEPUTIL@

-- echo "ETAPE 2 DE 3 > Suppression puis instllation du JAR";
CALL SQLJ.REMOVE_JAR('DEM.SLEEPER_JAR')@
CALL SQLJ.REFRESH_CLASSES()@
CALL SQLJ.INSTALL_JAR("file:///Sleeper.jar",'DEM.SLEEPER_JAR',0)@
CALL SQLJ.REFRESH_CLASSES()@

-- echo "ETAPE 2 DE 3 > CREATION DE LA PROCEDURE ";
CREATE PROCEDURE DEM.SLEEPUTIL (IN NUM INTEGER) 
  COMMIT ON RETURN NO 
  SPECIFIC SLEEPUTIL 
  DYNAMIC RESULT SETS 0 
  DETERMINISTIC 
  LANGUAGE JAVA 
  PARAMETER STYLE JAVA 
  NO DBINFO 
  FENCED 
  THREADSAFE 
  NO SQL 
  PROGRAM TYPE SUB
  EXTERNAL NAME 'DEM.SLEEPER_JAR:com.desj.visa.db.procedures.Sleeper!Sleep'

И я неоднократно получаю эту ошибку:

14:54:00  [CALL - 0 row(s), 0.032 secs]  [Error Code: -4304, SQL State: 42724]  DB2 SQL Error: SQLCODE=-4304, SQLSTATE=42724, SQLERRMC=DEM.SLEEPUTIL;SLEEPUTIL;/db2/db2d095/sqllib/function/jar/DEM/SLEEPER_J, DRIVER=4.3.85
CALL DEM.SLEEPUTIL(3);
... 1 statement(s) executed, 0 row(s) affected, exec/fetch time: 0.032/0.000 sec [0 successful, 0 warnings, 1 errors]

Что с этим не так?

1 Ответ

2 голосов
/ 08 февраля 2012

Я нашел.

Проблема была связана с версией Java, установленной на сервере.

На сервере установлена ​​Java 1.5, а развернутый код был скомпилирован в 1.6.

Итак, я перекомпилировал все в 1.5 и развернул.

Теперь все работает нормально, поэтому у вас, ребята, есть хороший пример того, как развернуть хранимую процедуру Java в DB2.

Приветствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...