Background Image

FORUM

조회 수 1747 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
linux 64bit
CUBRID Ver.
CUBRID 9.3 (9.3.9.0002) (64bit release build for linux_gnu) (Aug  4 2017 11:55:22)
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
java

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------


아래 재연 절차와 같이 일반 JNI를 사용시 일반 java class를 loadjava하게되면 already loaded in another classloader의 에러메시지가 출력됩니다.
JNI 이슈인것처럼 보이는데요. 예측하기로는 java class를 로드할 때에 다른 load된 class에 영향이 없어야할 것 같은데요. 확인을 부탁드리겠습니다. 




=== 아래 재연절차 ===

1. JNI 모듈 컴파일 및 실행

 1.1 JniTest.java, JniTest.c 파일 참조하여 컴파일

   $ javac JniTest.java

   $ javah JniTest

   $ gcc -fPIC -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -shared -o libjnitest.so JniTest.c

 1.2 cubrid 함수생성

   $ csql -udba demodb

   csql> CREATE FUNCTION TESTJNI(INPUTDATA VARCHAR(1024))

           RETURN STRING

           AS LANGUAGE JAVA

           NAME 'JniTest.callJniTest2(java.lang.String) return java.lang.String';

  1.3 loadjava

   $ loadjava -y demodb JniTest.class

   $ export LD_LIBRARY_PATH=/home/test/Desktop/cubrid/CUBRID/lib:$LD_LIBRARY_PATH

  1.4 호출(정상)

   csql> select TESTJNI('aaaaa');



   === <Result of SELECT Command in Line 4> ===



     TESTJNI('aaaaa') 

   ======================

     'aaaaa' 



   1 rows selected. (0.069466 sec) Committed.



   1 command(s) successfully processed.




2. java class 모듈 컴파일 및 loadjava

  2.1 SpCubrid.java 컴파일 및 loadjava

   $ javac SpCubrid.java

   $ loadjava -y demodb SpCubrid.class

   



3. JNI 모듈 실행 -> 실패 (ERROR: Stored procedure execute error: java.lang.UnsatisfiedLinkError: Native Library /home/test/Desktop/cubrid/libjnitest.so already loaded in another classloader)



csql> select TESTJNI('aaaaa');



In line 4, column 17,



ERROR: Stored procedure execute error: java.lang.UnsatisfiedLinkError: Native Library /home/test/Desktop/cubrid/libjnitest.so already loaded in another classloader





0 command(s) successfully processed.

  • ?
    오명환 2019.08.20 13:10
    현재 loadjava 실행시 loadjava 위치에 있는 모든 class들이 jvm에 의해 재 loading 됩니다.
    이때, java code에서 system.load 또는 loadlibary에 의해 호출되었던 so file도 함께 재 loading되는데, 이때 so file는 중복 loading안되는 문제입니다.
    이 문제는 jvm이 unloading을 지원하지 않아 발생하는 잠정적인 오류입니다.

    이 문제를 우회할 수 있는 방법은 system.load시 exception이 발생했을 경우 system.gc() 후 다시 재 loading 하는 방법입니다.

    예제 코드는 다음과 같습니다.

    static {
    boolean error=false;

    try {
    System.load(".../libhello.so");
    } catch(UnsatisfiedLinkError e) {

    for (int i = 0; i < 5; i++) {
    System.gc();
    try {
    Thread.sleep(10);
    System.load(".../libhello.so");
    error = false;
    break;
    } catch(UnsatisfiedLinkError e1) {
    error = true;
    break;
    } catch(Exception e2) {
    error = true;
    System.err.println("exception : " + e2);
    break;
    }
    }
    if (error)
    System.err.println("error Load Library [ /cubrid/sp/libhello.so ]");
    }

    .........

    }

  1. No Image notice by admin 2024/04/23 by admin
    Views 37 

    CUBRID 사용자를 위한 DBeaver 도구 출시 안내

  2. SQLGate for CUBRID 영구 무료 라이선스 제공

  3. cubrid-jdbc를 사용하며, 메모리 leak과 관련하여 문의드립니다.

  4. 시점 복구 test 문서 연람 방법 문의

  5. like 공백 제거 검색방법 알려주세요.

  6. php 7.3 버전에도 설치가 가능한가요 ?

  7. 데이터 베이스 load 명령어 실행 중 Maximum value 오류

  8. java class load시 JNI모듈 에러

  9. group_concat null 질문

  10. 큐브리드 서버는 돌아가고있는데요 큐브리드 매니저 연결이안되는 이유가 무었일까요 ???

  11. 테이블 컬럼 구하는 쿼리좀.......

  12. 관리자 권한이 없을 때 실행이 안됩니다(실행 직후 종료)

  13. varchar의 글자수 제한 스펙 문의

  14. 검색 단위 설정 해제하는 방법 문의드립니다.

  15. No Image 29Aug
    by 몰라알수가없어
    2019/08/29 by 몰라알수가없어
    Views 699  Replies 1

    REST api 지원 여부

  16. 쿼리문의드립니다.

  17. charset 문의드립니다.

  18. No Image 02Sep
    by 민수킴
    2019/09/02 by 민수킴
    Views 293 

    Unable to register the CUBRID Service Tray. Retry? 메시지 팝업문제

  19. 파이썬 라이브러리 설치 질문드립니다.

  20. CUBRID SHARD 문제 질문드립니다.

  21. 큐브리드 매니저 관련 문의 드립니다.

  22. 큐브리드 함수에 관한 문의 드립니다.

Board Pagination Prev 1 ... 147 148 149 150 151 152 153 154 155 156 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales