JNI 관련 질문입니다.
내꼬야
Java 클래스를 사용하는 dll을 만들었습니다.
대략 다음과 같은 코드로 JVM을 가져왔습니다.
CreateJavaVM_t *CreateJavaVM = (CreateJavaVM_t *)GetProcAddress(handle,JNI_CreateJavaVM); GetCreatedJavaVMs_t *GetCreatedJavaVMs = (GetCreatedJavaVMs_t *)GetProcAddress(handle, JNI_GetCreatedJavaVMs);
jsize no_vms;
jint ret;
ret = GetCreatedJavaVMs(&gJvm, 1, &no_vms);
if( 0 == ret && 0 == no_vms ) {
// JVM을 실행한다
ret = CreateJavaVM(&gJvm, (void**)&gEnv, &vm_args);
} else {
JavaVMAttachArgs thArgs;
ret = gJvm-AttachCurrentThread((void**) &gEnv, NULL);
};
일단 이 dll을 웹에서 사용할 때.. 한개만 사용할 때는 정상적으로 수행이 되었습니다.
object classid=CLSID:xxx1 id=yyy1 width=0 height=0 codebase=zzz1.cab#version=1,0,0,8/ object classid=CLSID:xxx2 id=yyy2 width=0 height=0 codebase=zzz2.cab#version=1,0,1,13/
그러나 위와 같이 썼을 때는... zzz1을 먼저 수행하면.. zzz2가 실행이 안되고 zzz2를 먼저 수행하면 zzz1이 실행이 되지 않습니다.
또 zzz1을 먼저 수행하고 zzz2를 수행하면 브라우저가 죽는 경우도 있습니다.
그냥 생각으로는 브라우저 하나에서 jvm을 두개를 사용하려고 해서 나는 것 같은데 정확한 이유를 모르겠네요 혹시 아시는 분 있으면 설명 부탁드립니다 ^^