2012-05-11 3 views
0

간단한 sleep 함수를 추가하여 기본 ESQL API를 확장하려고합니다.Message Broker 6.1 잠자기 예외

Java 구현 :

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

ESQL의 참조 :

(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

가 해결 :

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

이 오류 추적입니다! 나중에 참조 용 :

문제는 래퍼 유형을 원하는 메서드 서명 확인에있었습니다.
이 경우 long 대신 Long입니다.

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