2012-05-11 7 views
0

単純なsleep関数を追加して、基本ESQL APIを拡張しようとしています。メッセージブローカ6.1のスリープ例外

Java実装:

public static void sleep(long millis) { 
    try { 
     Thread.sleep(millis); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 

ESQL参照:

CREATE PROCEDURE sleep(IN millis INT) 
    LANGUAGE JAVA 
    EXTERNAL NAME "com.mypackage.Util.sleep"; 

これはエラートレースです:

解決
(0x01000000:Name ):RecoverableException = (
     (0x03000000:NameValue):File  = '/build/S610_P/src/DataFlowEngine/ImbRdl/ImbRdlExternalJava.cpp' (CHARACTER) 
     (0x03000000:NameValue):Line  = 1102 (INTEGER) 
     (0x03000000:NameValue):Function = 'ESQL2JavaMethodResolver::decodeReturnStatus' (CHARACTER) 
     (0x03000000:NameValue):Type  = '' (CHARACTER) 
     (0x03000000:NameValue):Name  = '' (CHARACTER) 
     (0x03000000:NameValue):Label = '' (CHARACTER) 
     (0x03000000:NameValue):Catalog = 'BIPv610' (CHARACTER) 
     (0x03000000:NameValue):Severity = 3 (INTEGER) 
     (0x03000000:NameValue):Number = 2946 (INTEGER) 
     (0x03000000:NameValue):Text  = 'The Java method could not be found' (CHARACTER) 
     (0x01000000:Name ):Insert = (
      (0x03000000:NameValue):Type = 5 (INTEGER) 
      (0x03000000:NameValue):Text = 'com.mypackage.Util.sleep' (CHARACTER) 
     ) 
    ) 
    ) 
) 
) 

答えて

0

!将来の参照用:

ラッパータイプが必要なメソッドシグネチャチェックに問題がありました。
この場合、longの代わりにLongとなります。

public static void sleep(Long millis) { 
    try { 
     Thread.sleep(millis); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
}