2011-03-31 3 views
0

임베디드 장치 용 웹 인터페이스를 구축하려고하는데 네트워크 통계가 표시됩니다. Glassfish 3.1 Application Server를 사용하고 있으며 네트워크 트래픽을 수신하기 위해 jnetpcap을 사용하고 싶습니다. jnetpcap은 libpcap 네이티브 라이브러리에 의존합니다. Glassfish에서 네이티브 라이브러리를 사용하는 방법에 대한 오라클의 설명서를 찾으려고했지만 아직 찾고있는 것을 찾지 못했습니다 (잘못된 것을 찾고있을 수도 있습니다).Glassfish 3.1과 함께 기본 .so를 사용하는 방법

가에 의한

내 서블릿로드를 실패하면 : java.lang.NoClassDefFoundError가 : 나는 해석

가 의미하는 org.jnetpcap.Pcap 클래스 로더가 찾을 수있는, 클래스를 초기화 할 수 없습니다 클래스 (배포 할 때 라이브러리로 지정했지만)를로드 할 수 없습니다. 내 첫 번째 추측은 그것이 보안 정책 문제이거나 jvm이 libpcap.so를 찾을 수 없다는 것이 었습니다.

Configurations-> server-config-> jvm-settings를 사용하여 관리 콘솔 (예 : 웹 인터페이스)에서 system.library.path의 경로를 설정합니다. '경로 설정'탭에서 '/usr/bin/libpcap.so'경로를 기본 라이브러리 경로 접미사 필드에 입력합니다. Glassfish 서버를 다시 시작하면 다음 메시지가 표시됩니다.

[# | 2011-03-31T13 : 30 : 13.962 + 1100 | 경고 | glassfish3.1 | null | ... GlassFishConfigBean.com.sun.enterprise.config.serverbeans.JavaConfig}, 이유 = JavaConfig 속성 'NativeLibraryPathSuffix'가 'null'에서 '/usr/bin/libpcap.so'로 변경됨, when = 1301538613961 | #]

/lib64에 :/lib 디렉토리 :는/usr/lib 디렉토리 :/USR

하고 나중에 로그에 네이티브 라이브러리 경로는 경로 출력

에게 -Djava.library.path = ...는/usr/lib64에에서 변 /bin/libpcap.so

그래서 기본 라이브러리가 성공적으로로드되고 있다고 생각합니다. 네이티브 라이브러리가 실제로로드되었는지 확인할 수있는 방법이 있습니까?

저는 보안 관리자를 비활성화했습니다 (당분간 서블릿을 작동 시키려고 시도했지만, 제대로 작동하면 더 세밀한 보안 정책을 구현할 예정 임). 그리고 문제가 해결되지 않았습니다.

기본 라이브러리를 올바르게로드하려고합니까? 네이티브 라이브러리가로드되었는지 여부와 org.jnetpcap.Pcap 클래스를 초기화 할 수없는 이유에 대한 자세한 정보는 어떻게 찾을 수 있습니까?

감사합니다, 팀

답변

0

좋아는 해결했다.

문제점 jnetpcap은 libjcap.so가 아니라 libjnetpcap.so에 의존합니다. 내 실수.

JVM 경로 설정의 기본 라이브러리 경로 접미사 필드에 올바른 경로 (/ stuff/... /libjnetpcap-1.3.b4)를 추가하면 모든 시스템이 이동했습니다.

관련 문제