2011-11-27 5 views
1

Java 용 시스템 정보 및보고 API 인 Hyperic (http://www.hyperic.com/products/sigar)의 Sigar API를 발견했습니다. 주로 JNI를 사용하여 데이터를 수집하고 독립형 버전에는 .SO 및 .DLL 파일이/lib 폴더에 있습니다.WAR 파일 내부에서 SIGAR API 사용

독립 실행 형 모드에서 제대로 작동하지만이 라이브러리를 WAR 내부에서 사용하고 싶습니다. 서버를 시작할 때 "-Djava.library.path"에 lib 경로를 지정하지 않고이 작업을 수행 할 수 있습니까? WAR 파일 안에이 파일을 묶어서 실행중인 서버에 배포 할 수 있기를 원합니다.

감사합니다.

+0

Nope; 그것이 JNI가 작동하는 방식입니다. DLL을 찾는 방법을 응용 프로그램에 알려주지 않으면 자체적으로 알아낼 수 없습니다. – duffymo

답변

1

다음과 같이 설정했습니다.

모든 컨텐츠 (SO/DLL) 파일을 WAR 파일의 lib 폴더에 복사했습니다. 그런 다음 JBoss에 배포했고 사용자 정의 시스템 속성 설정 없이도 작동했습니다.

이것은 JBoss에만 해당합니까? 또는 J2EE 호환 서버에서이 동작을 기대할 수 있습니까?

+0

당신은 분명히하시기 바랍니다 : 모든 .so 파일을 .war의 WEB-INF/lib에 넣었습니까? 감사합니다 – alfonx

+0

@alfonx 예. .so, .dll, .dylib 모두를 sigar JAR 파일과 함께 WEB-INF/lib에 복사했습니다. –

0

저는 호스트 정보에 액세스해야하는 독립형 Java 프로그램을 위해 Sigar에서 작업하고있었습니다. JNI 파일을로드 할 때 'java.library.path'변수를 사용해야했습니다. 이 경로는 Sigar API에서 내부적으로 lib를로드하는 데 사용됩니다. maven을 사용하여이 경로를 구성했습니다. 도움이된다면 here을 참조 할 수 있습니다.

감사합니다.