반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코로나
- reactnative
- Sentinel
- vue
- win32
- 당사자표시정정신청서
- Laravel
- 개인사업자
- Java
- 보정명령
- php
- Bootstrap
- 홈택스
- cartalyst
- 인민공원
- Python
- 전자소송
- elasticSearch
- 소액임금체불
- as후기
- Tutorial
- 이더리움
- 체당금
- Eclipse
- 사업자계좌
- 코로나19
- blockchain
- javascript
- auth
- Blade
Archives
- Today
- Total
그냥 사는 이야기
OSGi Bundle-NativeCode로 dll 로드하기 본문
반응형
OSGi Bundle-NativeCode로 dll 로드
System.LoadLibrary()를 사용하여 native code를 JNI로 연결하여 사용하려고 할 경우 OSGI 경우에서는 약간의 문제가 있다.
dll을 jvm에서 load 하여 사용할 경우 jvm이 restart 되지 않는 이상 dll을 unload 못시킨다고 한다.
구글링을 해보니 만약, unload 시키려고 할 경우는 편법적인 방법을 사용하여 unload 시키네 마네 하지만 보장할 수 있는 방법은 아닌것 같다.
OSGi는 번들을 동적으로 load/unload 하여 deploy 시킬 수 있는 플랫폼이다. 이런 OSGi의 dynamic 함이 jvm의 dll load와 같이 설치는 가능하나 삭제는 극히 힘든 타입의 방식을 만나면 어떻게 처리될까? 그것이 Bundle-NativeCode 이며, OSGi에서 제안한 방법이다.
Bundle-NativeCode: lib/test.dll; osname=Win32; processor=x86
이런 형태로 지정하여 놓고 dll을 System.LoadLibrary()을 하면 2가지 문제가 해결된다.
- 위의 번들을 re-deploy 해도 dll load가 된다. 번들을 uninstall 하고 난 후 실제로 jvm에서 dll이 unload 되었는지는 확인해볼 수 없지만 개발자 입장에선 dynamic 함이 가능하게 보인다.
- System.LoadLibrary()으로 load 함으로 system path에 등록된 경로를 뒤지는 코드는 집어 넣지 않아도 된다. 저렇게 lib 폴더 밑에 test.dll을 집어넣으면 System.LoadLibrary("test") 라고 하면 바로 된다.
^^하지만 과연 쉽게 쓸 수 있을까?
'Development > 개발언어' 카테고리의 다른 글
IBM HeapAnalyzer 사용 (0) | 2013.05.20 |
---|---|
Log4J - The content of element type "log4j:configuration" must match "(renderer*,appender*,(category|logger)*,root?,categoryFactory?)" (0) | 2013.01.25 |
define 매크로에서 # 사용하기 (0) | 2008.12.04 |
ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 (0) | 2008.09.09 |
java String에서 character set 문제 및 변환 (0) | 2008.08.21 |
Comments